Я пытаюсь найти способ просмотреть около миллиона документов, которые являются официальными документами (для аргументации, это документы диссертации). Не все они стандартизированы, но достаточно близки. Это Заголовки, разделы, абзацы и т. Д. Могут возникнуть тонкие различия, например, в английском языке мы называем заголовок «Заголовок», а на французском - «Заголовок».
Таким образом, на мой взгляд, лучший способ сделать это - создать EBNF со всеми возможными комбинациями Title: = Title | Например, Titre.
Я не слишком озабочен придумыванием EBNF. Моя главная забота - как добиться синтаксического анализа. Я смотрел ANTLR, OSLO, Irony и множество других, но у меня нет опыта в них, чтобы судить, подходят ли они для моей задачи.
Итак, мой вопрос к ученым из вас:
- Какой инструмент DSL вы бы порекомендовали для анализа документов в таком масштабе?
- Какой инструмент DSL является наиболее точным в синтаксическом анализе, но при этом прощает соответствие (например, должны ли мы определять правила для верхнего и нижнего регистра, как насчет чисел по сравнению с римскими цифрами и иностранным языком (французским).
- Есть ли процесс / алгоритм, которые я не рассматривал, которые вы бы порекомендовали в качестве альтернативы DSL? (Переписывание с нуля - это вариант, но я хотел бы, чтобы что-то работало быстро).
- Кто-нибудь пытался добавить обучение и интеллект в алгоритмы синтаксического анализа через DSL (подумайте о генетических алгоритмах и нейронных сетях)?
- Вы бы использовали эти инструменты DSL в производственной среде?
Моя предпочтительная платформа разработки - C #. Я упоминаю об этом, потому что в идеале я хотел бы интегрировать инструмент DSL в код, чтобы мы могли работать с ним из существующих приложений.