私はいくつかの文の分析(主にTwitterアプリの場合)を行い、いくつかの一般的な特性を推測しようとしています。この種のものに適したRubyの自然言語処理ライブラリはありますか?
Ruby用の優れた自然言語処理ライブラリはありますか。私は非常に一般的なものを好みますが、どんなリードも大歓迎です!
私はいくつかの文の分析(主にTwitterアプリの場合)を行い、いくつかの一般的な特性を推測しようとしています。この種のものに適したRubyの自然言語処理ライブラリはありますか?
Ruby用の優れた自然言語処理ライブラリはありますか。私は非常に一般的なものを好みますが、どんなリードも大歓迎です!
3つの優れた成熟したNLPパッケージは、Stanford Core NLP、Open NLP、およびLingPipeです。スタンフォードコアNLPツール(GPLライセンス)およびOpenNLPツール(Apacheライセンス)へのRubyバインディングがあります。
より実験的な側面として、私はGPLの下でリリースされたText Retrieval、Extraction and Annotation Toolkit (Treat)を維持しています。これは、Rubyに存在するほぼすべてのNLP関連のgemに共通のAPIを提供します。以下のTreatの機能のリストは、Ruby1.9と互換性のある安定した自然言語処理gemの観点からも参考になります。
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
Treatには含まれていませんが、NLPに関連しています:hotwater(文字列距離アルゴリズム)、yomu(.doc、.docx、.pages、.odt、.rtf、.pdfを読み取るためのApache Tikiへのバインダー)、グラフランク(実装GraphRankの)。
Ruby Linguisticsにはいくつかのものがあり、そこからいくつかのリンクがありますが、PythonのNLTKとはまだ近いようには見えません。
いつでもjrubyを使用して、Javaライブラリを使用できます。
編集:jvmでネイティブにrubyを実行し、javaライブラリを簡単に活用できる機能は、rubyistにとって大きなプラスです。これは、このような状況で検討する必要がある優れたオプションです。
ここで、RubyのいくつかのNLPアルゴリズムについて詳しく説明している優れた記事を見つけました。これには、ステマー、日時パーサー、および文法パーサーが含まれます。
TREAT –テキスト検索および注釈ツールキット–は、Rubyで私が知っている最も包括的なツールキットです:https ://github.com/louismullie/treat/wiki/
また、MonkeyLearnなどのSaaSAPIの使用を検討してください。機械学習を使用してテキスト分類子を簡単にトレーニングし、APIを介して統合できます。利用可能なRubySDKがあります。
独自の分類子を作成するだけでなく、感情分析、トピック分類、言語検出などのために事前に作成されたモジュールを選択できます。キーワード抽出やエンティティなどのエクストラクタもあり、パブリックモジュールをさらに追加していきます。
その他の優れた機能:
私はGitHubでRuby自然言語処理リソース(ライブラリ、API、およびプレゼンテーション)のリストを維持しており、ここにある他の回答にリストされているライブラリといくつかの追加ライブラリをカバーしています。
これを試してみてください
https://github.com/louismullie/stanford-core-nlp
stanford-core-nlpgemについて
このgemは、Stanford Core NLPパッケージへの高レベルのRubyバインディングを提供します。これは、トークン化、文のセグメンテーション、品詞タグ付け、字句解析、および英語、フランス語、ドイツ語の解析のための一連の自然言語処理ツールです。このパッケージは、英語の固有表現抽出と共参照解決も提供します。
http://nlp.stanford.edu/software/corenlp.shtml デモページ http://nlp.stanford.edu:8080/corenlp/
これらの「一般的な特性」が何であるかについて、はるかに具体的にする必要があります。
NLPでは、文の「一般的な特性」は、数百万の異なることを意味する可能性があります。感情分析(つまり、話者の態度)、品詞の基本、人称代名詞の使用、文にアクティブまたはパッシブの動詞が含まれていますか。動詞の緊張と声...
あなたがそれを説明することについて漠然としているかどうかは気にしませんが、あなたが何を求めているのかわからない場合、私たちがあなたを助けることに具体的になる可能性はほとんどありません。
私の一般的な提案は、特にNLPの場合、特定の言語に限定するのではなく、その仕事に最適なツールを入手する必要があるということです。一般的なツールがどこにでも実装されている一部のタスクでは、特定の言語に制限することは問題ありませんが、NLPはその1つではありません。
Twitterを使用する際のもう1つの問題は、多くの文が奇妙で素晴らしい方法で半分焼き付けられたり圧縮されたりすることです。これは、ほとんどのNLPツールのトレーニングを受けていません。そこで役立つように、NUS SMSコーパスは、「学生が収集した約10,000件のSMSメッセージ」で構成されています。同様の制限と使用法があるため、それを分析すると、Twitterでの探索に役立つ場合があります。
もっと具体的に言うと、役立つツールをいくつか挙げてみます。
MarkWatsonの無料の本PracticalSemanticWeb and Linked Data Applications、Java、Scala、Clojure、およびJRubyEditionをチェックします。彼は、java、clojure、ruby、およびscalaを使用したNLPに関する章を持っています。彼はまたあなたが必要とする資源へのリンクを提供します。
このオプションを実装するためのより軽量でシンプルなものを探している人にとっては、私にとってはうまくいきました。