web-dev-qa-db-ja.com

NLTK対スタンフォードNLP

私は最近、Pythonを使用していくつかのソリューションを作成するためにNLTKツールキットを使用し始めました。

スタンフォードNLPの使用に関する多くのコミュニティ活動を聞いています。 NLTKとスタンフォードNLPの違いは何ですか?それらは2つの異なるライブラリですか? NLTKにはスタンフォードNLPへのインターフェイスがありますが、基本的な違いがほとんどない場合や、さらに詳細な場合にだれでも光を当てることができます。

スタンフォードNLPはPython?

19
RData

NLTKとスタンフォードNLPの違いを教えてください。それらは2つの異なるライブラリですか? NLTKにはスタンフォードNLPへのインターフェイスがあることを知っていますが、基本的な違いはほとんどないか、さらに詳しくは誰でも光を当てることができます。

(「 Stanford CoreNLP 」を意味すると仮定します。)

これらは2つの異なるライブラリです。

  • Stanford CoreNLPはJavaで記述されています
  • [〜#〜] nltk [〜#〜]はPythonライブラリ

主な機能上の違いは、NLTKには複数のバージョンまたはNLPツールの他のバージョンへのインターフェイスがありますが、Stanford CoreNLPにはバージョンのみがあることです。 NLTKは、サードパーティのJavaプロジェクトのインストールもサポートしています。さらに、wikiにスタンフォードNLPパッケージをインストールするための 指示も含まれています

どちらも英語を適切にサポートしていますが、他の言語を扱っている場合:

  • Stanford CoreNLPには、英語、中国語、フランス語、ドイツ語、スペイン語、アラビア語の モデルが付属しています
  • [〜#〜] nltk [〜#〜]には、ポルトガル語、ロシア語、ポーランド語などの追加言語の コーパスが付属しています 。個々のツールは、さらに多くの言語をサポートする場合があります(たとえば、デンマーク語のコーパスはありませんが、 DanishStemmer があります)。

つまり、どれが「最良」であるかは、特定のアプリケーションと必要なパフォーマンス(使用している機能、言語、語彙、目的の速度など)によって異なります。

Pythonを使用してスタンフォードNLPを使用できますか?

はい、Stanford CoreNLPを使用するためのPython (NLTKに依存しません)。

27
user812786

選択はユースケースに依存します。 [〜#〜] nltk [〜#〜]は、前処理およびトークン化に最適ですテキスト。また、適切な[〜#〜] pos [〜#〜]タガーも含まれています。 Standford NLPはより多くのリソースを必要とするため、トークン化/ POSタギングのみのStandford Core NLPは少し過剰です。
しかし、根本的な違いの1つは、NLTKを使用してすぐに構文依存性を解析できないことです。テキストドメインが制限されていない場合、非常に面倒なことがあるために文法を指定する必要があります。 Standford NLPはダウンロード可能なモデルとして一般的なテキストの確率的パーサーを提供しますが、これは非常に正確です。また、NER(Named Entity Recognition)などが組み込まれています。また、 Spacy をご覧になることをお勧めします。これはPythonで書かれており、使いやすく、CoreNLPよりもはるかに faster です。

5
0x5050

NLPが初めてのようです。

最近、NLTKツールキットの使用を開始しました

本当にあなたがNLPに不慣れであるなら、最良のことはシンプルに始めることでしょう。理想的には、nltkから始めます。私は自然言語処理に比較的慣れていない(数ヶ月)。初心者にはnltkの方が優れていることを確認できます。nltkには優れた無料の オンラインブック があり、初心者がすばやく学習できるようにするためです。

快適になり、実際に解決すべき問題がある場合は、スタンフォードコアNLPを見て、問題の解決に向いているかどうかを確認してください。

NLTKに固執したい場合は、 [〜#〜] nltk [〜#〜] でスタンフォードCoreNLP APIにアクセスすることもできます。

次に、類似点と相違点について:

NLTKとスタンフォードNLPの違いは何ですか?それらは2つの異なるライブラリですか?

どちらも自然言語処理を提供します。スタンフォードコアNLPの最も有用な部分には、品詞タガー、名前付きエンティティレコグナイザー、センチメント分析、パターン学習などがあります。

名前付きエンティティレコグナイザーは、スタンフォードコアNLPの方が優れています。スタンフォードコアNLPは、例えば、主題、目的語、予測を拾うなどの文法機能が優れています(これが、nltkからスタンフォードコアNLPに切り替えた理由の一部です)。 @ user812786が述べたように、NLTKには他のバージョンのNLPツールへの複数のインターフェースがあります。 NLTKは、NLPの学習にも適しています。複数のコーパスを使用する必要がある場合は、NLTKを使用します。これは、多数の テキストコーパスと字句リソース に簡単にアクセスできるためです。どちらにもPOSタグ付けとセンチメント分析があります。

スタンフォードNLPはPython?

そのとおり。 Python CoreNLP Javaパッケージ。複数のPython Stanford CoreNLPサーバー を使用するパッケージ

3
Tanya Gupta

日付/時刻イベントの解析を検討している場合、StanfordCoreNLPには利用可能な最良の日付時刻パーサーであるSuTimeが含まれていると、この回答に追加します。 「次の月曜日の午後」のような任意のテキストのサポートは、他のパッケージにはありません。

0

NLTKは、学習段階で自然言語プロセスをゼロから基本レベルまで実行するために使用できます。 Standford NLPを使用すると、完了したタスクに非常に迅速かつ簡単な方法で高度な柔軟性を提供できます。

高速で実稼働で使用する場合は、Standford NLPをお勧めします。

0
Rahul Rawat