2015-07-11 4 views
3

У меня впереди меня задача, которая опирается на интерпретирующую структуру текста - если быть точным - одноязычный словарь. Словарь имеет довольно сложные записи: до 29 уникальных элементов, а некоторые из них вложены в другие. Я разрабатываю свою собственную XML-схему для словаря, но я бы хотел написать программу, которая анализирует простой текст, который у меня есть автоматически.Анализ грамматики в Ruby

У меня есть некоторые базовые навыки в Ruby, и я довольно опытный пользователь RegEx, но я думаю, что создавая много , если -trees и чрезвычайно длинные формулы RegEx - это не лучшая идея. Я нашел некоторую информацию о грамматике выражений грамматики, бэккусовой нормальной форме и W-грамматике, но кажется несколько расплывчатым в отношении того, что они применяют лучше всего.

Мой вопрос: что лучший способ интерпретировать структуру текста, написанного на естественном языке? Я не хочу интерпретировать сам язык, а скорее делить каждую запись на сегменты на основе символов и используемого ключевого слова, а также их окрестности. Какие драгоценности и ресурсы вы бы предложили?


Edit: here's an example умеренно простой записи из словаря (на польском языке). Я хочу отметить каждый элемент (чувства, объяснения, коллокации, метки маркеров и т. Д.). Как вы можете видеть, я ищу эффективный способ охватить большое количество случаев в древовидной форме. Еще одна проблема заключается в том, что я хочу иметь много захватов, так как я хочу пометить сегменты в XML от большего к меньшему.

+1

Можете ли вы разместить (или ссылку) на эти 29 записей. Думаю, я мог бы написать для них регулярное выражение. Идея состоит в том, чтобы написать _all_ перестановки в виде строк. Затем создайте _ternary-tree для regex trie_. См. Этот пример http://www.regexformat.com/default_files/Rx5_ScrnSht01.jpg. Это словарь, но хорошо работает с обычными строками. – sln

+0

Ну, у меня больше записей - тысячи, если быть точным - это то, что они состоят из 29 различных элементов. Проблема в том, что не все из них всегда присутствуют, они иногда меняют свой порядок, и может быть запись, встроенная в другую запись. Насколько я ценю предложение, я убежден, что слишком много возможностей для эффективного использования любого регулярного выражения. Я добавил дополнительную информацию в исходное сообщение. Не могли бы вы объяснить, однако, что вы имели в виду под «писать все перестановки как строки»? Чтобы создать все возможные комбинации, даже если это километры? – MrVocabulary

+0

Я не уверен, что я понимаю ваш вопрос - какова моя цель? Я оцифровываю исторический словарь польского языка, и я хочу иметь возможность получить информацию о конкретных типах информации (я намерен преобразовать текст в XML, а затем XML в базу данных с очень конкретными запросами для лингвистических исследований). – MrVocabulary

ответ

1

Это похоже на проблему, которая хорошо подходит для Treetop. Я не думаю, что у меня достаточно информации, чтобы быть уверенным, что она будет работать, но может объединять регулярные выражения в более крупную структуру, где каждый из 29 элементов может управляться, а их информация извлекается/представляется с использованием любых функций Ruby , похоже на набор функций, который вам нужен.

+0

Не могу сказать точно, но похоже, что это может быть просто способ сделать это. Обязательно попробуем, спасибо! – MrVocabulary

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