Synonyms——中文近义词工具【含源码解析与改进】
目标:
- 1. 使用Synonyms包解决NLP问题,落实到业务中;
- 2. 解析Synonyms源码,厘清原理
- 3. 结合个人理解,提出改进方案
背景:Synonyms 是一个中文近义词工具包,它可用于如文本对齐、推荐算法、相似度计算、语义偏移、关键字提取、概念提取、自动摘要、搜索引擎等很多自然语言理解(NLP)任务。
- Synonyms的码云地址:https://gitee.com/mirrors/Synonyms?_from=gitee_search(含具体用法)
- Synonyms的Github地址:https://github.com/huyingxi/Synonyms
一、Synonyms的使用
1. 安装
pip install -U synonyms
2. 测试
说明:其他用法,见官网。
二、Synonyms原理与源码解析
1. Synonyms原理
- A. 利用word2vec训练wikidata-corpus,得到一个词向量;训练方法原作者是提供了的,具体过程见https://github.com/chatopera/wikidata-corpus;
PS:如果觉得百科语料满足不了你的需求,可以自己准备个规模更大的语料集,进行训练,比如腾讯词向量。说到这里很多朋友或许知道,AINLP公众号里面不是也有一个同义词功能吗?那个的原理什么?这个留个坑位,下篇博客介绍。
- B. 利用改写的gensim.models.KeyedVectors.load_word2vec_format函数,当然有些其他的文件。作者改后的文件如下:
- C. 将词向量建成KD-Tree【API文档】,用于最近邻相似检索【同义词核心点】,代码其实就2~3行。此处先占个坑位,提供一篇个人博客,专门总结相似度检索的业内做法。
- D. 输入关键词keyword,转为词向量后,从KD-Tree中快速找到Top K的相似关键词索引与相似值【该值是建树时的一种距离计算方式】,最后再查表找到最终的相似关键词。如果想计算余弦相似度,逐一转为词向量计算一次就行。
2、源码解析
这部分主要目的:建立在跑通源码的基础上,谈下这个方法的亮点以及不足。
参考博客:
今天的文章Synonyms——中文近义词工具【含源码解析与改进】分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/64671.html