是否有任何内置函数在Python中执行像Ngram.Compare('text','text2')字符串比较.我不想安装N-gram模块.我尝试了所有的公共和私人函数dir('text')
我希望在比较两个字符串时获得百分比匹配.
小智 6
你想要通过实现的Levenshtein距离
http://pypi.python.org/pypi/python-Levenshtein/
不想安装东西意味着:你必须自己编写代码.
http://en.wikipedia.org/wiki/Levenshtein_distance
小智 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')
Run Code Online (Sandbox Code Playgroud)