ドキュメントクラスタリングに期待値最大化アルゴリズムを実装しようとしています。2つのドキュメント間の類似性を見つけるためにLuceneTermVectorsを使用することを計画しています。ナイーブベイズを使用するEMアルゴリズムには、多変量モデルと多項モデルの2種類があります。簡単に言うと、多項モデルはドキュメント内のさまざまな単語の頻度を使用しますが、多変量モデルはドキュメント内に単語が存在するかどうかの情報(ブールベクトル)を使用します。
Luceneの用語ベクトルには、現在のドキュメントに存在する用語とその頻度が格納されていることを私は知っています。これはまさに多項モデルに必要なものです。
ただし、多変量モデルには次のものが必要です。特定の用語の有無を格納するベクトル。したがって、すべてのドキュメントのすべての用語は、このベクトルによって処理される必要があります。
例として:
doc1:フィールドCONTENTには次の用語があります:これは喜びの世界です。
doc2:フィールドCONTENTには次の用語があります:この驚くべき世界は皮肉な人々でいっぱいです。
今、私が必要とするベクトルは
<これは素晴らしい完全な皮肉な人々の喜びの世界です>(それはすべての文書のすべての単語を含んでいます)
doc1の場合、このベクトルの値は<1 1 1 1 1 1 0 000>です。
doc2の場合、このベクトルのvakueは<1 1 0 1 0 0 1 111>です。
Luceneでそのようなブールベクトルを生成する方法はありますか?