首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >2句语义相似度的度量

2句语义相似度的度量
EN

Stack Overflow用户
提问于 2015-03-15 16:29:12
回答 1查看 7K关注 0票数 3

我需要测量两个句子之间的相似性。例如:

代码语言:javascript
运行
复制
s1 = "she is good a dog "
s2 = "she is nice a heel"

我需要证明"good""nice"相似。对于名词和动词,路径相似性的度量就像这个伪代码一样:

代码语言:javascript
运行
复制
def get max :
for loop
(wn.synset ('dog ')).path_similarity(wn.synset ('animal'))

结果:.33是一个很高的值,然后这些词是相关的,我可以说它是相似的。但副词("nice""good")的.09值很低!

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-03-15 16:46:25

您可以找到所有path_similaritysynsets of good,然后选择max:

代码语言:javascript
运行
复制
>>> from nltk.corpus import wordnet as wn
>>> n=wn.synsets('nice')
>>> g=wn.synsets('good')
>>> [i.path_similarity(n[0]) for i in g]
[0.0625, 0.06666666666666667, 0.07142857142857142, 0.09090909090909091, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None]

>>> max(i.path_similarity(n[0]) for i in g)
0.09090909090909091

请注意,单词的synsets包含许多形式的单词,如动词、无、adj、.所以你需要选择合适的一个!

此外,作为另一种选择,您可以使用wup_similarity

代码语言:javascript
运行
复制
>>> round(max(i.wup_similarity(n[0]) for i in g), 1)
0.4

Wu-Palmer相似性:返回一个分数,表示两个词的词义是多么相似,基于两个词义在分类学中的深度和它们最不常见的次盛器(最特定的祖先节点)的深度。

阅读有关同步集http://www.nltk.org/howto/wordnet.html的更多信息

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29063118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档