亲爱的,有人知道在文本字符串之间查找非精确匹配的方法吗?
例如:
我有以下文本“STATUS MSG PACK ACM L”(第 1 列),它应该返回“PACK L”(第 2 列)。
我有 2 个列表,一个由一个人编写的较长文本,另一个与要搜索的消息相对应,这是正确的一个。
我附上了两个列表的示例:应在第 2 列中搜索第 1 列,并返回第 2 列中最相关的元素:
https://drive.google.com/file/d/0B11sJdX_AaJBd2lvWGszaFpXM2c/view?usp=sharing
对于模糊搜索,有多种工具和方法,但使用工厂 Python,我们已经有了基础库
difflib
,可以让我们获得ratio
字符串之间的相似性。例如:在这个例子中,我们测量了
Hola Mundo
与其他字符串的相似性,我们看到逻辑上它Hola Mundo!
获得了大于 的相似度Hola Mundo cruel
。然后的想法是遍历一个列表,对于每个元素,检查与第二个列表中元素的比率,最大的将是最相似的。像这样的东西:在
matches
我们最终得到第二个列表的元素时,从相似性从大到小排序,第一个元素应该是最优的。重要提示:通过这种方式,我们将始终找到“相似性”,作为额外的改进,您可能必须考虑
ratio
最小的相似性才能考虑已实现“匹配”,该值只能通过实验来定义。更好的是 FjSevilla 建议的方法,因为它更紧凑,而且它已经包含了评估最小比率的逻辑:
出于好奇,有必要指出
difflib
它强烈基于1987 年的格式塔方法算法。