Как обнаружить табличные данные из различных источников - PullRequest
1 голос
/ 13 ноября 2009

В экспериментальном проекте, с которым я играю, я хочу иметь возможность просматривать текстовые данные и определять, содержат ли они данные в табличном формате. Конечно, есть много случаев, которые могут выглядеть как табличные данные, поэтому мне было интересно, какой алгоритм мне нужно исследовать, чтобы найти общие черты.

Моей первой мыслью было написать длинную инструкцию switch / case, которая проверяла бы данные, разделенные вкладками, а затем еще один случай для данных, разделенных символами канала, и затем еще один случай для данных, разделенных другим способом и т. Д. И т. Д. Теперь, конечно, конечно Я понимаю, что мне пришлось бы придумать список различных вещей для обнаружения, но я подумал, есть ли более разумный способ обнаружения этих функций, чем относительно медленный поиск каждого типа.

Я понимаю, что этот вопрос не особенно красноречиво задан, поэтому я надеюсь, что он имеет какой-то смысл!

Есть идеи?

(не знаю, как пометить это тоже - так что помощь там приветствуется!)

Ответы [ 3 ]

1 голос
/ 13 ноября 2009

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

1 голос
/ 14 ноября 2009

Предполагается, что у вас еще нет определенных типов, сохраненных в TSV.

Файл TSV обычно [Значение1] \ т [Value..N] \ п

Мое предложение будет:

  1. Подсчитайте все вкладки
  2. Подсчитайте все новые строки
  3. Подсчитать общее количество вкладок в первом ряду
  4. Разделите общее количество вкладок на вкладки в первой строке

С результатом 4, если вы получите остаток от 0, то у вас есть кандидат в файлы TSV. Оттуда вы можете сделать следующее:

  1. Вы можете продолжить чтение данных и игнорировать ошибку строк с меньшим или большим, чем прогнозируемые вкладки на строку
  2. Вы можете отсканировать каждую строку перед чтением, чтобы убедиться, что все согласованы
  3. Вы можете прочитать до строки, которая не соответствует формату, а затем выдать ошибку

Если у вас есть хороший прогноз количества значений, разделенных табуляцией, вы можете использовать регулярное выражение для анализа значений [как группы].

1 голос
/ 13 ноября 2009

Единственной надежной схемой будет использование машинного обучения. Вы можете, например, обучить классификатор персептрона на пачке примеров табличных и не табличных материалов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...