Skip to main content

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

Project description

near-synonym

near-synonym, 中文反义词/近义词/同义词(antonym/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 模型文件

二、使用方式

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

import near_synonym





word = "喜欢"


word_antonyms = near_synonym.antonyms(word)


word_synonyms = near_synonym.synonyms(word)


print("反义词:")


print(word_antonyms)


print("近义词:")


print(word_synonyms)


"""


反义词:


[('讨厌', 0.6857), ('厌恶', 0.5406), ('憎恶', 0.485), ('不喜欢', 0.4079), ('冷漠', 0.4051)]


近义词:


[('喜爱', 0.8813), ('爱好', 0.8193), ('感兴趣', 0.7399), ('赞赏', 0.6849), ('倾向', 0.6137)]


"""

2.2 详细使用

import near_synonym





word = "喜欢"


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;【20240320已完成ERNIE-SIM,但转为ONNX为340M太大, 考虑浅层网络, 转第四点4.】


2. 使用大模型构建更多的NLI语料;


3. 使用大模型直接生成近义词, 同义词表, 用于前置索引+训练相似度;【20240407已完成】


4. 近义词反义词识别考虑使用经典NLP分类模型, text_cnn/text-rcnn, 基于字向量;【do-ing, 仿transformers写config/tokenizer/model, 方便余预训练模型集成】


5. word2vec召回不太行, 考虑直接使用大模型qwen1.5-0.5b生成;


3.3 其他实验



fail, 使用情感识别, 取得不同情感下的词语(失败, 例如可爱/漂亮同为积极情感);


fail, 使用NLI自然推理, 已有的语料是句子, 不是太适配;


四、对比

4.1 相似度比较

| 词语 | 2016词林改进版 | 知网hownet | Synonyms | near-synonym |

|--------------|-----------------|---------------|-----------------| ----------------- |

| "轿车","汽车" | 0.82 | 1.0 | 0.73 | 0.86 |

| "宝石","宝物" | 0.83 | 0.17 | 0.71 | 0.81 |

| "旅游","游历" | 1.0 | 1.0 | 0.59 | 0.72 |

| "男孩子","小伙子" | 0.81 | 1.0 | 0.88 | 0.83 |

| "海岸","海滨" | 0.94 | 1.0 | 0.68 | 0.9 |

| "庇护所","精神病院" | 0.96 | 0.58 | 0.64 | 0.62 |

| "魔术师","巫师" | 0.85 | 0.58 | 0.66 | 0.78 |

| "火炉","炉灶" | 1.0 | 1.0 | 0.81 | 0.83 |

| "中午","正午" | 0.98 | 0.58 | 0.85 | 0.88 |

| "食物","水果" | 0.35 | 0.14 | 0.74 | 0.82 |

| "鸟","公鸡" | 0.64 | 1.0 | 0.67 | 0.72 |

| "鸟","鹤" | 0.1 | 1.0 | 0.64 | 0.81 |

| "工具","器械" | 0.53 | 1.0 | 0.62 | 0.75 |

| "兄弟","和尚" | 0.37 | 0.80 | 0.59 | 0.7 |

| "起重机","器械" | 0.53 | 0.35 | 0.61 | 0.65 |

注:2016词林改进版/知网hownet/Synonyms数据、分数来源于chatopera/Synonyms。同义词林及知网数据、分数的次级来源为liuhuanyong/SentenceSimilarity

五、参考

六、日历



2024.04.07, qwen-7b-chat模型构建28w+词典的近义词/反义词表, 即ci_atmnonym_synonym.json, v0.1.0版本;


2024.03.14, 初始化near-synonym, v0.0.3版本;


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}


}


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

near_synonym-0.1.0-py2.py3-none-any.whl (57.6 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file near_synonym-0.1.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for near_synonym-0.1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 19ba3dcaf85b28cf4d3b6279f707ee7090262e10a4f70325bab7c6e8458eb151
MD5 94b7fad9f71b7388c32a122a3bf134d2
BLAKE2b-256 22feee1badc733dc00b22c2bf180b015d2d08909f01683805036066cb82e490a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page