Справка: извлечение кортежей данных из текста ... Regex или Machine learning? - PullRequest
5 голосов
/ 12 июня 2011

Буду очень признателен за ваши мысли о наилучшем подходе к следующей проблеме. Я использую пример листинга автомобилей, который похож по своей природе, чтобы дать представление.

Проблема: извлечь кортеж данных из заданного текста.

Вот некоторые характеристики данных.

  1. Словарь (слова) в тексте ограничен определенной областью. Допустим, самое большее 100-200 слов.

  2. Текст, который необходимо проанализировать, является заголовком, подобным данным об автомобильной рекламе, показанным ниже. Таким образом, каждая запись соответствует одному кортежу (строке).

  3. В некоторых случаях некоторые атрибуты могут отсутствовать. Так, например, в строке необработанных данных № 5 ниже года отсутствует.

  4. Некоторые слова идут вместе (биграммы). Как "Низкие мили".

  5. Доступны исторические данные = 10 000 записей

  6. Объем входящих новых данных = 1000-1500 записей / неделя

Ожидаемый результат должен быть в форме (Год, Марка, Модель, Функция). Таким образом, вывод должен выглядеть как

1 -> (2009, Ford, Fusion, SE)
2 -> (1997, Форд, Телец, Вагон)
3 -> (2000, Mitsubishi, Mirage, DE)
4 -> (2007, Ford, Expedition, EL Limited)
5 -> (, Honda, Accord, EX)
....
....

Исходные данные заголовка:


1 -> 2009 Ford Fusion SE - $ 7000
2 -> Ford Taurus Wagon 1997 года - 800 долларов США (сан-хосе восток)
3 -> '00 Mitsubishi Mirage DE - рис. 2499 $ (саратога)
4 -> Ford Expedition EL Limited 2007 г. - 7800 (х)
5 -> Honda Accord без пробега - $ 2800 (Дублин /часть / Ливермор) рис.
6 -> 2004 HONDA ODASSEY LX 68 тыс. Миль - 10800 долл. США (Дэнвилл / Сан-Рамон)
7 -> 93 LINCOLN MARK - 2000 долларов США (восток дуба) рис
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 Toyota Corolla работает хорошо! ГАЗОСБЕРЕЖАТЕЛЬ! 5скорость чистки! REG 2011 O.B.O - 1600 долларов (долина Хейуорд / Кастро) pic img
12 -> HONDA ACCORD EX 2000 - 4900 долларов США
13 -> 2009 Chevy Silverado LT Crew Cab - 23900 $ (дублин /часть / Ливермор) рис.
14 -> 2010 Acura TSX - V6 - TECH - 29900 долл. США (Дублин / Приятон / Ливермор) рис.
15 -> 2003 Nissan Altima - $ 1830 (SF) фото


Возможные варианты:

  1. Классификатор текстов для машинного обучения (Наивный Байес и т. Д.)
  2. Regex

Что я пытаюсь выяснить, так это то, что RegEx слишком сложен для работы, а классификатор Text является излишним?

Если вы выберете текстовый классификатор, то, что вы считаете наиболее простым для реализации.

Заранее благодарим за помощь.

Ответы [ 6 ]

5 голосов
/ 13 июня 2011

Это хорошо изученная проблема, которая называется извлечение информации . Нелегко делать то, что вы хотите делать, и это не так просто, как кажется, (то есть машинное обучение не является излишним). Есть несколько методов, вам следует прочитать обзор области исследования.

3 голосов
/ 13 июня 2011

Проверьте эту библиотеку IE для написания правила извлечения <Я думаю, что она будет работать лучше для вашей проблемы. Там также пример, как создать <a href="http://code.google.com/p/graph-expression/wiki/RegexpOptimization" rel="nofollow"> быстрое соответствие словаря .

0 голосов
/ 25 августа 2015

Для этого вы должны использовать такой инструмент, как Amazon Mechanical Turk.Микрозадача человека.Другой альтернативой является использование фрилансера для ввода данных.upWork - отличное место для поиска.Вы можете получить отличные результаты качества, и стоимость очень разумна для каждого.

0 голосов
/ 04 октября 2012

Поскольку пользователь ищет конкретную модель автомобиля, задача становится проще. Я почти уверен, что могу классифицировать, скажем, большинство Ford Rangers, поскольку знаю, что искать с помощью регулярных выражений.

Я думаю, что вам лучше всего написать функцию для каждой модели автомобиля с типом String -> Maybe Tuple. Затем запустите все это на каждом входе и выбросьте эти входы, что приведет к нулю или слишком много кортежей.

0 голосов
/ 17 июня 2011

Есть несколько хороших библиотек распознавания сущностей. Вы взглянули на Apache opennlp ?

0 голосов
/ 14 июня 2011

Я думаю, что системы ARX или Phoebus могут удовлетворить ваши потребности, если у вас уже есть аннотированные данные и список слов, связанных с каждым полем. Их подход представляет собой сочетание извлечения информации и интеграции информации.

...