好的,我看过很多关于模糊字符串匹配、Levenstein 距离、最长公共子字符串等的帖子。它们似乎都不完全适合我想做的事情。我正在从各种 Web 服务中提取产品结果,并且我可以从这些服务中构建产品名称的大列表。这些名称可能包括一堆变量垃圾。以下是来自 SearchUPC 的一些示例:
Apple 60W magsafe adapter L-shape with extension cord
Original Apple 60W Power Adapter (L-shaped Connector) for MacBook MC461LL/A with AC Extension Wall Cord (Bulk Packaging)
Current Apple MagSafe 60W Power Adapter for MacBook MC461LL/A with AC Extension Wall Cord (Bulk Packaging)
Apple 60W MagSafe Power Adapter - Apple Mac Accessories
Apple - MagSafe 60W Power Adapter for MacBook and 13\" MacBook Pro
MagSafe - power adapter - 60 Watt
等等我想做的是提取通用产品名称(在我的启发式人眼看来,这显然是Apple 60W MagSafe Power Adapter),但上述方法似乎都不太可能奏效。我的主要问题是我不知道要在字符串列表中搜索什么......起初,我想尝试最长的公共子字符串,但似乎这会失败,因为一堆字符串有一些东西订单,这可能会产生电源适配器的产品名称,这对用户来说并不是非常有用。
注意:从 SearchUPC API 返回的绝大多数Apply 60W MagSafe Power Adapter
记录(这里大部分省略)确实包含文字字符串“ ”。
我在 Objective-C 中为 iOS 实现了这个,但我对算法的兴趣比实现更重要,所以任何语言都是可以接受的。