Анализ документов с помощью DSL

Я пытаюсь найти способ просмотреть около миллиона документов, которые являются официальными документами (для аргументации, это документы диссертации). Не все они стандартизированы, но достаточно близки. Это Заголовки, разделы, абзацы и т. Д. Могут возникнуть тонкие различия, например, в английском языке мы называем заголовок «Заголовок», а на французском - «Заголовок».

Таким образом, на мой взгляд, лучший способ сделать это - создать EBNF со всеми возможными комбинациями Title: = Title | Например, Titre.

Я не слишком озабочен придумыванием EBNF. Моя главная забота - как добиться синтаксического анализа. Я смотрел ANTLR, OSLO, Irony и множество других, но у меня нет опыта в них, чтобы судить, подходят ли они для моей задачи.

Итак, мой вопрос к ученым из вас:

  1. Какой инструмент DSL вы бы порекомендовали для анализа документов в таком масштабе?
  2. Какой инструмент DSL является наиболее точным в синтаксическом анализе, но при этом прощает соответствие (например, должны ли мы определять правила для верхнего и нижнего регистра, как насчет чисел по сравнению с римскими цифрами и иностранным языком (французским).
  3. Есть ли процесс / алгоритм, которые я не рассматривал, которые вы бы порекомендовали в качестве альтернативы DSL? (Переписывание с нуля - это вариант, но я хотел бы, чтобы что-то работало быстро).
  4. Кто-нибудь пытался добавить обучение и интеллект в алгоритмы синтаксического анализа через DSL (подумайте о генетических алгоритмах и нейронных сетях)?
  5. Вы бы использовали эти инструменты DSL в производственной среде?

Моя предпочтительная платформа разработки - C #. Я упоминаю об этом, потому что в идеале я хотел бы интегрировать инструмент DSL в код, чтобы мы могли работать с ним из существующих приложений.


person AboutDev    schedule 03.02.2010    source источник


Ответы (1)


Я наткнулся на инструмент под названием TinyPG. Это не совсем то, что мне нужно, но наличие исходного кода позволит мне создать то, что мне нужно.

person AboutDev    schedule 16.02.2010