如何将产品标题(非结构化)解析为结构化数据?

时间:2013-08-28 19:45:13

标签: parsing machine-learning e-commerce nlp artificial-intelligence

我希望将“Canon D1000 4MP Camera 2X Zoom LCD”等非结构化产品解析为{brand: canon, model number: d1000, lens: 4MP zoom: 2X, display type: LCD}等结构化数据。

到目前为止,我有:

  1. 删除了停用词并进行了清理(删除了- ; : /等字符
  2. 将长字符串标记为单词。
  3. 非常感谢任何技术/库/方法/算法!

    编辑:产品标题没有启发式方法。卖家可以输入任何作为标题。例如:'佳能D1000'可以作为标题。此外,此练习不仅适用于相机数据集,标题可以是任何产品。

5 个答案:

答案 0 :(得分:6)

由于你有很多训练数据(我假设你有很多配对标题+结构化json规范),我会尝试训练Named Entity Recognizer

例如,您可以训练Stanford NER。请参阅此FAQ entry解释如何执行此操作。显然,你必须摆弄参数,因为产品标题不完全是句子。

您需要准备培训数据,但这不应该那么难。您需要两个列,单词和答案,您可以添加标签列(但我不确定标准POS标签器的准确性是什么,因为它是非典型的文本)。我只是从关联的json规范中提取答案列的值,会有一些歧义,但我认为它很少见,所以你可以忽略它。

答案 1 :(得分:3)

我同意没有100%的成功方法。一种可能的方法是使用一些手动注释的数据训练自定义NER(命名实体识别)。标签为:品牌/型号/类型。 过滤模型名称/品牌的常用方法是使用字典。品牌/型号通常是非字典词。

答案 2 :(得分:3)

开发了这种商用分析仪后,我可以告诉你,这个问题没有简单的解决办法。但是有多个快捷方式,特别是如果您的域仅限于相机/电子产品。

首先,您应该查看更多网站。许多产品品牌都在页面中注明(正确的html注释,粗体字体,名称开头的所有大写字母)。某些网站的整个网页都有品牌选择器供搜索之用。通过这种方式,您可以创建一个非常好的品牌名称入门词典。与产品系列名称相同,甚至与模型相同。可以通过正则表达式批量提取字母数字模型,并快速过滤。

还有很多其他技巧,但我会尽量简短。这里只是一条建议:手动工作和算法之间总是存在权衡。始终要记住,这两种方法都可以混合使用,并且都具有投资回报时间曲线,人们往往会忘记这些曲线。如果您的目标不是创建自动算法来提取产品品牌和型号,则此问题应该在您的计划中限制时间预算。您可以在一天内真实地创建一个包含1000个品牌的字典,并在电子商品的已知数据源上获得良好的表现(我们不是在这里谈论亚马逊,还是我们?),您可能只需要一个包含4000个品牌的字典。因此,在将数周投入最新的神经网络命名实体识别器之前,请先进行数学运算。

答案 3 :(得分:1)

如果您只获得标题(如亚马逊产品),那么您可以将其视为一个句子并考虑顺序标记。

根据属性是给定还是未知(属性类似于品牌,型号等),这里有几个问题:

1:如果这是给出的那么问题是"容易"你可以使用任何"顺序标签"解决问题的方法。方法包括CRF(条件随机场)和马尔可夫模型(HMM,MEMM等)

2:如果没有,那么你需要以与解析(依赖解析,完全解析)相同的方式提取(属性,值)对。但我想知道这是否可行,因为事先对这些属性知之甚少。另一种可能性是,给定大量外部信息(评论和产品描述),您可以找出这些属性,然后从标题中提取对。防爆。你会发现"品牌"和"佳能"在评论中,然后发现单词" canon"从标题到相机的某个地方,你知道这是"品牌"的价值。

答案 4 :(得分:0)

使用神经网络解析这样的自由文本可能会有更多的成功,但是你只会通过纯文本解析而失败,因为很多单词都需要你没有的上下文。

但是,根据您想要达到的精度水平,您可以提出部分解决方案(然后需要人工后处理)。或者至少强制输入的最小结构(如产品名称必须遵循某种模式)。这样你就有了一个更好的开始,因为你可以更好地识别产品,它应该给你足够的上下文信息来理解剩余的输入。

我猜绝对没有100%的解决方案(甚至没有神经网络)。