gpt4 book ai didi

python - 两个字符串匹配的百分比是多少?

转载 作者:行者123 更新时间:2023-12-02 16:49:06 29 4
gpt4 key购买 nike

我有 2 列疾病名称,我必须尝试匹配最佳选项。我尝试在 python 中使用“SequenceMatcher”模块和“fuzzywuzzy”模块,结果令人惊讶。我将结果和我的疑问粘贴在下面:

假设有一种疾病“肝肿瘤”,我需要将其匹配到最匹配的名称“癌症,肝脏”或“癌症,乳腺癌”。现在很明显,由于 liver 是一个匹配词,它应该很容易将“cancer, liver”选为答案,但事实并非如此。我想知道在python中匹配的原因和更好的方法。

from difflib import SequenceMatcher

s1 = 'liver neoplasms'
s2 = 'cancer, liver'

SequenceMatcher(None, s1, s2).ratio()
# Answer = 0.3571

s2 = 'cancer, breast'
SequenceMatcher(None, s1, s2).ratio()
# Answer = 0.4137

# fuzzy.ratio also has the same results.

我的疑问是癌症,乳腺癌如何比癌症,肝脏更匹配。我可以使用哪种其他技术来正确完成此操作?

谢谢你:)

最佳答案

这些类型的匹配器没有语义理解。他们只是计算有多少个字符匹配。有些比其他的更复杂。

levenshtein 距离可能会有所帮助。参见 https://github.com/ztane/python-Levenshtein .

from difflib import SequenceMatcher from Levenshtein import distance

s1 = 'liver neoplasms' s2 = 'cancer, liver'

print('Sequence-matcher: ', SequenceMatcher(None, s1, s2).ratio())
# Answer = 0.35...

print('Levenshtein: ', distance(s1, s2))
# Answer = 13

s2 = 'cancer, breast'

print('Sequence-matcher: ', SequenceMatcher(None, s1, s2).ratio())
# Answer = 0.41...

print('Levenshtein: ', distance(s1, s2))
# Answer = 12

关于python - 两个字符串匹配的百分比是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59449856/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com