方案一:利用预训练好的词向量模型
优点: (1)能把词进行语义上的向量化(2)能得到词与词的相似度

缺点: (1)词向量的效果和语料库的大小和质量有较大的关系(2)用most_similar() 得到往往不是“同义词”,而是“共现词”

方案二:同义词近义词库
比较经典的是哈工大社会计算与信息检索研究中心同义词词林扩展版

把词条按照树状的层次结果组织到一起,并区分了同义词和近义词,例如:

from gensim.models.keyedvectors import KeyedVectorswv = KeyedVectors.load_word2vec_format('model/w2v_chisim_300d.bin', binary=True)
print "wv.vector_size:", wv.vector_size  # 300
print "len(wv.vocab):", len(wv.vocab)  # 414638def get_similar_words(kw):if kw in wv.vocab:print kw, "/".join([word for word, sim in wv.most_similar(kw, topn=10)])# for word, sim in wv.most_similar(kw):  # most_similar()的默认topn=10#     print word, sim  # 相似词、相似度if __name__ == '__main__':kws = [u"群众", u"男人", u"女人", u"国王", u"皇后"]for kw in kws:get_similar_words(kw)"""
wv.vector_size: 300
len(wv.vocab): 414638
群众 广大群众/百姓/职工群众/村民/老百姓/干部群众/农民/党员干部/困难群众/居民
男人 女人/女孩子/伴侣/女性/你/异性/男性/闺蜜/她们/花心
女人 男人/女孩子/女性/她们/你/花心/闺蜜/伴侣/异性/男性
国王 五世/王后/四世/君主/七世/六世/教皇/伊莉莎白/二世/路易十四
皇后 娘娘/公主/妃子/皇太后/皇帝/日本天皇/武则天/董鄂氏/太后/那拉氏
"""

为了和上面词向量的结果进行对比,这里贴出了词林的结果:

Aa01B02= 群众 大众 公众 民众 万众 众生 千夫
Ab01A01= 男人 男子 男子汉 男儿 汉子 汉 士 丈夫 官人 男人家 光身汉 须眉 壮汉 男士
Ab01B01= 女人 女子 女性 女士 女儿 女 娘 妇 妇女 妇道 妇人 女人家 小娘子 女郎 巾帼 半边天 娘子军 石女 红装 家庭妇女 农妇 才女
Af05A01= 皇帝 帝 王 上 君 天子 天皇 帝王 君王 国王 国君 君主 当今 皇上 圣上 陛下 主公 九五 九五之尊 可汗 单于 大帝 沙皇 天骄 天王 五帝 太岁 王者 至尊 统治者
Af05B02= 皇后 王后 娘娘

1. 数据下载
哈工大同义词词林扩展版官网:https://www.ltp-cloud.com/download/#down_cilin

我在linux下打开文件出现乱码,需要用iconv命令进行转码(参考本人前面的文章Linux下打开windows中文文本乱码问题)

如果文件中因存在不能识别的字符导致转码失败,用gedit打开并把那一行的非法字符删除就可以了。原有17817行,转码之后我保留了17815行。

(本来想贴到这里来的,但因为包含了gongchandang, jiangzemin, dalai, qietingqi等等,博客园会报错“Post operation failed. The error message related to this problem was as follows: 博文中含有违规内容: xxx!”......)

2. 数据处理和应用
在哈工大的同义词词林中,由于它给词分了类别,同一个词在不同的类别下可能会有不同的同义词,例如“男人”的同义词有:
Ab01A01= 男人 男子 男子汉 男儿 汉子 汉 士 丈夫 官人 男人家 光身汉 须眉 壮汉 男士
Ah08A01= 夫 丈夫 爱人 男人 先生 女婿 老公 汉子 当家的 人夫 那口子

为方便后续的应用,这里把这两行的词都合并到“男人”的同义词列表中,并在词后面加上type(=或者#),方便区分同义词与近义词,生成字典{词type: 同义词列表},例如:
{"毛乎乎=": ["糙", "毛糙", "麻", "毛", "粗糙"], "车次#": ["等次", "名次", "班次", "航次", "场次"]}

代码如下:

def get_kw2similar_words(fin, fout):kw2similar_words = defaultdict(set)  # 去重with codecs.open(fin, "r", "utf-8") as fr:for idx, line in enumerate(fr):try:row = line.strip().split(" ")if row[0][-1] == u"@": continuefor kw in row[1:]:row.remove(kw)kw_and_type = kw + row[0][-1]kw2similar_words[kw_and_type].update(row[1:])row.insert(-1, kw)except Exception as error:print "Error line", idx, line, errorif idx % 1000 == 0: print idxfor kw, similar_words in kw2similar_words.iteritems():kw2similar_words[kw] = list(similar_words)  # kw2similar_words = defaultdict(list)json.dump(kw2similar_words, open(fout, "w"), ensure_ascii=False)get_kw2similar_words(fin="data/cilin.txt", fout="data/kw2similar_words.json")测试:
if __name__ == '__main__':kw2similar_words = json.load(open("data/kw2similar_words.json", "r"))keys_set = set(kw2similar_words.keys())kws = [u"群众", u"男人", u"女人", u"国王", u"皇后"]for kw in kws:for kw_and_type in [kw + u"=", kw + u"#"]:if kw_and_type in keys_set:print kw_and_type, "/".join(kw2similar_words[kw_and_type])"""
群众= 大众/万众/民众/公众/众生/千夫
男人= 男人家/爱人/女婿/先生/壮汉/汉/汉子/士/人夫/男士/老公/那口子/官人/丈夫/男子汉/男子/男儿/当家的/光身汉/须眉/夫
女人= 妇道/太太/妇/老婆/娘/娘子/女人家/红装/妻子/女儿/媳妇儿/老婆子/内/家/婆姨/妻/女性/巾帼/婆娘/家庭妇女/娘儿们/女子/小娘子/妻妾/老小/娘子军/农妇/女郎/才女/妻室/妇女/半边天/内助/贤内助/石女/爱妻/爱人/家里/妇人/女士/女/老伴/夫人
国王= 可汗/王/上/沙皇/至尊/君王/君/帝/帝王/主公/圣上/五帝/君主/大帝/国君/天王/单于/统治者/天骄/天皇/九五/九五之尊/皇帝/陛下/皇上/王者/天子/当今/太岁
皇后= 娘娘/王后
"""

3. 中文同义词近义词的其它在线词典
词林在线词典 http://www.cilin.org/

同义词库 http://chinese.abcthesaurus.com/

汉典 http://www.zdic.net/

中文同义词近义词库 vs 词向量相关推荐

  1. Python synonyms查找中文任意词汇的同义词近义词

    Python synonyms查找中文任意词汇的同义词近义词 作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!

  2. 同义词/近义词 API数据接口

    同义词/近义词 计费模式 免费额度 点数单价 每日限制 会员免费 100次 免费 1000次 更新时间:2022-07-11 03:01:49接口状态:正常 根据词查询近义词 请求地址 HTTPGET ...

  3. 搜狗输入法词库php词库怎么用,中州韵输入法导入搜狗词库(示例代码)

    rime是一个非常优秀的输入法,linux平台下的反应速度远超搜狗,也没有隐私风险.2012年开始接触它,到后来抛弃了它,因为rime自带的词库真的太弱了,也懒得折腾.最近发现一个词库转换软件叫ime ...

  4. python_根据词库进行“词联想”

    输入法中,当你输入一个字的时候,输入法就能猜出你要输入什么词.这就是词联想.现在,再python中简单实现类似这样的功能:根据制定好的词库,输入一个新的词,帮助实现词联想.其中分词用了jieba包. ...

  5. 搜狗输入法词库php词库怎么用,搜狗输入法添加词库方法说明,打字更方便

    搜狗输入法添加词库方法说明,打字更方便 2020-04-04 无论是电脑端还是手机端,搜狗输入端都是一款深受大众欢迎的打字软件,它提供了词库管理功能,用户可以随时添加词库,便于更好完成输入.搜狗输入法 ...

  6. 欧路词典如何导入html,欧路词典怎么添加词库 管理词库的方法介绍

    欧路词典电脑版的翻译功能深得广大英语学习用户的喜爱,很多用户在使用过程中不知道怎么添加词库,那么小编我今天就来为大家讲讲,赶快来看看下面的文章吧! 操作步骤如下: 1.首先需要进入欧路词典并进行登录, ...

  7. Html词库搜索,词库网关键词采集

    本文介绍使用八爪鱼采集词库网内长尾关键词的方法.长尾关键词挖掘对于站长来说是非常重要的一项技能,  长尾理论中的尾巴作用是不能忽视的.在搜索引擎营销中运用长尾理论来制定关键词策略是十分有效的. 虽然核 ...

  8. ElasticSearch7.x IK 动态同义词/近义词动态加载同义词/近义词 dynamic_synonym

    一.下载elasticsearch-analysis-dynamic-synonym 同义词插件 本人当前执行安装的是7.6.2.7.x安装方式都是一样的 github官方下载地址 如果官方地址无法打 ...

  9. 同义词/近义词查询易语言代码

    .版本 2 .子程序 __启动窗口_创建完毕 '添加并使用<精易模块> Send_API () .子程序 Send_API .局部变量 REQU_Data, 文本型, , , 提交字符串 ...

  10. 信息抽取Python算法总结:词库匹配,词向量,TFIDF,机器学习,深度学习(持续更)

    信息提取(Information Extraction) 把文本里包含的信息进行结构化处理,变成表格一样的组织形式. 本文的信息抽取主要是[关键词.主题.词组]抽取. 文章目录 1.纯规则 1.1.词 ...

最新文章

  1. 提交表单自动刷新_Web自动化测试:元素的基础操作和浏览器基础操作
  2. 【FFmpeg】ffmpeg工具源码分析(四):filter(过滤器、滤镜)详解
  3. eureka java_spring cloud 入门系列二:使用Eureka 进行服务治理
  4. 【IdentityServer4文档】- 欢迎来到 IdentityServer4
  5. JavaScript更改class和id的方法
  6. apk,task,进程区别
  7. (转)oracle审计详解
  8. Visualizing and Understanding Convolutional Networks论文解读
  9. ios7禁止屏幕旋转,强制竖屏
  10. 先决条件(一)问题定义和需求分析
  11. MOOC武汉大学SAS第2章作业
  12. Windows系统不用工具软件查看U盘VID和PID的方法
  13. 多线程模式下保证事物的一致性
  14. 移动安全--22--Android应用安全防护技术
  15. PS制作三原色叠加效果教程
  16. 支付宝免签,个人支付宝,自动转账,自动提现到银行卡,自动银行卡转账
  17. 『深度应用』人脸识别最新进展及发展方向
  18. PS特效动作制作合成创意报纸人物效果
  19. 盘点开源之经典开源Windows工具集
  20. 学校计算机ip设置路由器,如何设置计算机的固定IP地址和路由器?

热门文章

  1. 2019年全国程序员统一考试,现在开始!
  2. YDOOK:STM32: 最新版选型手册下载 2021
  3. 爱情的短命是众所周知的
  4. truetype字体怎么转换成普通字体_win10肿么安装truetype字体
  5. 2018数学建模A题优秀论文:高温作业专用服装设计
  6. 擅长C(DAY 70)
  7. 关于arcview 3.2 中输出图形添加坐标网格(Graticules and Measured Grids)时直接退出的问题...
  8. PC端后台管理系统实现
  9. Arcgis之国土报备(征地Xls)Xls格式批量转shp格式工具
  10. window eclipse快速导入svn项目以及软件汉化