当前位置: 首页 > 工具软件 > Synonyms > 使用案例 >

Synonyms 中文近义词工具包 -- 支持文本对齐,推荐算法,相似度计算,语义偏移,关键字提取,概念提取,自动摘要,搜索引擎等

凌宏大
2023-12-01

GitHub - chatopera/Synonyms: 中文近义词:聊天机器人,智能问答工具包

Synonyms

Chinese Synonyms for Natural Language Processing and Understanding.

更好的中文近义词:聊天机器人、智能问答工具包。

synonyms可以用于自然语言理解的很多任务:文本对齐,推荐算法,相似度计算,语义偏移,关键字提取,概念提取,自动摘要,搜索引擎等。

Table of Content:

Welcome

pip install -U synonyms
python -c "import synonyms" # download word vectors file

兼容 py2 和 py3,当前稳定版本 v3.x

提示:安装后初次使用会下载词向量文件,下载速度取决于网络情况。

#118 词向量文件一直下载不下来?可尝试按下述方法设置国内的词向量备份地址:

export SYNONYMS_WORD2VEC_BIN_URL_ZH_CN=https://gitee.com/chatopera/cskefu/attach_files/610602/download/words.vector.gz
pip install -U synonyms
python -c "import synonyms" # download word vectors file

其它环境变量介绍见下文,Windows cmd 使用 set SYNONYMS_WORD2VEC_BIN_URL_ZH_CN 设置环境变量

本文档的配置和接口说明面向 python 工具包。

Usage

支持使用环境变量配置分词词表和 word2vec 词向量文件。

环境变量描述
SYNONYMS_WORD2VEC_BIN_MODEL_ZH_CN使用 word2vec 训练的词向量文件,二进制格式。
SYNONYMS_WORDSEG_DICT中文分词主字典,格式和使用参考

synonyms#nearby(word [, size = 10])

import synonyms
print("人脸: ", synonyms.nearby("人脸"))
print("识别: ", synonyms.nearby("识别"))
print("NOT_EXIST: ", synonyms.nearby("NOT_EXIST"))

synonyms.nearby(WORD [,SIZE])返回一个元组,元组中包含两项:([nearby_words], [nearby_words_score])nearby_words是 WORD 的近义词们,也以 list 的方式存储,并且按照距离的长度由近及远排列,nearby_words_scorenearby_words对应位置的词的距离的分数,分数在(0-1)区间内,越接近于 1,代表越相近;SIZE 是返回词汇数量,默认 10。比如:

synonyms.nearby(人脸, 10) = (
    ["图片", "图像", "通过观察", "数字图像", "几何图形", "脸部", "图象", "放大镜", "面孔", "Mii"],
    [0.597284, 0.580373, 0.568486, 0.535674, 0.531835, 0.530
095, 0.525344, 0.524009, 0.523101, 0.516046])

在 OOV 的情况下,返回 ([], []),目前的字典大小: 435,729。

synonyms#compare(sen1, sen2 [, seg=True])

两个句子的相似度比较

sen1 = "发生历史性变革"
    sen2 = "发生历史性变革"
    r = synonyms.compare(sen1, sen2, seg=True)

其中,参数 seg 表示 synonyms.compare 是否对 sen1 和 sen2 进行分词,默认为 True。返回值:[0-1],并且越接近于 1 代表两个句子越相似。

旗帜引领方向 vs 道路决定命运: 0.429
旗帜引领方向 vs 旗帜指引道路: 0.93
发生历史性变革 vs 发生历史性变革: 1.0

synonyms#display(word [, size = 10])

以友好的方式打印近义词,方便调试,display(WORD [, SIZE])调用了 synonyms#nearby 方法。

>>> synonyms.display("飞机")
'飞机'近义词:
  1. 飞机:1.0
  2. 直升机:0.8423391
  3. 客机:0.8393003
  4. 滑翔机:0.7872388
  5. 军用飞机:0.7832081
  6. 水上飞机:0.77857226
  7. 运输机:0.7724742
  8. 航机:0.7664748
  9. 航空器:0.76592904
  10. 民航机:0.74209654

SIZE 是打印词汇表的数量,默认 10。

synonyms#v(word)

获得一个词语的向量,该向量为 numpy 的 array,当该词语是未登录词时,抛出 KeyError 异常。

>>> synonyms.v("飞机")
array([-2.412167  ,  2.2628384 , -7.0214124 ,  3.9381874 ,  0.8219283 ,
       -3.2809453 ,  3.8747153 , -5.217062  , -2.2786229 , -1.2572327 ],
      dtype=float32)

synonyms#sv(sentence, ignore=False)

获得一个分词后句子的向量,向量以 BoW 方式组成

sentence: 句子是分词后通过空格联合起来
    ignore: 是否忽略OOV,False时,随机生成一个向量

synonyms#seg(sentence)

中文分词

synonyms.seg("中文近义词工具包")

分词结果,由两个 list 组成的元组,分别是单词和对应的词性。

(['中文', '近义词', '工具包'], ['nz', 'n', 'n'])

该分词不去停用词和标点。

synonyms#keywords(sentence [, topK=5, withWeight=False])

提取关键词,默认按照重要程度提取关键词。

keywords = synonyms.keywords("9月15日以来,台积电、高通、三星等华为的重要合作伙伴,只要没有美国的相关许可证,都无法供应芯片给华为,而中芯国际等国产芯片企业,也因采用美国技术,而无法供货给华为。目前华为部分型号的手机产品出现货少的现象,若该形势持续下去,华为手机业务将遭受重创。")

 类似资料: