near-synonym, 中文反义词/近义词(antonym/synonym)工具包

2024-03-15 23:12

本文主要是介绍near-synonym, 中文反义词/近义词(antonym/synonym)工具包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

near-synonym

near-synonym, 中文反义词/近义词(antonym/synonym)工具包.

github:https://github.com/yongzhuo/near-synonym

一、安装

1.1 注意事项

默认不指定numpy版本(标准版numpy==1.20.4)
标准版本的依赖包详见 requirements-all.txt

1.2 通过PyPI安装

pip install near-synonym
使用镜像源, 如:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple near-synonym
不带依赖安装, 之后缺什么包再补充什么
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple near-synonym --no-dependencies

1.3 模型文件

  • github项目源码自带模型文件只有1w+词向量, 完整模型文件在near_synonym/near_synonym_model,
  • pip下载的软件包里边只有5w+词向量, 放在data目录下;
  • 完整的词向量详见huggingface网站的Macropodus/near_synonym_model,
  • 或完整的词向量详见百度网盘分享链接https://pan.baidu.com/s/1lDSCtpr0r2hKrGrK8ZLlFQ, 密码: ff0y;

二、使用方式

2.1 快速使用, 反义词, 近义词

import near_synonymword = "喜欢"
word_antonyms = near_synonym.antonyms(word)
word_synonyms = near_synonym.synonyms(word)
print("反义词:")
print(word_antonyms)
print("近义词:")
print(word_synonyms)
"""
反义词:
[('讨厌', 0.6954), ('不爱', 0.6714), ('偏爱', 0.6676), ('太爱', 0.6472), ('花心', 0.6421), ('在乎', 0.6395), ('好感', 0.6378), ('酷爱', 0.634)]
近义词:
[('最爱', 0.84), ('爱好', 0.8274), ('超爱', 0.8213), ('爱上', 0.8107), ('爱玩', 0.8039), ('狂爱', 0.798), ('大胆', 0.7852), ('喜欢上', 0.7826)]
请输入word:
"""

2.2 详细使用

import near_synonymword = "喜欢"
word_antonyms = near_synonym.antonyms(word, topk=8, annk=256, annk_cpu=128, batch_size=32,rate_ann=0.4, rate_sim=0.4, rate_len=0.2, rounded=4, is_debug=False)
print("反义词:")
print(word_antonyms)
# 当前版本速度很慢, 召回数量annk_cpu/annk可以调小

三、技术原理

3.1 技术详情

near-synonym, 中文反义词/近义词工具包.
流程: Word2vec -> ANN -> NLI -> Length# Word2vec, 词向量, 使用skip-ngram的词向量;
# ANN, 近邻搜索, 使用annoy检索召回;
# NLI, 自然语言推断, 使用Roformer-sim的v2版本, 区分反义词/近义词;
# Length, 惩罚项, 词语的文本长度惩罚;

3.2 TODO

1. 推理加速, 训练小的NLI模型, 替换掉笨重且不太合适的roformer-sim-ft;
2. 使用大模型构建更多的NLI语料;

四、对比

4.1 相似度比较

词语2016词林改进版知网hownetSynonymsnear-synonym
“轿车”,“汽车”0.821.00.730.86
“宝石”,“宝物”0.830.170.710.81
“旅游”,“游历”1.01.00.590.72
“男孩子”,“小伙子”0.811.00.880.83
“海岸”,“海滨”0.941.00.680.9
“庇护所”,“精神病院”0.960.580.640.62
“魔术师”,“巫师”0.850.580.660.78
“火炉”,“炉灶”1.01.00.810.83
“中午”,“正午”0.980.580.850.88
“食物”,“水果”0.350.140.740.82
“鸟”,“公鸡”0.641.00.670.72
“鸟”,“鹤”0.11.00.640.81
“工具”,“器械”0.531.00.620.75
“兄弟”,“和尚”0.370.800.590.7
“起重机”,“器械”0.530.350.610.65
注:2016词林改进版/知网hownet/Synonyms数据、分数来源于chatopera/Synonyms。同义词林及知网数据、分数的次级来源为liuhuanyong/SentenceSimilarity。

