Gil*_*Gil 3 text text-analysis python-2.7
我正在尝试使用以下方法获得最佳比赛的分数difflib.get_close_matches:
import difflib
best_match = difflib.get_close_matches(str,str_list,1)[0]
我知道添加' cutoff'参数的选项,但是在设置阈值后找不到如何获得实际分数。我想念什么吗?有没有更好的解决方案来匹配unicode字符串?
小智 6
我发现difflib.get_close_matches是匹配/模糊匹配字符串的最简单方法。但是,还有其他一些更高级的库,例如您在评论中提到的Fuzzywuzzy。
但是,如果要使用difflib,则可以使用difflib.SequenceMatcher来获得分数,如下所示:
import difflib
my_str = 'apple'
str_list = ['ape' , 'fjsdf', 'aerewtg', 'dgyow', 'paepd']
best_match = difflib.get_close_matches(my_str,str_list,1)[0]
score = difflib.SequenceMatcher(None, my_str, best_match).ratio()
在此示例中,“苹果”和列表之间的最佳匹配是“猿”,得分为0.75。
您还可以遍历列表并计算所有分数以进行检查:
for word in str_list:
    print "score for: " + my_str + " vs. " + word + " = " + str(difflib.SequenceMatcher(None, my_str, word).ratio())
对于此示例,您将获得以下内容:
score for: apple vs. ape = 0.75
score for: apple vs. fjsdf = 0.0
score for: apple vs. aerewtg = 0.333333333333
score for: apple vs. dgyow = 0.0
score for: apple vs. paepd = 0.4
difflib的文档可以在这里找到:https ://docs.python.org/2/library/difflib.html
| 归档时间: | 
 | 
| 查看次数: | 7190 次 | 
| 最近记录: |