需要一些关于字符串匹配算法的信息吗?

数据挖掘 Python nlp 算法 文本 搜索
2022-02-16 14:41:07

让我解释一个场景以更好地解释我的问题,

假设我在一家信用卡相关公司工作,人们每个月都会上传收据,我想检查那个人是否买了水果。假设我们使用 OCR 仅提取购买并存储在列表中的物品的名称。

我做的第一件事是在网上抓取随处可见的所有水果名称,然后将每个水果的名称存储在一个大文本文件中。

现在我想知道如何匹配/查找并做出该人购买水果的决定。

1) 任何适用于海量数据的搜索/匹配算法。

我只是在寻找有关在这种情况下实施什么的建议。提前致谢。

3个回答

首先尝试最简单的方法 - 确定性检查以查找水果名称集和购买的物品集之间的交叉重叠。

集合比较是可扩展的,因为每个项目的查找时间是恒定的。

如果缩放是常规集合成员检查的问题,则布隆过滤器是一种选择。

对于字符串匹配,我通常使用jellyfish库。如果你想计算两个水果之间的字符串相似度(检查哪一个相似),你可以使用 Levenshtein。这里的文档中有更多方法

莱文斯坦距离

Levenshtein 距离表示将一个单词更改为另一个单词所需的插入、删除和替换的次数。

此用例(要在文本中同时搜索的一组搜索字符串)使用的默认算法之一是Aho Corasick来自维基百科页面:“算法的复杂性与字符串长度加上搜索文本的长度加上输出匹配的数量成线性关系。” 该算法的实现存在于所有常见的编程语言中。如果这对您来说不够高效,您将需要使用某种散列技巧来获得更快的性能。