我需要自动将来自不同来源的产品名称(相机,笔记本电脑,电视等)与数据库中的规范名称相匹配.
例如"Canon PowerShot a20IS","来自佳能的NEW powershot A20 IS"和"数码相机佳能PS A20IS" 都应该与"佳能PowerShot A20 IS"相匹配.我已经使用了levenshtein距离和一些额外的启发式方法(删除了明显的常用词,为数字更改分配了更高的成本等),这在某种程度上起作用,但遗憾的是不够好.
主要问题是即使相关关键字中的单字母更改也会产生巨大差异,但要检测哪些是相关关键字并不容易.例如,考虑三个产品名称:
联想T400
联想R400
新联想T-400,酷睿2双核
任何标准前两个是可笑的类似字符串(好吧,soundex可能有助于在这种情况下消除T和R,但名称可能同样是400T和400R),第一个和第三个是相互远离的字符串,但是是相同的产品.
显然,匹配算法不能100%精确,我的目标是自动匹配大约80%的名字,具有很高的信心.
非常感谢任何想法或参考
我认为,这可以归结为区分联想等关键词和New等谷歌关键词。
我将对名称数据库进行一些分析以识别关键字。您可以使用类似于生成词云的代码。
然后,我将手动编辑列表以删除任何明显的谷壳,例如,New实际上是常见的,但不是关键。
然后,您将获得可用于帮助识别相似性的关键字列表。您可以将“原始”名称与其关键字相关联,并在比较两个或多个原始名称的相似性(字面意思是共享关键字的百分比)时使用这些关键字。
无论如何,这都不是一个完美的解决方案,但是我不认为您期望得到一个解决方案?