匹配产品字符串的最佳机器学习技术
machine-learning
5
0

这是一个难题...

我有两个具有相同50000+种电子产品的数据库,我想将一个数据库中的产品与另一个数据库中的产品进行匹配。但是,产品名称并不总是相同的。我已经尝试过使用Levenshtein距离来测量字符串的相似性,但是这没有用。例如,

-LG 42CS560 42-Inch 1080p 60Hz LCD HDTV
-LG 42 Inch 1080p LCD HDTV

这些项目相同,但它们的产品名称相差很大。

另一方面...

-LG 42 Inch 1080p LCD HDTV
-LG 50 Inch 1080p LCD HDTV

这些是具有非常相似产品名称的不同产品。

我该如何解决这个问题?

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

我的第一个想法是尝试将名称解析为功能描述( LG公司,大小为42 Inch ,分辨率为1080p ,类型为LCD HDTV )。然后,您可以将这些描述相互匹配以实现兼容性;省略产品编号是可以的,但是尺寸不同是很糟糕的。简单的通用属性兼容就足够了,或者您可能必须编写/学习有关允许不同属性有多少不同的规则,依此类推。

根据您拥有多少种不同的产品以及所列名称的不同,我实际上可能首先是手动定义一组属性,甚至可能只是添加特定的单词/正则表达式来匹配它们,反复查看未解析的内容到目前为止,并为此添加了规则。我想在一个词汇项可能属于多个属性方面并没有很多歧义,尽管没有看到您的数据库,我想我也不知道。

如果这不可行,则此提取类似于半监督词性标记。但是,这有点不同,因为我认为词汇表比典型的解析要受限制得多,并且产品名称的空间更为严格: resolution标记仅适用于某些类型的产品。我对那篇文学不是很熟悉。可能会有一些想法可以使用。

收藏
评论

使用大量的培训示例。对于此示例集中的每个可能的对:

  1. 解析字符串的组成部分,即。公司,size_desc,display_type,make等。
  2. 找出一对两根弦之间相同成分之间的距离。
  3. 创建一个数字元组,表示组件之间的距离。
  4. 根据作为训练集一部分的字符串对,将元组标记为相同/不相同。
  5. 喂元组并训练二进制分类器(SVM)。

现在,当您要确定一对字符串是否相同时,像在训练集中那样提取特征,并为字符串各个部分之间的距离创建一个数字元组。将元组输入经过训练的SVM,并对其进行分类(是否相同)。

使用这样的学习方法的优点是,您不必反复修改规则,而且系统还可以学习大对相同和不同产品之间的差异。

您可以在WEKA中使用LibSVM软件包来执行此操作。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号