1

ドキュメント クラスタリングの問題に取り組んでいます。そのためには、ドキュメントのデータセットの単語頻度を取得する必要があります。

現時点では、簡単なアプローチを使用しています。単語テーブルを作成し、データセットに含まれるドキュメントの数と同じ数の列を追加して、次のようなものを取得します

word | document1 | document2 | ... | document n |

このアプローチは、多少遅くても、小さなデータセット (100 個未満のドキュメントを含む) で機能します。問題は、それぞれ 700 以上のドキュメントを含む巨大なドキュメントを処理する必要があることです。これを処理するためのよりスマートな方法が必要であると感じています。問題は、他に何も考えられないことです。

問題は、ドキュメントごとの単語の頻度を効率的に追跡するにはどうすればよいかということです。

PS: ドキュメントあたりの単語数またはデータセットのサイズはどちらも不明ですが、合理的な上限はドキュメントあたり 2000 語、データセットあたり 2000 ドキュメントであると考えてください。

4

3 に答える 3

1

あなたは、MySQL、SQL Server、Oracle などのデータベースの FULL TEXT 機能ではなく、独自のアルゴリズムの開発に実際に関心があると思います。

ドキュメント マトリックスという用語 (このデータ構造で私が知っている用語) は、DocumentID と TermID の 2 つの列をキーとして格納されます。

ドキュメント内の用語の数、ドキュメント内の場所などの追加の列がある場合がありますが、これら 2 つのキーは標準的な方法です。

これらは通常、ドキュメントと用語のテーブルにリンクします。ドキュメント テーブルには通常、ドキュメント内の用語の数、場所 (またはテキスト自体)、およびその他の情報が含まれます。用語テーブルには通常、用語の重みと、類義語リスト、品詞などの他の情報が含まれます。

次に、新しいドキュメントを追加する場合は、用語を処理して追加するだけです。新しい用語の追加 . . . そのためには、用語の履歴ドキュメントを処理する必要がありますが、それでも非常に簡単です。

于 2013-02-26T16:04:34.420 に答える
0

次のようなデータ構造を作成します。

  • ドキュメントテーブル:DocumentId(PK)、DocumentName
  • Word-Table:WordId(PK)、DocumentId(FK)、WordName

そうすれば、いくつかの集計クエリを実行してデータについてレポートできます。

于 2013-02-26T16:04:41.110 に答える
0

このためのよりリレーショナルなテーブル設計は次のようになります。

CREATE TABLE DOC_WORD_COUNTS AS
(
    DocID As INT Not NULL,
    Word As VARCHAR(20) Not NULL,
    Frequency As INT Not NULL
) 

次に、(DocID + Word) を主キーにします。また、DocID を含むドキュメントの情報を格納する別のテーブルが必要になります。

于 2013-02-26T16:02:22.187 に答える