匹配产品字符串的最佳机器学习技术

Nat*_*han 31 machine-learning pattern-matching string-comparison levenshtein-distance

这是一个难题......

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

-LG 42CS560 42-Inch 1080p 60Hz LCD HDTV
-LG 42 Inch 1080p LCD HDTV
Run Code Online (Sandbox Code Playgroud)

这些项目是相同的,但他们的产品名称变化很大.

另一方面...

-LG 42 Inch 1080p LCD HDTV
-LG 50 Inch 1080p LCD HDTV
Run Code Online (Sandbox Code Playgroud)

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

我该如何解决这个问题?

Dou*_*gal 17

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

根据您拥有的产品种类和所列名称的不同,我实际上可能首先手动定义一组属性,甚至可能只添加特定的单词/正则表达以匹配它们,迭代地查看未解析的内容到目前为止并为此添加规则.我想,对于一个可能属于多个属性的词汇项而言,并没有太多含糊不清,尽管没有看到你的数据库,我想我不知道.

如果这不可行,那么这种提取类似于半监督的词性标注.但是,它有点不同,因为我认为词汇量比典型的解析更有限,并且产品名称的空间更加层次化:resolution标签仅适用于某些类型的产品.我对这些文献不是很熟悉; 你可以使用一些想法.

  • 这几乎是最先进的产品匹配.请注意,仅当您具有属性的"含义"以及产品与属性之间的关联时,它才有效.以下是微软研究的相关论文:http://research.microsoft.com/pubs/148339/offerMatching_kdd.pdf (6认同)

Lon*_*guy 13

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

  1. 解析其组件的字符串,即.公司,size_desc,display_type,make等.
  2. 找到一对中两个字符串之间相同组件之间的距离.
  3. 创建一个表示组件之间距离的数字元组.
  4. 基于对中的字符串将元组标记为相同/不相同,作为训练集的一部分.
  5. 输入元组并训练二元分类器(SVM).

现在,当你得到一对你想要决定它们是否相同的字符串时,像在训练集中那样提取特征,并为字符串的各个组成部分之间的距离创建数字元组.将元组提供给训练有素的SVM,并对它们是否相同进行分类.

使用这样的学习方法的好处是您不必一遍又一遍地修改规则,并且系统还会学习大量相同和不同的产品之间的差异.

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