五、参考

  • https://ai.tencent.com/ailab/nlp/en/index.html
  • https://github.com/ZhuiyiTechnology/roformer-sim
  • https://github.com/liuhuanyong/SentenceSimilarity
  • https://github.com/yongzhuo/Macropodus
  • https://github.com/chatopera/Synonyms

Reference

For citing this work, you can refer to the present GitHub project. For example, with BibTeX:

@misc{Macropodus,howpublished = {https://github.com/yongzhuo/near-synonym},title = {near-synonym},author = {Yongzhuo Mo},publisher = {GitHub},year = {2024}
}

这篇关于near-synonym, 中文反义词/近义词(antonym/synonym)工具包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/813569

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

vscode中文乱码问题,注释,终端,调试乱码一劳永逸版

忘记咋回事突然出现了乱码问题,很多方法都试了,注释乱码解决了,终端又乱码,调试窗口也乱码,最后经过本人不懈努力,终于全部解决了,现在分享给大家我的方法。 乱码的原因是各个地方用的编码格式不统一,所以把他们设成统一的utf8. 1.电脑的编码格式 开始-设置-时间和语言-语言和区域 管理语言设置-更改系统区域设置-勾选Bata版:使用utf8-确定-然后按指示重启 2.vscode

解决Office Word不能切换中文输入

我们在使用WORD的时可能会经常碰到WORD中无法输入中文的情况。因为,虽然我们安装了搜狗输入法,但是到我们在WORD中使用搜狗的输入法的切换中英文的按键的时候会发现根本没有效果,无法将输入法切换成中文的。下面我就介绍一下如何在WORD中把搜狗输入法切换到中文。

sqlite不支持中文排序,采用java排序

方式一 不支持含有重复字段进行排序 /*** sqlite不支持中文排序,改用java排序* 根据指定的对象属性字段,排序对象集合,顺序* @param list* @param field* @return*/public static List sortListByField(List<?> list,String field){List temp = new ArrayList(

彻底解决win10系统Tomcat10控制台输出中文乱码

彻底解决Tomcat10控制台输出中文乱码 首先乱码问题的原因通俗的讲就是读的编码格式和写的解码格式不一致,比如最常见的两种中文编码UTF-8和GBK,UTF-8一个汉字占三个字节,GBK一个汉字占两个字节,所以当编码与解码格式不一致时,输出端当然无法识别这是啥,所以只能以乱码代替。 值得一提的是GBK不是国家标准编码,常用的国标有两,一个是GB2312,一个是GB18030 GB1

matplotlib中文乱码问题

在使用Matplotlib进行数据可视化的过程中,经常会遇到中文乱码的问题。显示乱码是由于编码问题导致的,而matplotlib 默认使用ASCII 编码,但是当使用pyplot时,是支持unicode编码的,只是默认字体是英文字体,导致中文无法正常显示,所以显示中文乱码。 文本使用系统默认字体、手动指定字体、使用字体管理器来解决。 一、系统默认字体(全局设置字体) 在Matplotlib中

Java实现Smartcn中文分词

新建一个Maven项目,修改pom.xml文件内容:注意版本的不同; <!-- https://mvnrepository.com/artifact/org.apache.lucene/lucene-analyzers-smartcn --><dependency><groupId>org.apache.lucene</groupId><artifactId>lucene-analyzers

C++利用jsoncpp库实现写入和读取json文件(含中文处理)

C++利用jsoncpp库实现写入和读取json文件 1 jsoncpp常用类1.1 Json::Value1.2 Json::Reader1.3 Json::Writer 2 json文件3 写json文件3.1 linux存储结果3.2 windows存储结果 3 读json文件4 读json字符串参考文章 在C++中使用跨平台的开源库JsonCpp,实现json的序列化和反序列

解决IntelliJ IDEA 使用 TOMCAT 中文乱码问题

运行tomcat时,控制台乱码 1)打开Run/Debug Configuration,选择你的tomcat 2)然后在 Server > VM options 设置为 -Dfile.encoding=UTF-8 ,重启tomcat

springboot项目编写发送异常日志到企微工具包

1.创建基础Bean public final class ThreadFactory implements java.util.concurrent.ThreadFactory {private static final AtomicInteger poolNumber = new AtomicInteger(1);private final ThreadGroup group;priva