私はいくつかの文の分析(主にTwitterアプリ用)を行い、いくつかの一般的な特性を推測したいと考えています。 Rubyのこの種のものに適した自然言語処理ライブラリはありますか?
良い自然言語処理ライブラリーがある に似ていますが、Ruby向けです。私は非常に一般的なものを好みますが、どんなリードでもありがたいです!
Ruby Linguistics にはいくつかのリンクがあり、そこからいくつかのリンクがありますが、 [〜#〜] nltk [〜#〜] はPythonのものとは似ていません、まだ。
3つの優れた成熟したNLPパッケージは Stanford Core NLP 、 Open 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-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 (文字列距離アルゴリズム)、 yom (.doc、.docx、.pages、.odtを読み取るためのApache Tikiへのバインダー) 、.rtf、.pdf)、 graph-rank (GraphRankの実装)。
いつでもjrubyを使用して、Javaライブラリを使用できます。
編集:Rubyをネイティブにjvmで実行し、簡単にJavaライブラリを活用する機能は、Rubyistにとって大きなプラスです。これは考慮すべき優れたオプションです。このような状況で。
Ruby here )にいくつかのNLPアルゴリズムを詳述した優れた記事を見つけました。これには、ステマー、日時パーサー、および文法パーサーが含まれます。
TREAT – Text Retrieval and Annotation Toolkit –は、Rubyについて私が知っている最も包括的なツールキットです。 https://github.com/louismullie/treat/wiki/
SaaS MonkeyLearn のようなAPIを使用することも検討してください。テキスト分類子を機械学習で簡単にトレーニングし、API経由で統合できます。 Ruby SDK があります。利用可能です。
独自の分類子を作成する以外に、感情分析、トピック分類、言語検出などのために事前に作成されたモジュールを選択できます。キーワード抽出やエンティティなどのエクストラクターもあり、パブリックモジュールをさらに追加していきます。
その他の素晴らしい機能:
私は Ruby自然言語処理リソース (ライブラリ、API、およびプレゼンテーション)のリストをGitHubで維持しています。
これをお試しください
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/
これらの「一般的な特性」とは何かについて、より具体的にする必要があります。
NLPでは、文の「一般的な特徴」は100万の異なるものを意味する可能性があります-感情分析(つまり、話者の態度)、基本的な品詞タグ付け、個人代名詞の使用、文にはアクティブまたはパッシブ動詞が含まれていますか。動詞の時制と声...
説明について漠然としていてもかまいませんが、質問の内容がわからない場合は、具体的なサポートを提供することはほとんどありません。
特にNLPに対する私の一般的な提案は、特定の言語に限定するのではなく、仕事に最適なツールを入手することです。一般的なツールがどこにでも実装されている一部のタスクでは、特定の言語に制限することは問題ありませんが、NLPはそれらの1つではありません。
Twitterで作業する際のもう1つの問題は、多くの文が奇妙で素晴らしい方法で半分焼き付けられたり圧縮されたりすることです。これは、ほとんどのNLPツールが訓練されていないためです。そこで役立つように、 NUS SMS Corpus は「約10,000 SMS学生が収集したメッセージ)」で構成されています。同様の制限によりそして使用法、それを分析することはTwitterであなたの探査に役立つかもしれません。
より具体的な場合は、役立つツールをいくつかリストしてみます。
より軽量で、このオプションを実装するのが簡単なものを探している人にとって、私にはうまくいきました。
Mark Watsonの無料の本 Practical Semantic Web and Linked Data Applications、Java、Scala、Clojure、and JRuby Edition を調べてみます。彼は、Java、clojure、Ruby、およびscalaを使用したNLPに関する章を持っています。また、必要なリソースへのリンクも提供しています。