synonmys 处理文本:词语句子相似度比较

最近本来在研究,想计算两个句子的相似度 。
偶然看到,感觉好强大啊,以后要多多学习!
:中文近义词工具包
可以用于自然语言理解的很多任务:文本对齐,推荐算法,相似度计算,语义偏移,关键字提取,概念提取,自动摘要,搜索引擎等 。
两个句子的相似度比较:
例子:
sen1 = "发生历史性变革"sen2 = "发生历史性变革"r = synonyms.compare(sen1, sen2, seg=True)
其中,参数 seg 表示 pare是否对sen1 和 sen2进行分词,默认为 True 。返回值:[0-1],并且越接近于1代表两个句子越相似 。
计算结果:

synonmys 处理文本:词语句子相似度比较

文章插图
旗帜引领方向 vs 道路决定命运: 0.429旗帜引领方向 vs 旗帜指引道路: 0.93发生历史性变革 vs 发生历史性变革: 1.0
中文分词:
例子:
import synonymssynonyms.seg("中文近义词工具包")
结果:
(['中文', '近义词', '工具包'], ['nz', 'n', 'n'])
分词结果由两个list组成的元组,分别是单词和对应的词性 。该分词不去停用词和标点 。
打印近义词:
例子:
>>> synonyms.display("飞机")'飞机'近义词:1. 架飞机:0.8373992. 客机:0.7646093. 直升机:0.7621164. 民航机:0.7505195. 航机:0.7501166. 起飞:0.7357367. 战机:0.7349758. 飞行中:0.7326499. 航空器:0.72394510. 运输机:0.720578
获得一个词语的向量:
例子:
>>> 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)
该向量为numpy的array,当该词语是未登录词时,抛出 异常 。
什么是未登录词??
获得一个分词后句子的向量:
.sv(, =False)
: 句子是分词后通过空格联合起来
【synonmys 处理文本:词语句子相似度比较】: 是否忽略OOV,False时,随机生成一个向量