4

分析する必要がある生のテキストを含むデータベースがあります。たとえば、何億もの個々の Web ページのタイトル タグを収集し、トピックに基づいてそれらをクラスタ化しました。現在、各トピック クラスタのサブセットに対して追加のテストを実行することに関心があります。問題は 2 つあります。まず、すべてのテキストをメモリに収めて評価することはできません。次に、これらの分析のいくつかを並行して実行する必要があるため、サブセットをメモリに収めることができたとしても、多くのサブセットをメモリに収めることはできません。

私はジェネレーターを扱ってきましたが、多くの場合、既に読み込まれて評価されたデータの行に関する情報を知る必要があります。

私の質問は次のとおりです。メモリに収まらないデータを処理および分析するための最良の方法は何ですか。データは何らかのデータベースから抽出する必要があります (現在は mysql ですが、すぐにより強力なソリューションに切り替える可能性があります)。

Pythonでデータを扱うソフトウェアを構築しています。

ありがとうございました、

編集

私はこれについて一日中調査し、ブレインストーミングを行い、私の考えや発見を投稿し続ける予定です. ご意見やアドバイスをお寄せください。

アイデア 1: 単語と n-gram をトークン化し、ファイルに保存します。データベースから取得した文字列ごとに、既存のファイルのトークンを使用してトークン化します。トークンが存在しない場合は作成します。単語トークンごとに、文字列内のすべての単語の単一表現が存在するまで、右から左に結合します。縮小されたトークンで構成される既存のリスト (メモリに収まる) を検索して、潜在的な一致と類似を見つけます。削減された各トークンには、トークン カテゴリを示す識別子が含まれます。縮小されたトークン (単語トークンの組み合わせによって作成されたトークン) が、関心のあるトークン化された文字列に対してカテゴリ的に一致するが直接一致しないことが判明した場合、縮小されたトークンは対応するトークンに分解され、単語トークンが単語ごとに比較されます。関心のある文字列へのトークン。

これを行うことができるライブラリまたはモジュールが既に存在するかどうかはわかりません。また、それからどれだけの利益が得られるかもわかりません。ただし、私の優先事項は次のとおりです。1) メモリを節約する、2) ランタイムを心配する。考え?

編集2

Hadoop は間違いなくこの問題の解決策になるでしょう。Python と Hadoop の自然言語処理に関する優れたリソースをいくつか見つけました。下記参照:

  1. http://www.cloudera.com/blog/2010/03/natural-language-processing-with-hadoop-and-python
  2. http://lintool.github.com/MapReduceAlgorithms/MapReduce-book-final.pdf
  3. http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python
  4. https://github.com/klbostee/dumbo/wiki/Short-tutorial

ご協力いただきありがとうございます!

4

2 に答える 2

3

Map/Reduceは、この目的のために作成されました。

最適なマップ削減エンジンは Hadoop ですが、学習曲線が高く、価値があるためには多くのノードが必要です。これが小規模なプロジェクトの場合は、MongoDBを使用できます。これは非常に使いやすいデータベースであり、Javascript を使用する内部マップ削減エンジンが含まれています。map reduce フレームワークは非常にシンプルで習得が容易ですが、Hadoop を使用して JDK で取得できるすべてのツールが不足しています。

警告: MongoDB のマップ削減エンジンでは、一度に 1 つのマップ削減ジョブしか実行できません。これは、チェーン ジョブまたは中規模のデータセット (<100GB) には問題ありませんが、Hadoop の並列性が欠けています。

于 2012-07-17T16:27:05.407 に答える
0

現在は mysql ですが、間もなくより強力なソリューションに切り替える可能性があります。

時間を無駄にしないでください。ほとんどのタイプのタスクでは、チューニングされた MySQL が最適なソリューションです。

膨大な量のデータを処理するには、iteratools を使用する基本的な Python イテレータを構築します

データの反復方法について。それはあなたのアルゴリズムに依存します。

于 2012-07-17T15:47:45.167 に答える