用于字符串比较的内置Python函数,如N-gram

时间:2013-02-09 06:37:31

标签: python

Python中是否有任何内置函数执行类似Ngram.Compare('text','text2')字符串比较。我不想安装N-gram模块。我尝试了所有公共和私有函数{{1 }}

我希望在比较两个字符串时获得一个百分比匹配。

2 个答案:

答案 0 :(得分:6)

你想要通过

实现的Levenshtein距离

http://pypi.python.org/pypi/python-Levenshtein/

不想安装某些东西意味着:你必须自己编写代码。

http://en.wikipedia.org/wiki/Levenshtein_distance

答案 1 :(得分:5)

difflib在标准库中。

你也可以做Levenshtein距离:

def lev(seq1, seq2):
    oneago = None
    thisrow = range(1, len(seq2) + 1) + [0]
    for x in xrange(len(seq1)):
        twoago, oneago, thisrow = oneago, thisrow, [0] * len(seq2) + [x + 1]
        for y in xrange(len(seq2)):
            delcost = oneago[y] + 1
            addcost = thisrow[y - 1] + 1
            subcost = oneago[y - 1] + (seq1[x] != seq2[y])
            thisrow[y] = min(delcost, addcost, subcost)
    return thisrow[len(seq2) - 1]

def di(seq1,seq2):
    return float(lev(seq1,seq2))/min(len(seq1),len(seq2))

print lev('spa','spam')
print di('spa','spam')