Ответ 1
Есть некоторые вещи в Ruby Linguistics и некоторые ссылки оттуда, хотя это не похоже ни на что близкое к тому, что NLTK для Python.
Я хочу сделать анализ предложений (в основном для приложений Twitter) и вывести некоторые общие характеристики. Есть ли хорошие библиотеки обработки естественного языка для такого рода вещей в Ruby?
Как и Есть ли хорошая библиотека обработки естественного языка, но для Ruby. Я бы предпочел что-то очень общее, но любые выводы оценены!
Есть некоторые вещи в Ruby Linguistics и некоторые ссылки оттуда, хотя это не похоже ни на что близкое к тому, что NLTK для Python.
Три превосходных и зрелых пакета 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
и т.д.)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).
Вы всегда можете использовать jruby и использовать java-библиотеки.
EDIT: способность делать рубины изначально на jvm и легко использовать java-библиотеки - большой плюс для рубистов. Это хороший вариант, который следует учитывать в такой ситуации.
Я нашел замечательную статью, в которой подробно описаны некоторые алгоритмы NLP в Ruby здесь. Это включает в себя стволовых клеток, парсеров времени и грамматических парсеров.
TREAT - Инструмент для редактирования текста и аннотаций - это самый полный набор инструментов, который я знаю для Ruby: https://github.com/louismullie/treat/wiki/
Также рассмотрите использование API SaaS, например MonkeyLearn. Вы можете легко обучать текстовые классификаторы с помощью машинного обучения и интегрировать через API. Там доступен Ruby SDK.
Помимо создания ваших собственных классификаторов, вы можете выбрать предварительно созданные модули для анализа настроений, классификации тем, определения языка и т.д. У нас также есть экстракторы, такие как извлечение ключевых слов и сущности, и мы будем добавлять дополнительные публичные модули.
Другие приятные функции:
Попробуйте этот
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/
Я поддерживаю список Ресурсы обработки естественного языка Ruby (библиотеки, API и презентации) в GitHub, который охватывает библиотеки, перечисленные в другом ответы здесь, а также некоторые дополнительные библиотеки.
Вам нужно быть более конкретным в отношении этих "общих характеристик".
В НЛП "общие характеристики" предложения могут означать миллион разных вещей - анализ настроений (т.е. отношение говорящего), основную часть тегов речи, использование личного местоимения, содержит ли предложение активные или пассивные глаголы, какое напряжение и голос глаголов...
Я не против, если вы смутно описываете его, но если мы не знаем, что вы просите, это маловероятно, мы можем быть конкретными в том, чтобы помочь вам.
Мое общее предложение, особенно для НЛП, заключается в том, что вы должны получить инструмент, который лучше всего подходит для работы, а не ограничивать себя конкретным языком. Ограничение себя конкретным языком отлично подходит для некоторых задач, где общие инструменты реализуются повсюду, но NLP не является одним из них.
Другая проблема при работе с Twitter - это много предложений, которые будут наполовину испечены или сжаты странными и прекрасными способами - к чему большинство инструментов НЛП не обучены. Чтобы помочь там, NUS SMS Corpus состоит из "около 10 000 SMS-сообщений, собранных учащимися". Из-за подобных ограничений и использования, анализ, который может быть полезен при ваших исследованиях с помощью Twitter.
Если вы более конкретно, я попытаюсь перечислить некоторые инструменты, которые помогут.
Я бы посмотрел бесплатную книгу Марка Уотсона Практический семантический веб-интерфейс и связанные приложения данных, Java, Scala, Clojure и JRuby Edition. У него есть главы по НЛП, используя java, Clojure, ruby и scala. Он также предоставляет ссылки на необходимые вам ресурсы.
Для людей, которые ищут что-то более легкое и простое в реализации этой опции, хорошо работали для меня.