如何解决Fuzzywuzzy python 是如何工作的——当句子之间没有匹配的词时?
我正在使用模糊模糊匹配来查找句子之间的相似性。
fuzz.token_set_ratio('用户尝试登录','接受标准')
它给了我 42 分。
有人能帮我理解当没有匹配的词时我们是如何得到 42 分的吗??
解决方法
算法步骤
Token_set_ratio 执行以下步骤:
- 拆分句子并删除重复项
- 创建三个列表
-
remainder1
= 只出现在第一句话中的词 -
remainder2
= 只出现在第二句中的词 -
intersection
= 两个句子中的单词
-
- 对三个列表中的单词进行排序并将元素连接成一个组合字符串
sorted_remainder1
sorted_remainder2
sorted_intersection
- 按以下方式连接字符串:
-
combined1
= -
combined2
=
-
- 计算以下相似度:
- fuzz.ratio(
sorted_intersection
,combined1
) - fuzz.ratio(
sorted_intersection
,combined2
) - fuzz.ratio(
combined1
,combined2
)
- fuzz.ratio(
- 返回最大相似度
示例
对于字符串 user attempts login
和 acceptance criteria
这会导致以下结果:
remainder1 = ['user','attempts','login']
remainder2 = ['acceptance','criteria']
intersection = []
sorted_remainder1 = 'attempts login user'
sorted_remainder2 = 'acceptance criteria'
combined1 = 'attempts login user'
combined2 = 'acceptance criteria'
fuzz.ratio(sorted_intersection,combined1) = 0
fuzz.ratio(sorted_intersection,combined2) = 0
fuzz.ratio(combined1,combined2) = 42
在您的特定情况下,这与 fuzz.token_sort_ratio
的结果类似,后者仅对两个句子中的单词进行排序并使用 fuzz.ratio
进行比较。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。