如何在 Python 中比较两个字符串(英语除外)之间的相似性
Posted
技术标签:
【中文标题】如何在 Python 中比较两个字符串(英语除外)之间的相似性【英文标题】:How to compare similarity between two strings (other than English language) in Python 【发布时间】:2021-11-21 09:48:17 【问题描述】:我想找出两个字符串之间的相似性 示例
string1 = "One"
string2 = "one"
我希望答案在 0 和 1 之间。对于上述两个字符串,我们得到 1。 现在我正在使用“Jellyfish”,这是 python 中的一个模块,它具有 jaro_distance() 函数。 但缺点是我只能比较两个只包含英文单词和其他特殊字符的字符串。但我想比较其他语言的两个字符串,比如旁遮普语
string1 = "ਬੁੱਧਵਾਰ"
string2 = "ਬੁੱਧਵਾ"
我尝试了相同的 jaro_distance() 函数,但我得到了
>>score = jellyfish.jaro_distance(unicode(string1), unicode(string2))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 0: ordinal not in range(128)
在将它们提供给函数之前,我尝试对它们进行编码和解码。 有没有办法将 jaro_distance() 用于其他语言,或者是否有其他可用的模块/功能? 你们能帮我解决这个问题吗?
【问题讨论】:
【参考方案1】:您可以使用内置模块difflib
中的SequenceMatcher
代码示例:
import difflib
print(difflib.SequenceMatcher(None, "ਬੁੱਧਵਾਰ", "ਬੁੱਧਵਾ").ratio())
输出:
0.9230769230769231
【讨论】:
以上是关于如何在 Python 中比较两个字符串(英语除外)之间的相似性的主要内容,如果未能解决你的问题,请参考以下文章
使用 python3 模块 face_recognition 比较两个人脸?
Python 正则表达式。删除 ':' 之后的所有字符(包括行尾和特定字符串除外)