如何解决Fuzzy Wuzzy无法将String_List中的每个字符串与其他字符串进行比较
我希望使用模糊模糊比较列表中的所有字符串,但是看起来并不是每个字符串都在列表中进行了比较。这是我尝试过的:
matrix = [(x,) + i for item in output for x in item for i in process.extract(x,item,scorer=fuzz.partial_ratio)]
A.K.A
for item in output:
for x in item:
for i in process.extract(x,scorer=fuzz.partial_ratio):
这里是一项要与其他所有字符串进行相似性检查的字符串:
[['Java','JavaVersio','Control','GitTools','Sketch','IVision','Zepli','Go','GoAutomatedTesting','AutomatedTestingProjectManagement','AgileMethodology','ScrumEnglish','Writte','English','Spoke','EnglishMobile','ReactNative','Ionic','Android','Kotlin','ObjectiveC'],['HTML','HTMLJava','JavaJavaScript','JavaScript','React','Nodejsversio','GitManualQA',...
因此应该进行210个比较((k *(k-1)/ 2)),但是在这里您可以看到在索引105处正在比较下一项的开始:
matrix_df = pd.DataFrame(matrix,columns=["word","match","score"])
matrix_df[100:150]
word match score
100 ObjectiveC ObjectiveC 100
101 ObjectiveC ReactNative 57
102 ObjectiveC AutomatedTestingProjectManagement 45
103 ObjectiveC Ionic 40
104 ObjectiveC Sketch 38
105 HTML HTML 100
106 HTML HTMLJava 90
107 HTML Control 45
108 HTML GitManualQA 45
109 HTML PostgresqlManagementHosting 45
110 HTMLJava HTMLJava 100
111 HTMLJava HTML 90
112 HTMLJava JavaJavaScript 45
为什么会这样,我该如何解决?
谢谢!
解决方法
fuzzywuzzy中的函数process.extract
具有以下参数:
def extract(query,choices,processor=default_processor,scorer=default_scorer,limit=5):
这里限制由默认这意味着函数仅将与到5个最佳匹配内选择返回的列表(以下时选择不具有5种元素)设定为5。因此,要获取所有元素的分数,您应该传递参数limit=None
。
matrix = [
(x,) + i for item in output
for x in item
for i in process.extract(x,item,scorer=fuzz.partial_ratio,limit=None)
]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。