0

約 150 万のテキスト ドキュメントのコーパスをスキャンし、長さが 1 ~ 4 の任意の単語セットを、約 180 万のフレーズの語彙と照合する必要があります。

各テキスト ファイルから単語 n-gram を抽出することは問題ではなく、非常に高速です。ボトルネックは語彙に対するチェックにあります。

私の語彙は MySQL テーブルに格納され、適切にインデックスが作成され、次のように各フレーズをクエリしています。

SELECT (1) FROM vocab WHERE phrase=%s;

全体が非常にゆっくりと実行されます。最適化のアイデアはありますか?

ありがとう!

4

1 に答える 1

2

私の提案は、語彙全体を一度メモリに読み込むことです。そうすれば、それに対していくつかのクエリをすぐに実行できるようになります。あなたはそれを asetまたは adictに入れることができます。または、空想が好きなら、ブルームフィルターを使用して含まれているかどうかを確認することもできます. 私はこの点に偏っていますが、そのルートを選択する場合はpybloomfiltermmapをお勧めします。

ブルーム フィルターを使用する場合の利点の 1 つは、a をメモリに格納するよりもはるかにコンパクトであり、set非常に高速であることです。偽陽性率には限界があり、実際には許容レベルに制御できます。

于 2013-03-27T18:48:22.213 に答える