擅长:python、mysql、java
<p>有很多方法可以做到这一点。这个解决了你所有的例子。我添加了一个最小相似性过滤器,只返回高质量的匹配。这就是允许在最后一个示例中删除“ly”的原因,因为它并不完全关闭任何单词</p>
<p><a href="https://rawgit.com/ztane/python-Levenshtein/master/docs/Levenshtein.html" rel="nofollow noreferrer">Documentation</a></p>
<p>您可以使用<code>pip install python-Levenshtein</code>安装levenshtein</p>
<pre><code>import Levenshtein
def find_match(str1,str2):
min_similarity = .75
output = []
results = [[Levenshtein.jaro_winkler(x,y) for x in str1.split()] for y in str2.split()]
for x in results:
if max(x) >= min_similarity:
output.append(str1.split()[x.index(max(x))])
return output
</code></pre>
<p>你提议的每个样品</p>
<pre><code>find_match("is looking good", "looks goo")
['looking','good']
find_match("you are really looking good", "lok goo")
['looking','good']
find_match("Stu is actually SEVERLY sunburnt....it hurts!!!", "hurts!!")
['hurts!!!']
find_match("you guys were absolutely amazing tonight, a...", "ly amazin")
['amazing']
</code></pre>