2010-01-18 4 views
7

Существует множество парсеров и лексеров для скриптов (например, структурированных компьютерных языков). Но я ищу тот, который может сломать (почти) неструктурированный текстовый документ в более крупные разделы, например. главы, абзацы и т. д.lexers/parsers for (un) структурированные текстовые документы

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

Я не ожидаю, что это будет идеально, но знает ли кто-нибудь о таком широком «блочном» лексере/парсере? Или вы могли бы указать мне направление литературы, которое может помочь?

ответ

1

Многие легкие языки разметки, такие как markdown (что, кстати, использует SO), reStructured text и (возможно) POD похожи на то, о чем вы говорите. Они имеют минимальный синтаксис и разбивают ввод вниз на синтаксические фрагменты синтаксического анализа. Вы можете получить некоторую информацию, прочитав об их реализации.

+0

я забыл о POD! Мне действительно нужно, чтобы это была комбинация POD, уценки и реструктурированного текста. Они определенно дали мне несколько указателей. Мне кажется, что мне придется строить свои собственные. – wilson32

+0

У вас уже есть текст или вы хотите начать с нуля? Возможно, вы можете преобразовать свой существующий документ (если он есть) в ReSt или что-то еще и использовать парсер для акций? –

+0

Беда в том, что мы понятия не имеем, как будет выглядеть новый входящий документ.Мы знаем, что процесс, который мы предполагаем, будет только полуавтоматическим. Я подозреваю, что будет легче собрать анализируемый документ из копии оригинала, который мы затем будем использовать в качестве источника для любого соответствующего форматирования. – wilson32

0

Большинство программ lex/yacc работают с четко определенной грамматикой. если вы можете определить свою грамматику в терминах формата BNF (который большинство парсеров принимает аналогичный синтаксис), вы можете использовать любой из них. Это может указывать на очевидное. Однако вы все еще можете немного расплывчаться вокруг «блоков» (токенов) текста, который будет частью вашей грамматики. В конце концов вы определяете правила для своих токенов.

Я использовал Parse-RecDescent Perl module в прошлом с различными уровнями успеха для подобных проектов.

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

+0

Lucene - это индексатор, не так ли? Разве это действительно «разбирает» что-нибудь? –

+0

Вы правы. Наверное, я больше думал о том, какая функциональность «Lucene Analyzer» даст вам .. и, возможно, слишком сильно зайдет за вопрос. Дайте мне знать, если вы считаете его вводящим в заблуждение. – ziya

+0

Я пришел к такому выводу, но в крайнем случае я задал вопрос. Мы можем определить наши документы в какой-то форме BNF, которые мы можем использовать для их анализа. – wilson32

0
  1. Определите стандарт аннотации, который указывает, как вы хотели бы разобраться.
  2. Перейдите к Amazon Mechanical Turk и попросите людей наклеить документы 10K, используя ваш стандарт аннотации.
  3. Поезд CRF (который похож на HMM, но лучше) на данные тренировки.

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

0

попробовать: pygments, geshi или prettify

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

Ссылки:
gitorius использует приукрасить,
GitHub использует pygments,
rosettacode использует Geshi,

Смежные вопросы