Обработка естественного языка в Ruby

Я хочу сделать анализ предложений (в основном для приложений Twitter) и вывести некоторые общие характеристики. Есть ли хорошие библиотеки обработки естественного языка для такого рода вещей в Ruby?

Как и Есть ли хорошая библиотека обработки естественного языка, но для Ruby. Я бы предпочел что-то очень общее, но любые выводы оценены!

Ответ 1

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

Ответ 2

Три превосходных и зрелых пакета NLP: Стэнфордский ядерный NLP, Открыть NLP и LingPipe. Существуют привязки Ruby к инструментам Stanford Core NLP (лицензия GPL), а также инструменты OpenNLP (Apache лицензия).

В более экспериментальной части я поддерживаю Инструмент извлечения текста, извлечения и аннотации (Лечение), выпущенный под GPL, который предоставляет общий API для почти каждый камень, связанный с НЛП, который существует для Ruby. Следующий список функций Treat также может служить хорошей ссылкой с точки зрения стабильных естественных языков обработки, совместимых с Ruby 1.9.

  • Текстовые сегменты и токенизаторы (punkt-segmenter, tactful_tokenizer, srx-english, scalpel)
  • Анализаторы естественного языка для изучения английского, французского и немецкого языков и имени для английского языка (stanford-core-nlp).
  • Слово флексирования и сопряжения (linguistics), вывод (ruby-stemmer, uea-stemmer, lingua и т.д.)
  • Интерфейс WordNet (rwordnet), тегеры POS (rbtagger, engtagger и т.д.)
  • Язык (whatlanguage), дата/время (chronic, kronic, nickel), извлечение ключевого слова (lda-ruby).
  • Текстовое извлечение с индексацией и полнотекстовым поиском (ferret).
  • Извлечение искомого объекта (stanford-core-nlp).
  • Основное машинное обучение с деревьями решений (decisiontree), MLP (ruby-fann), SVM (rb-libsvm) и линейная классификация (tomz-liblinear-ruby-swig).
  • Показатели сходства текста (levenshtein-ffi, fuzzy-string-match, tf-idf-similarity).

Не относится к лечению, но относится к НЛП: hotwater (строковые дистанционные алгоритмы), yomu (привязки к Apache Tiki для чтения .doc,.docx,.pages,.odt,.rtf,.pdf), graph-rank (реализация GraphRank).

Ответ 3

Вы всегда можете использовать jruby и использовать java-библиотеки.

EDIT: способность делать рубины изначально на jvm и легко использовать java-библиотеки - большой плюс для рубистов. Это хороший вариант, который следует учитывать в такой ситуации.

Какой набор инструментов NLP использовать в JAVA?

Ответ 4

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

Ответ 5

TREAT - Инструмент для редактирования текста и аннотаций - это самый полный набор инструментов, который я знаю для Ruby: https://github.com/louismullie/treat/wiki/

Ответ 6

Также рассмотрите использование API SaaS, например MonkeyLearn. Вы можете легко обучать текстовые классификаторы с помощью машинного обучения и интегрировать через API. Там доступен Ruby SDK.

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

Другие приятные функции:

  • У вас есть графический интерфейс для создания/тестирования алгоритмов.
  • Алгоритмы работают очень быстро на нашей платформе облачных вычислений.
  • Вы можете интегрироваться с Ruby или любым другим языком программирования.

Ответ 7

Попробуйте этот

https://github.com/louismullie/stanford-core-nlp

О камне stanford-core-nlp

Этот камень обеспечивает высокоуровневые привязки Ruby к пакету NLP Stanford Core, набор инструментов обработки естественного языка для токенизации, сегментации предложений, тегов с частичной речью, лемматизации и разбора английского, французского и немецкого языков. Пакет также предоставляет именованное распознавание объектов и разрешение когерентности для английского языка.

http://nlp.stanford.edu/software/corenlp.shtml демонстрационная страница http://nlp.stanford.edu:8080/corenlp/

Ответ 8

Я поддерживаю список Ресурсы обработки естественного языка Ruby (библиотеки, API и презентации) в GitHub, который охватывает библиотеки, перечисленные в другом ответы здесь, а также некоторые дополнительные библиотеки.

Ответ 9

Вам нужно быть более конкретным в отношении этих "общих характеристик".

В НЛП "общие характеристики" предложения могут означать миллион разных вещей - анализ настроений (т.е. отношение говорящего), основную часть тегов речи, использование личного местоимения, содержит ли предложение активные или пассивные глаголы, какое напряжение и голос глаголов...

Я не против, если вы смутно описываете его, но если мы не знаем, что вы просите, это маловероятно, мы можем быть конкретными в том, чтобы помочь вам.

Мое общее предложение, особенно для НЛП, заключается в том, что вы должны получить инструмент, который лучше всего подходит для работы, а не ограничивать себя конкретным языком. Ограничение себя конкретным языком отлично подходит для некоторых задач, где общие инструменты реализуются повсюду, но NLP не является одним из них.

Другая проблема при работе с Twitter - это много предложений, которые будут наполовину испечены или сжаты странными и прекрасными способами - к чему большинство инструментов НЛП не обучены. Чтобы помочь там, NUS SMS Corpus состоит из "около 10 000 SMS-сообщений, собранных учащимися". Из-за подобных ограничений и использования, анализ, который может быть полезен при ваших исследованиях с помощью Twitter.

Если вы более конкретно, я попытаюсь перечислить некоторые инструменты, которые помогут.

Ответ 11

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

https://github.com/yohasebe/engtagger