Извлечение информации из миллионов простых, но несовместимых текстовых файлов - PullRequest
3 голосов
/ 07 мая 2011

У нас есть миллионы простых текстовых документов, содержащих различные структуры данных, которые мы извлекли из pdf, текст печатается построчно, поэтому все форматирование теряется (потому что, когда мы пытались использовать инструменты для поддержания формата, они просто испортили его). Нам нужно извлечь поля и их значения из этого текстового документа, но есть некоторые различия в структуре этих файлов (новая строка здесь и там, шум на некоторых листах, поэтому написание некорректно).

Я думал, что мы создадим некую структуру шаблона с информацией о координатах (строка, число слов / слов) ключевых слов и значений и будем использовать эту информацию для поиска и сбора значений ключевых слов, используя различные алгоритмы для несовместимое форматирование.

Есть ли какой-нибудь стандартный способ сделать это, какие-нибудь ссылки, которые могут помочь? какие-нибудь другие идеи?

Ответы [ 5 ]

1 голос
/ 09 мая 2011

Я предлагаю инструмент интеграции данных Talend. Это с открытым исходным кодом (то есть бесплатно!). Он построен на Java, и вы можете настроить свой проект интеграции данных в любое время, изменив базовый код Java.

Я использовал его и обнаружил, что он очень полезен для малобюджетных и очень сложных проектов по интеграции данных. Вот ссылка на их веб-сайт: Talend

Удачи.

1 голос
/ 07 мая 2011

Я бы рекомендовал использовать графическое регулярное выражение здесь с очень слабыми правилами и предикатом окончательного подтверждения.Здесь вы можете написать нечеткое соответствие на уровне токена, затем на уровне строки и т. Д.

1 голос
/ 07 мая 2011

Ларри Уолла Perl ваш друг здесь.Это как раз та проблемная область, в которой он превосходит.

Sed в порядке, но для такого рода мыслей Perl - колени пчелы.

1 голос
/ 07 мая 2011

Пока я повторяю рекомендации для командной строки Unix и для Perl, может помочь инструмент более высокого уровня: Google Refine .Он предназначен для обработки беспорядочных данных реального мира.

1 голос
/ 07 мая 2011

шум может быть исправлен или проигнорирован с помощью инструментов нечеткого сопоставления текста, таких как agrep: http://www.tgries.de/agrep/ Однако проблема с дополнительными новыми строками останется.

Один из способов, который я бы предложил, - ограничить распространение ошибок аналогичным образом, как это делают компиляторы.Например, вы пытаетесь соответствовать вашему шаблону или шаблону, и вы не можете этого сделать.Позже в тексте будет определенное совпадение, но оно может быть частью текущего несогласованного шаблона.В этом случае верное совпадение должно быть принято, а фрагмент текста, который не был сопоставлен, должен быть оставлен в стороне для дальнейшей обработки.Это позволит вам пропустить ошибки, которые слишком сложно проанализировать.

...