python - 查找两个字符串之间的匹配百分比,同时考虑单词的顺序 - Python

标签 python algorithm string-matching sequencematcher

我正在寻找一种方法来输出两个字符串(例如:名称)之间的匹配百分比,同时还考虑到它们可能相同但单词的顺序不同。 我尝试使用 SequenceMatcher() 但结果只是部分令人满意:

a = "john doe"
b = "jon doe"
c = "doe john"
d = "jon d"
e = 'john do'

s = SequenceMatcher(None, a, b)
s.ratio()
0.9333333333333333

s = SequenceMatcher(None, a, c)
s.ratio()
0.5

s = SequenceMatcher(None, a, d)
s.ratio()
0.7692307692307693

s = SequenceMatcher(None, a, e)
s.ratio()
0.9333333333333333

除了第二个结果,我对所有结果都满意。我注意到它没有考虑到 c 包含与 a 相同但顺序不同的 a

在我上面提到的情况下,有没有其他方法可以匹配字符串并获得更高的匹配率。还应考虑到名称可能包含两个以上的词。

谢谢!

最佳答案

这取决于您对增强匹配的期望。如果您认为第二个应该是 1.0,那么很简单:将字符串拆分为单词,对单词进行排序,然后应用 SM (SequenceMatcher)。如果您想要对排序进行匹配惩罚,您可以使用任何转换函数来测量两个单词列表之间的距离,并将其用作最终匹配的一个因素。

这对您有帮助吗?

关于python - 查找两个字符串之间的匹配百分比,同时考虑单词的顺序 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53089135/

相关文章:

python - 如何配置 JupyterHub 以显示与 Jupyter 相同的笔记本类型?

javascript - 当我有 2 个 jquery 库时,文档就绪无法工作

algorithm - KMP模式查找算法

string - 如何检查Lua中的字符串中是否找到匹配的文本?

algorithm - 相同长度字符串的最佳字符串匹配算法?

python - 导入类问题

python - Odoo - 自定义模块卸载时出现内部服务器错误

python - simplejson - 编码 regexp\d+

c - 无法编写合并排序代码

java - 尝试使用 LinkedList 解决前 K 个频繁出现的元素