10

検索、分類/分類、クラスタリングなどの多くのテキスト処理タスクを行う新しいプロジェクトを間もなく開始します。

処理が必要なドキュメントは膨大な量になります。おそらく数百万のドキュメント。初期処理の後、複数の新しいドキュメントで毎日更新できる必要もあります。

これを行うために Python を使用できますか、それとも Python は遅すぎますか? Javaを使用するのが最善ですか?

できれば、最近使っている Python が好きです。さらに、コーディング部分をはるかに速く仕上げることができます。しかし、それはすべて Python の速度に依存します。私は数千のドキュメントしかない小規模なテキスト処理タスクに Python を使用しましたが、どの程度スケールアップするかはわかりません。

4

4 に答える 4

18

どちらも良いです。Java では、テキスト処理に多くの労力が費やされています。スタンフォード大学のテキスト処理システムであるOpenNLPUIMA、およびGATEが大きな役割を果たしているようです (いくつか欠けていることはわかっています)。StanfordNLP モジュールは、数分間遊んだだけで、大規模なコーパスで文字通り実行できます。ただし、大きなメモリ要件があります (私が使用していたときは 3 GB 程度)。

NLTKGensimPattern、およびその他の多くの Python モジュールは、テキスト処理に非常に優れています。それらのメモリ使用量とパフォーマンスは非常に合理的です。

テキスト処理は非常に簡単にスケーラブルな問題であるため、Python はスケールアップします。ドキュメントの解析/タグ付け/チャンク/抽出時に、マルチプロセッシングを非常に簡単に使用できます。テキストを任意の種類の特徴ベクトルに取得したら、numpy 配列を使用できます。numpy がいかに優れているかは誰もが知っています...

私は NLTK で学び、Python は開発時間を短縮するのに大いに役立ったので、まずそれを試してみることをお勧めします。彼らには非常に役立つメーリング リストもあります。参加することをお勧めします。

カスタム スクリプトがある場合は、それらがPyPyでどの程度うまく機能するかを確認することをお勧めします。

于 2011-05-17T13:18:16.440 に答える
9

このような質問に答えようとせずに答えることは非常に困難です。では、なぜあなたはしないのですか

  1. 困難な操作となるものを把握する
  2. それを実装します(つまり、機能させることができる最も簡単で迅速なハックを意味します)
  3. 大量のデータで実行し、かかる時間を確認します
  4. 遅すぎるかどうかを判断する

私は過去にこれを行ったことがあり、何かが何かに対して十分に機能するかどうかを確認する方法です.

于 2011-05-17T11:53:35.330 に答える
3

簡単に書いてみましょう。人々が抱えるプログラミングの最大の欠点は、時期尚早の最適化です。プロジェクトに取り組み、それを書き、機能させます。次に戻ってバグを修正し、最適化されていることを確認します。x 対 y の速度と y は x よりも優れていると主張する人がたくさんいるでしょうが、結局のところ、それは単なる言語です。それは言語が何であるかではなく、どのようにそれを行うかです。

于 2011-05-17T11:49:40.513 に答える
2

評価する必要があるのは言語ではありませんが、その言語で利用できるクラスタリング、データ ストレージ/検索などのためのフレームワークとアプリ サーバーです。

jython を使用し、高負荷システム用のすべての Java エンタープライズ テクノロジを使用し、Python でテキスト解析を行うことができます。

于 2011-05-17T11:51:13.907 に答える