哪种算法匹配来自一组的大多数相似字符串?

时间:2018-01-12 23:54:56

标签: string algorithm language-agnostic levenshtein-distance n-gram

假设我有一个包含其标题的书籍数据库。对于来自eBay或Craigslist或其他此类网站的特定列表,我想将其标题字符串与我数据库中的所有书名进行比较,以尝试找到匹配项。

由于这些网站上的用户喜欢将“完美条件”和“快速发货”等内容添加到其列表标题中以吸引买家,因此不太可能存在确切的字符串相等性。

我应该使用哪种算法来进行此类关联?我知道n-gram和Levenshtein距离,但我不知道哪个会做最准确的工作。

对于各种适用的算法,他们的计算性能如何比较?使用多种算法并平均其结果以平衡其优势和劣势是否有意义?是否可以设定最低置信度?我宁愿没有比赛更糟糕的比赛。

1 个答案:

答案 0 :(得分:0)

对于手头的任务,我认为通过一些预处理可以获得最佳效果:删除常见的" null"短语(那些你不想看到的),这样你就有一个较小的标题可能会将实际的标题作为主要部分。

下一步取决于您的数据库大小和请求开销。如果这些便宜,那么从数据库中提取标题列表,看看eBay文本中存在哪些标题(多种语言的单个命令)。如果这对您有用,那么即使是预处理也可能是不必要的开销。

如果完整的数据库列表很昂贵,但数据库索引很好,那么尝试从易趣文本中抓取可能的n-gram(比如2-3个单词),然后在数据库中搜索它们。您应该获得相对较少的返回值,然后您可以在完整的eBay文本中尝试 in toto 进行匹配。