自然言語処理用のJavaまたはPython [終了]


112

自然言語処理に適したプログラミング言語を教えてください。JavaまたはPython?私はそれについて多くの質問と答えを見つけました。しかし、どちらを使用するかを選択するのにまだ迷っています。

また、ライブラリが多数あるため(LingPipe、GATE、OpenNLP、StandfordNLP)、JavaにどのNLPライブラリを使用するかを知りたいです。Pythonでは、ほとんどのプログラマーがNLTKを推奨しています。

しかし、いくつかの有用な情報を取得するために、非構造化データからテキスト処理または情報抽出(自由形式のプレーンな英語テキストのみ)を行う場合、最適なオプションは何ですか?JavaまたはPython?適切なライブラリ?

更新しました

私がやりたいことは、非構造化データから有用な製品情報を抽出することです(たとえば、ユーザーは携帯電話やラップトップについて、あまり標準的でない英語でさまざまな形式の広告を作成します)。


47
この種の質問はここでは歓迎されないのが嫌いです。意図は聖戦を防ぐことだったと思いますが、これはコンテンツIMOに貢献しています。
L0j1k 2014

2
「主要なJavaおよびPython NLPライブラリとそれらの相対的な強みは何ですか?」多分それはそれを解決しますか?答えは時間とともに変化しますが、このような質問も非常に役に立ちます。
スコットスミス

5
また、このような質問がSOで歓迎されたことを願っています。私は最近、PythonとRのNLPの強みを調査しようとしましたが、すぐに打ち倒されました。プロジェクトを正しい言語で組み立てようとする人にとっては、ブエノではありません。
Ksofiac 2017

回答:


133

NLP向けのJava vs Pythonは、非常に好みまたは必要です。会社/プロジェクトによっては、どちらかを使用する必要があり、プロジェクトを率いる場合を除いて、多くの場合選択肢はありません。

NLTK(www.nltk.org)以外にも、実際には以下のテキスト処理用のライブラリがありますpython

(詳細については、https://pypi.python.org/pypi?%3Aaction = search&term = natural + language + processing&submit = searchを参照してください

のためにJava、他の人のトンがありますが、ここに別のリストがあります:

  • フリーリングhttp : //nlp.lsi.upc.edu/freeling/
  • OpenNLPhttp : //opennlp.apache.org/
  • LingPipehttp : //alias-i.com/lingpipe/
  • Stanford CoreNLPhttp : //stanfordnlp.github.io/CoreNLP/(Pythonを含む他の言語のラッパーが付属)
  • CogComp NLPhttps : //github.com/CogComp/cogcomp-nlp

これは、基本的な文字列処理の優れた比較です。http://nltk.googlecode.com/svn/trunk/doc/howto/nlp-python.htmlを参照してください

GATEとUIMAとOpenNLPの便利な比較については、https: //www.assembla.com/spaces/extraction-of-cost-data/wiki/Gate-vs-UIMA-vs-OpenNLP?version = 4を参照してください。

NLPに使用する言語がわからない場合は、個人的に「目的の分析/出力を提供する言語」と言います。自然言語処理のために学習する言語またはツールを参照してください

NLPツールのかなり最近の(2017)は次のとおりです:https : //github.com/alvations/awesome-community-curated-nlp

NLPツールの古いリスト(2013):http : //web.archive.org/web/20130703190201/http : //yauhenklimovich.wordpress.com/2013/05/20/tools-nlp


言語処理ツール以外に、パイプラインmachine learningに組み込むツールが非常に必要になりますNLP

とには完全な範囲がPythonありJava、ここでも、好みとライブラリが十分にユーザーフレンドリーであるかどうかによって異なります。

Pythonの機械学習ライブラリ:

(詳細は、https://pypi.python.org/pypi?%3Aaction = search&term = machine + learning&submit = searchを参照してください


NLPでの最近の(2015)深層学習津波では、おそらく次のことを検討できます。https//en.wikipedia.org/wiki/Comparison_of_deep_learning_software

私は、ディープラーニングツールを非優先/中立性からリストすることは避けます。


NLP / MLツールを要求するその他のStackoverflowの質問:


1
NLPおよびMLツールに関する多くの情報を提供してくれてありがとう
ジンリン

42

質問は非常にオープンエンドです。つまり、どちらかを選択するのではなく、使用する言語に応じた比較を以下に示します(両方の言語で利用できる優れたライブラリがあるため)。

パイソン

Pythonに関して最初に確認する必要があるのは、Python Natural Language Toolkitです。彼らの説明で述べているように、NLTKは人間の言語データを扱うPythonプログラムを構築するための主要なプラットフォームです。これは、分類、トークン化、ステミング、タグ付け、解析、および意味論的推論のための一連のテキスト処理ライブラリとともに、50以上のコーパスおよびWordNetなどの語彙リソースへの使いやすいインターフェースを提供します。

PythonベースのGoogleのNatural Language Toolkitプロジェクトに由来する、検索可能な優れたコードもいくつかあります。このコードへのリンクはGitHubにあります

ジャワ

最初に探す場所は、スタンフォード大学の自然言語処理グループです。そこで配布されているソフトウェアはすべてJavaで書かれています。最近のすべてのディストリビューションには、Oracle Java 6以降またはOpenJDK 7以降が必要です。配布パッケージには、コマンドライン呼び出し、jarファイル、Java API、およびソースコード用のコンポーネントが含まれています。

多くの機械学習環境でここに表示されるもう1つの優れたオプション(一般的なオプション)はWekaです。Wekaは、データマイニングタスク用の機械学習アルゴリズムのコレクションです。アルゴリズムは、データセットに直接適用するか、独自のJavaコードから呼び出すことができます。Wekaには、データの前処理、分類、回帰、クラスタリング、相関ルール、および視覚化のためのツールが含まれています。また、新しい機械学習スキームの開発にも適しています。


9
素晴らしい答え。なぜこの種の質問がここで見下されるのか、私には本当にわかりません。+1
L0j1k 2014

8
私は完全に同意します。尋ねられた質問は一般的です。そうは言っても、これらはまさに私がしばしば自分が直面していると思う質問のタイプです。
Nathaniel Payne

1
Javaベースのライブラリとツールに関して、LingPipeは、もう1つの優れたツールです。alias-i.com/lingpipe
Nathaniel Payne

2
@NathanielPayne:ご提案ありがとうございます。これは、NLPを開始するためのガイドです。
Jin Ling
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.