4

約 10,000 レコードを持つ MySQL データベースを構築しています。各レコードには、テキスト ドキュメント (ほとんどの場合、数ページのテキスト) が含まれます。データベース全体であらゆる種類の n-gram カウントを実行したいと考えています。多数のテキスト ファイルを含むディレクトリに対して必要なアルゴリズムを既に Python で記述していますが、そのためにはデータベースから 10,000 個のテキスト ファイルを抽出する必要があります。これにはパフォーマンスの問題があります。

私は MySQL の新人なので、n-gram 分析を行う組み込み機能があるかどうか、またはそれを行う優れたプラグインがあるかどうかはわかりません。私の分析では少なくとも 4 グラム (できれば 5 グラム) まで上げる必要があることに注意してください。また、n-gram カウントを行う前に、テキスト ドキュメントからストップワードを削除する機能も必要です。

コミュニティからのアイデアはありますか?

ありがとう、

ロン

4

2 に答える 2

1

私の提案は、lucene/solr のような専用の全文検索インデックス プログラムを使用することです。これは、この種のことに対して、より豊富で拡張可能なサポートを提供します。セットアップするには少し学ぶ必要がありますが、MySQL でカスタマイズするのが難しいレベルでいじりたいようです。

于 2011-09-21T20:35:03.513 に答える
0

本当に時期尚早に最適化したい場合は、;) Python を C に変換してから、薄いmysql UDF ラッパー コードでラップすることができます。

ただし、一度に 1 つずつドキュメントをロードし、それらに対して Python スクリプトを実行して、n-gram の mysql テーブルに入力することを強くお勧めします。現時点ですべての釘のハンマーはDjangoです。それはORMで、mysql テーブルとの対話とそれらの対話の最適化を簡単にします。私はそれを使用して、本番サイトの数百万のレコードデータベースでpythonで統計を行っています1 秒以内に大量のデータを返す必要があります。また、Python ORM を使用すると、postgre など、mysql よりも優れたものを見つけた場合に、データベースを簡単に切り替えることができます。最良の部分は、アプリのパフォーマンスのすべての側面 (python の実行、mysql のロード/保存、メモリ/スワップ) を監視するための多数の python および django ツールがあることです。そうすれば、正しい問題に取り組むことができます。順次大量の mysql 読み取りが速度低下の原因ではない可能性があります...

于 2013-03-30T19:06:16.087 に答える