如何比较 Python 中两个字符串(英语除外)之间的相似性
How to compare similarity between two strings (other than English language) in Python
我想找出两个字符串之间的相似度
例子
string1 = "One"
string2 = "one"
我希望答案在 0 和 1 之间。对于以上两个字符串,我们得到 1。
现在我正在使用“Jellyfish”,这是 python 中的一个模块,它具有 jaro_distance() 函数。
但缺点是我只能比较两个只包含英文单词和其他特殊字符的字符串。但是我想比较其他语言的两个字符串,比如 Punjabi
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() 用于其他语言,或者是否有任何其他 module/functions 可用于此?
你们能帮我解决这个问题吗?
您可以使用内置模块 difflib
中的 SequenceMatcher
代码示例:
import difflib
print(difflib.SequenceMatcher(None, "ਬੁੱਧਵਾਰ", "ਬੁੱਧਵਾ").ratio())
输出:
0.9230769230769231
我想找出两个字符串之间的相似度 例子
string1 = "One"
string2 = "one"
我希望答案在 0 和 1 之间。对于以上两个字符串,我们得到 1。 现在我正在使用“Jellyfish”,这是 python 中的一个模块,它具有 jaro_distance() 函数。 但缺点是我只能比较两个只包含英文单词和其他特殊字符的字符串。但是我想比较其他语言的两个字符串,比如 Punjabi
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() 用于其他语言,或者是否有任何其他 module/functions 可用于此? 你们能帮我解决这个问题吗?
您可以使用内置模块 difflib
SequenceMatcher
代码示例:
import difflib
print(difflib.SequenceMatcher(None, "ਬੁੱਧਵਾਰ", "ਬੁੱਧਵਾ").ratio())
输出:
0.9230769230769231