方案一:利用预训练好的词向量模型
优点: (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. 调剂女人身材的十种食物
  2. IOS TableView的Cell高度自适应,UILabel自动换行适应
  3. 什么是bps (bits per second)?—Vecloud微云
  4. Javascript 学习笔记 2: 标识语句
  5. python白名单验证是什么意思_第10.5节 使用__all__定义Python模块导入白名单
  6. java分页中显示更多_早期更多失败– Java 8
  7. ZOJ2930 The Worst Schedule(最小割)
  8. android UI布局
  9. MongoDB+阿里云 最新数据库独家上线!
  10. spark代码连接hive_spark SQL学习(spark连接hive)
  11. mysql重新编译_重新编译mysqld_exporter0.10-阿里云开发者社区
  12. 8年架构师针对web前端小白,作出的职业规划建议
  13. sql 数据库检查_数据库检查点– SQL Server 2016中的增强功能
  14. linux异步io底层原理,异步IO简析
  15. 2019.11软考软件设计师归来心得体会及复习备考指南
  16. 如何清空redis中的数据
  17. scrum敏捷开发项目管理工具必备
  18. 如何在服务器上运行python,如何在网络服务器上运行Python脚本
  19. 小米手机计算机usb连接,小米5手机怎么连接电脑 USB调试方法教程
  20. 数据结构之SWUSTOJ1038: 顺序表中重复数据的删除

热门文章

  1. Java cms 孔浩老师 完整视频加源码 共131集 百度网盘永久链接 无需密码解压
  2. Linux最常用的20个命令
  3. 在 ArcView 3.3 中裁剪 DEM 数据
  4. python组态软件开源_freescada开源wpf组态软件
  5. 《Spring揭秘》学习部分总结
  6. c语言music算法,PROJECT:以music算法为基础的几种DOA算法的研究及性能分析
  7. svn汉化插件安装步骤
  8. U8服务器怎么修改会计制度,用友GRP-U8乡镇财政精细化管理新会计制度操作手册..doc...
  9. linux命令文本模式上网,Linux文本模式下上网简单命令
  10. Proteus8.10软件安装教程