问题描述
|
非常感谢您对解决以下问题的最佳方法的想法。我使用的是汽车分类清单示例,该示例本质上类似,可以给出一个想法。
问题:从给定的文本中提取数据元组。
这是数据的一些特征。
文本中的词汇(单词)仅限于特定领域。最多假设100-200个字。
需要解析的文本是一个标题,例如下面显示的汽车广告数据。因此,每个记录对应一个元组(行)。
在某些情况下,某些属性可能会丢失。因此,例如,缺少年份下的原始数据第5行。
有些词并列(字母组合)。就像“低英里”。
现有历史数据= 10,000条记录
每周收到的新数据量= 1000-1500条记录
预期的输出应为(Year,Make,Model,feature)的形式。所以输出应该像
1->(2009年,福特,Fusion,SE)
2->(1997年,福特,金牛座,旅行车)
3->(2000,三菱,Mirage,DE)
4->(2007年,福特,Expedition,EL Limited)
5->(,本田,雅阁,EX)
....
....
原始标题数据:
1-> 2009年福特Fusion SE-7000美元
2-> 1997年福特金牛座旅行车-$ 800(东圣何塞)
3-> \ '00三菱幻影DE-$ 2499(saratoga)图片
4-> 2007 Ford Expedition EL Limited-$ 7800(x)
5->本田雅阁低里程-$ 2800(都柏林/普林斯顿/利莫莫)图片
6-> 2004本田ODASSEY LX 68K英里-$ 10800(丹维尔/圣拉蒙)
7-> 93 LINCOLN MARK-$ 2000(Oakland East)图片
8-> ####### 2006 LEXUS GS 430 BLACK ON BLACK 114KMI #######-$ 19700(San Rafael)图片
9-> 2004 Audi A4 1.8T FWD-$ 8900(萨克拉门托)图片
10-> ####### 2003 GMC C2500 HD EX-CAB 6.0 V8 EFI WHITE 4X4 #######-$ 10575(San Rafael)图片
11-> 1990年,丰田花冠取得了不错的成绩!节省气体! 5速清洁! REG 2011 O.B.O-$ 1600(Hayward / Castro Valley)图片img
12-> HONDA ACCORD EX 2000-$ 4900(都柏林/普莱森/利物浦)图片
13-> 2009 Chevy Silverado LT乘员舱-$ 23900(都柏林/普莱森顿/利莫莫)图片
14-> 2010年ura歌TSX-V6-科技-$ 29900(都柏林/普莱森顿/利物浦)图片
15-> 2003 Nissan Altima-$ 1830(SF)pic
可能的选择:
机器学习文本分类器(朴素贝叶斯等)
正则表达式
我要弄清楚的是,RegEx对于这项工作而言是否过于复杂,而文本分类器却是一个过大的杀伤力?
如果选择使用文本分类器,那么您认为最容易实现的分类是什么。
在此先感谢您的帮助。
解决方法
这是一个经过充分研究的问题,称为信息提取。做您想做的事情不是直截了当的,它也不像您说的那么简单(即,机器学习并不是一个过大的技巧)。有几种技术,您应该阅读研究领域的概述。
, 检查此IE库以编写提取规则<我认为它将最适合您的问题。
还有示例如何创建快速字典匹配。
, 我认为,如果您已经有了带注释的数据和与每个字段相关的单词列表,则ARX或Phoebus系统可能会满足您的需求。他们的方法是信息提取和信息集成的结合。
, 有一些好的实体识别库。您是否看过Apache opennlp?
, 当用户在寻找特定型号的汽车时,这项工作变得更加容易。我很确定我可以对大多数福特游骑兵进行分类,因为我知道用正则表达式寻找什么。
我认为您最好的选择是为每个汽车模型编写一个类型为String-> Maybe Tuple的函数。然后在每个输入上运行所有这些内容,并丢弃那些输入,从而导致零或太多的元组。
, 您应该为此使用诸如Amazon Mechanical Turk之类的工具。人类微任务。另一种选择是使用数据输入自由职业者。 upWork是一个不错的地方。您可以获得出色的质量结果,并且每种方法的成本都非常合理。