如何在 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 中比较两个字符串(英语除外)之间的相似性的主要内容,如果未能解决你的问题,请参考以下文章

如果顺序无关紧要,如何比较python中的两个字符串?

使用 python3 模块 face_recognition 比较两个人脸?

Python 正则表达式。删除 ':' 之后的所有字符(包括行尾和特定字符串除外)

如何在不使用“除外”python的情况下退出不和谐机器人

如何从亚马逊红移中的字符串中删除非数字字符(句号“。”除外)

如何在 Linq EntityFramework 4 中使用内连接和除外