web-dev-qa-db-ja.com

JavaまたはPython自然言語処理用

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

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

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

更新済み

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

110
Jin Ling

NLPのJava vs Pythonは、好みまたは必要性です。会社/プロジェクトに応じて、どちらか一方を使用する必要があり、多くの場合、プロジェクトを率いているのでなければ選択の余地はあまりありません。

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

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

Javaには、他にもたくさんありますが、別のリストがあります:

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

GATE vs UIMA vs 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


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

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

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

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


最近の(2015) NLPでのディープラーニングツナミ では、おそらく以下を考慮することができます: https://en.wikipedia.org/wiki/Comparison_of_deep_learning_software

ディープラーニングツールを非好意/中立性から除外することは避けます。


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

131
alvas

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

Python

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

また、PythonベースのGoogleのNatural Language Toolkitプロジェクトから生まれた優れたコードもいくつかあります。このコードへのリンクは、ここで GitHubで にあります。

Java

最初に確認する場所は、スタンフォード大学の Natural Language Processing Group です。そこで配布されるソフトウェアはすべてJavaで記述されています。最近のすべてのディストリビューションには、Oracle Java 6+またはOpenJDK 7+が必要です。配布パッケージには、コマンドライン呼び出しのコンポーネント、jarファイル、Java AP​​I、およびソースコードが含まれます。

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

42
Nathaniel Payne