2011-02-12 43 views
3

我想要得到的两个词的相似百分比,例如)蟒蛇搜索技术:单词类似

abcd versus zzabcdzz == 50% similarity 

不需要非常精确。有没有办法做到这一点?我正在使用python,但随时可以推荐其他语言。

+0

[Text difference algorithm](http://stackoverflow.com/questions/145607/text-difference-algorithm) – tzot

回答

6

尝试使用python-Levenshtein来计算edit distance

的的Levenshtein的Python C扩展模块含有用于

  • 的Levenshtein(编辑)的距离,和编辑操作
  • 字符串相似
  • 近似平均串快速计算,并且通常串平均
  • 功能
  • 字符串序列和集合相似度

通过计算两个字符串之间的编辑距离除以最长字符串的长度,可以大致了解相似度。在你的例子中,编辑距离是4,最大可能的编辑距离是8,所以相似度是50%。

3

你可以使用Python内置模块difflib

下面是该页面的例子

>>> s = SequenceMatcher(None, "abcd", "bcde") 
>>> s.ratio() 
0.75 
0

that答案复制:

在Python中,有difflib

difflib提供了SequenceMatcher类,它可以用来给你一个相似比。示例功能:

def text_compare(text1, text2, isjunk=None): 
    return difflib.SequenceMatcher(isjunk, text1, text2).ratio()