web-dev-qa-db-ja.com

Rubyでの自然言語処理

私はいくつかの文の分析(主にTwitterアプリ用)を行い、いくつかの一般的な特性を推測したいと考えています。 Rubyのこの種のものに適した自然言語処理ライブラリはありますか?

良い自然言語処理ライブラリーがある に似ていますが、Ruby向けです。私は非常に一般的なものを好みますが、どんなリードでもありがたいです!

64
Joey Robert

Ruby Linguistics にはいくつかのリンクがあり、そこからいくつかのリンクがありますが、 [〜#〜] nltk [〜#〜] はPythonのものとは似ていません、まだ。

23
Alex Martelli

3つの優れた成熟したNLPパッケージは Stanford Core NLPOpen NLP および LingPipe です。 Ruby Stanford Core NLP ツール(GPLライセンス)へのバインディング)と OpenNLP ツール(Apacheライセンス)があります。

より実験的な側面では、Rubyに存在するほぼすべてのNLP関連のgemに共通のAPIを提供する、GPLの下でリリースされた Text Retrieval、Extraction and Annotation Toolkit (Treat)を維持しています。 。以下のTreatの機能のリストは、Ruby 1.9。

  • テキストセグメンターとトークナイザー(punkt-segmentertactful_tokenizersrx-englishscalpel
  • 英語、フランス語、ドイツ語の自然言語パーサーと英語の名前付きエンティティ抽出(stanford-core-nlp)。
  • 語の活用と活用(linguistics)、ステミング(Ruby-stemmeruea-stemmerlinguaなど)
  • WordNetインターフェイス(rwordnet)、POSタガー(rbtaggerengtaggerなど)
  • 言語(whatlanguage)、日付/時刻(chronickronicnickel)、キーワード(lda-Ruby)抽出。
  • 索引付けと全文検索(ferret)によるテキスト検索。
  • 名前付きエンティティの抽出(stanford-core-nlp)。
  • 決定木(decisiontree)、MLP(Ruby-fann)、SVM(rb-libsvm)、線形分類(tomz-liblinear-Ruby-swig)による基本的な機械学習。
  • テキスト類似性メトリック(levenshtein-ffifuzzy-string-matchtf-idf-similarity)。

Treatには含まれていませんが、NLPに関連しています: hotwater (文字列距離アルゴリズム)、 yom (.doc、.docx、.pages、.odtを読み取るためのApache Tikiへのバインダー) 、.rtf、.pdf)、 graph-rank (GraphRankの実装)。

61
user2398029

いつでもjrubyを使用して、Javaライブラリを使用できます。

編集:Rubyをネイティブにjvmで実行し、簡単にJavaライブラリを活用する機能は、Rubyistにとって大きなプラスです。これは考慮すべき優れたオプションです。このような状況で。

JAVAで使用するNLPツールキットはどれですか?

11
jshen

Ruby here )にいくつかのNLPアルゴリズムを詳述した優れた記事を見つけました。これには、ステマー、日時パーサー、および文法パーサーが含まれます。

9
Joey Robert

TREAT – Text Retrieval and Annotation Toolkit –は、Rubyについて私が知っている最も包括的なツールキットです。 https://github.com/louismullie/treat/wiki/

6
zanbri

SaaS MonkeyLearn のようなAPIを使用することも検討してください。テキスト分類子を機械学習で簡単にトレーニングし、API経由で統合できます。 Ruby SDK があります。利用可能です。

独自の分類子を作成する以外に、感情分析、トピック分類、言語検出などのために事前に作成されたモジュールを選択できます。キーワード抽出やエンティティなどのエクストラクターもあり、パブリックモジュールをさらに追加していきます。

その他の素晴らしい機能:

  • アルゴリズムを作成/テストするためのGUIがあります。
  • アルゴリズムは、クラウドコンピューティングプラットフォームで非常に高速に実行されます。
  • Rubyまたはその他のプログラミング言語と統合できます。
5
Raul Garreta

私は Ruby自然言語処理リソース (ライブラリ、API、およびプレゼンテーション)のリストをGitHubで維持しています。

4
diasks2

これをお試しください

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

Stanford-core-nlp gemについて

このgemは、高水準のRubyバインディングをStanford Core NLPパッケージに提供します。これは、トークン化、文のセグメンテーション、品詞のタグ付け、見出し語化、および英語の解析のための一連の自然言語処理ツールです。フランス語とドイツ語このパッケージは、英語の名前付きエンティティの認識と共同参照の解決も提供します。

http://nlp.stanford.edu/software/corenlp.shtml デモページ http://nlp.stanford.edu:8080/corenlp/

4
Lohith MV

これらの「一般的な特性」とは何かについて、より具体的にする必要があります。

NLPでは、文の「一般的な特徴」は100万の異なるものを意味する可能性があります-感情分析(つまり、話者の態度)、基本的な品詞タグ付け、個人代名詞の使用、文にはアクティブまたはパッシブ動詞が含まれていますか。動詞の時制と声...

説明について漠然としていてもかまいませんが、質問の内容がわからない場合は、具体的なサポートを提供することはほとんどありません。

特にNLPに対する私の一般的な提案は、特定の言語に限定するのではなく、仕事に最適なツールを入手することです。一般的なツールがどこにでも実装されている一部のタスクでは、特定の言語に制限することは問題ありませんが、NLPはそれらの1つではありません。

Twitterで作業する際のもう1つの問題は、多くの文が奇妙で素晴らしい方法で半分焼き付けられたり圧縮されたりすることです。これは、ほとんどのNLPツールが訓練されていないためです。そこで役立つように、 NUS SMS Corpus は「約10,000 SMS学生が収集したメッセージ)」で構成されています。同様の制限によりそして使用法、それを分析することはTwitterであなたの探査に役立つかもしれません。

より具体的な場合は、役立つツールをいくつかリストしてみます。

2
Smerity

より軽量で、このオプションを実装するのが簡単なものを探している人にとって、私にはうまくいきました。

https://github.com/yohasebe/engtagger

1
JohnSalzarulo

Mark Watsonの無料の本 Practical Semantic Web and Linked Data Applications、Java、Scala、Clojure、and JRuby Edition を調べてみます。彼は、Java、clojure、Ruby、およびscalaを使用したNLPに関する章を持っています。また、必要なリソースへのリンクも提供しています。

1
Adam D