У меня впереди меня задача, которая опирается на интерпретирующую структуру текста - если быть точным - одноязычный словарь. Словарь имеет довольно сложные записи: до 29 уникальных элементов, а некоторые из них вложены в другие. Я разрабатываю свою собственную XML-схему для словаря, но я бы хотел написать программу, которая анализирует простой текст, который у меня есть автоматически.Анализ грамматики в Ruby
У меня есть некоторые базовые навыки в Ruby, и я довольно опытный пользователь RegEx, но я думаю, что создавая много , если -trees и чрезвычайно длинные формулы RegEx - это не лучшая идея. Я нашел некоторую информацию о грамматике выражений грамматики, бэккусовой нормальной форме и W-грамматике, но кажется несколько расплывчатым в отношении того, что они применяют лучше всего.
Мой вопрос: что лучший способ интерпретировать структуру текста, написанного на естественном языке? Я не хочу интерпретировать сам язык, а скорее делить каждую запись на сегменты на основе символов и используемого ключевого слова, а также их окрестности. Какие драгоценности и ресурсы вы бы предложили?
Edit: here's an example умеренно простой записи из словаря (на польском языке). Я хочу отметить каждый элемент (чувства, объяснения, коллокации, метки маркеров и т. Д.). Как вы можете видеть, я ищу эффективный способ охватить большое количество случаев в древовидной форме. Еще одна проблема заключается в том, что я хочу иметь много захватов, так как я хочу пометить сегменты в XML от большего к меньшему.
Можете ли вы разместить (или ссылку) на эти 29 записей. Думаю, я мог бы написать для них регулярное выражение. Идея состоит в том, чтобы написать _all_ перестановки в виде строк. Затем создайте _ternary-tree для regex trie_. См. Этот пример http://www.regexformat.com/default_files/Rx5_ScrnSht01.jpg. Это словарь, но хорошо работает с обычными строками. – sln
Ну, у меня больше записей - тысячи, если быть точным - это то, что они состоят из 29 различных элементов. Проблема в том, что не все из них всегда присутствуют, они иногда меняют свой порядок, и может быть запись, встроенная в другую запись. Насколько я ценю предложение, я убежден, что слишком много возможностей для эффективного использования любого регулярного выражения. Я добавил дополнительную информацию в исходное сообщение. Не могли бы вы объяснить, однако, что вы имели в виду под «писать все перестановки как строки»? Чтобы создать все возможные комбинации, даже если это километры? – MrVocabulary
Я не уверен, что я понимаю ваш вопрос - какова моя цель? Я оцифровываю исторический словарь польского языка, и я хочу иметь возможность получить информацию о конкретных типах информации (я намерен преобразовать текст в XML, а затем XML в базу данных с очень конкретными запросами для лингвистических исследований). – MrVocabulary