短语间相似度得分

2024-04-18 05:20:41 发布

您现在位置:Python中文网/ 问答频道 /正文

Levenshtein距离是一种测量词与词之间差异的方法,而短语则不是。你知道吗

是否有一个很好的距离度量来衡量短语之间的差异?你知道吗

例如,如果短语1由n个单词x1x2xyun组成,短语2由m个单词y1y2yyum组成,我认为它们应该由单词模糊对齐,那么对齐的单词应该有一个关于它们有多相似的分数,对于不对齐的单词应该应用某种间隙惩罚。这些积极的分数和消极的分数应该以某种方式进行汇总。似乎有一些启发性的东西。你知道吗

有没有一个现有的解决方案来衡量短语之间的相似性?Python是首选,但其他解决方案也可以。谢谢。你知道吗


Tags: 方法距离度量方式差异解决方案单词分数
2条回答

看看FuzzyWuzzy

>>> from fuzzywuzzy import fuzz

>>> s1 = "this is a sentence used for testing"
>>> s2 = "while this is another sentence also used for testing"
>>> s3 = "I am a completely unrelated string"

>>> fuzz.partial_ratio(s1, s2)
80
>>> fuzz.partial_ratio(s1, s3)
52
>>> fuzz.partial_ratio(s2, s3)
43

它还包括解释无序令牌等的其他比较模式

你也可以用Levenshtein距离来衡量两个短语之间的相似性,把每个单词当作一个单独的元素。当您有大小不等的字符串时,您可以使用Smith-Waterman或Needleman-Wunsch算法。这些算法在生物信息学中得到了广泛的应用,其实现可以在biopython软件包中找到。 您还可以标记短语中的单词,并测量每个短语中每个标记的频率,这将产生每个短语的频率数组。从该数组中,可以使用任何向量距离(如欧氏距离或余弦相似性)来度量成对相似性。短语的标记化可以用nltk包完成,距离可以用scipy测量。 希望有帮助。你知道吗

相关问题 更多 >