Рубиновый текстовый анализ

Есть ли какой-нибудь драгоценный камень Ruby или еще для анализа текста? Частота слов, обнаружение шаблонов и т. д. (желательно со знанием французского языка)


person gemp    schedule 29.09.2011    source источник


Ответы (3)


обобщение частоты слов - это языковые модели, например. униграммы (= частота отдельных слов), биграммы (= частота пар слов), триграммы (= частота мировых троек), ..., в общем: n-граммы

Вам следует поискать существующий инструментарий для языковых моделей — не стоит изобретать велосипед здесь.

Доступно несколько стандартных наборов инструментов, например. от команды CMU Sphinx, а также HTK.

Эти наборы инструментов обычно написаны на C (для скорости!!, потому что вам нужно обрабатывать огромные корпуса) и генерируют файлы стандартного выходного формата ARPA n-gram (обычно это текстовый формат).

Проверьте следующий поток, который содержит более подробную информацию и ссылки:

Построение языковой модели, совместимой с openears

После того, как вы создали свою языковую модель с помощью одного из этих наборов инструментов, вам понадобится либо Ruby Gem, который делает языковую модель доступной в Ruby, либо вам нужно преобразовать формат ARPA в свой собственный формат.

В сообщении adi92 перечислены еще некоторые ресурсы Ruby NLP.

Вы также можете найти в Google «Модель языка ARPA» для получения дополнительной информации.

И последнее, что не менее важно, проверьте онлайн-инструмент N-gram от Google. Они построили n-граммы на основе оцифрованных книг, которые также доступны на французском и других языках!

person Tilo    schedule 29.09.2011
comment
Большое спасибо за ваш ответ, я проверю эти ресурсы. Но оба ответа, как правило, побуждают меня управлять своими собственными делами. Может быть, их немного уменьшить. - person gemp; 30.09.2011
comment
чтобы создать надежную статистику о n-граммах, вам понадобится один или несколько очень больших обучающих корпусов текстовых данных.... например. таким корпусом может быть собрание всех статей WSJ за определенный период времени. Обработка таких больших объемов занимает очень много времени. Я люблю Ruby в целом, но для этой задачи, вероятно, лучше подходит специальный инструмент C. Как только вы накопите статистику, вы можете использовать получившуюся N-грамму в программе на Ruby — это интенсивно использует память, но не требует много времени. - person Tilo; 30.09.2011
comment
эти учебные корпуса, как правило, специфичны для предметной области.. убедитесь, что такие текстовые данные доступны в больших количествах, иначе ваша языковая модель будет перенастроена.. это означает, что она не обобщается на новые данные и в основном бесполезна.. - person Tilo; 30.09.2011
comment
Мои требования не столь суровы. Мне просто нужен базовый анализ текста. Я мог бы сделать это, например, наиболее часто используемое слово, количество слогов, статистическое сравнение и т. Д. Мне не нужен контекст, семантика или что-то еще. Просто базовое понимание словарного запаса, чтобы иметь возможность идентифицировать множественное число, простые орфографические ошибки, сходство слов и тому подобное. - person gemp; 30.09.2011
comment
И узоры. Например, идиомы или сгруппированные слова, такие как United States, République française (я упоминал французский язык?). Ваши комментарии очень полезны, спасибо. - person gemp; 30.09.2011

Нищий Ошибка: Ресурсы NLP для Ruby содержат много полезных ссылок Ruby NLP.
Я пытался использовать материал Ruby Linguistics давным-давно, и помню, что у меня было много проблем с ним... Я не знаю. рекомендую прыгнуть в это.

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

Как и в случае со Stanford parser gem, можно использовать библиотеки Java, которые решают вашу проблему изнутри Ruby, но это может быть сложно, так что, вероятно, это не лучший способ решить проблему.

person Aditya Mukherji    schedule 29.09.2011
comment
Да, я видел штуковины Java, когда искал. Выглядит интересно, но, черт возьми, я фанат Ruby ^^ Надеялся, что будут какие-то простые вещи, которые сэкономят мне время, необходимое для разработки простого анализа, статистики и так далее. Спасибо за Ваш ответ. - person gemp; 30.09.2011

По этой причине я написал гем words_counted. Демонстрацию можно посмотреть на rubywordcount.com. Он имеет множество функций анализа, которые вы упомянули, и множество других. API хорошо задокументирован, и его можно найти в файле readme на Github.

person Mohamad    schedule 27.10.2014