1

チャットルームで人々がチャットしていることを取り上げて、次の情報検索を実行したいと思います。

  1. キーワードを取得する
  2. すべてのノイズワードを無視し、主に動詞を名詞にします
  3. 同じキーワードを多くの形式で保存しないように、キーワードのステミングを実行します
  4. 同義語キーワードがすでにストレージに保存されている場合は、新しいキーワードの代わりに既存の同義語を使用する必要があります
  5. 処理されたキーワードを、それが配置されたチャットメッセージとそれを発声したユーザーを参照して永続ストレージに保存します

この処理された情報を使用して、チャットルームで人々が何について話しているのかをゆっくりと把握し、これを使用して、これらのキーワードに基づいて関連するチャットルームなどを自動的に検索します。

あなたへの私の質問は次のとおりです:上記を行うための最良のC / C ++または.NETツールは何ですか?

4

1 に答える 1

2

@larsmansのコメントに部分的に同意します。実際には、あなたの質問はあなたが投稿した質問よりも実際に複雑かもしれません。

ただし、質問/問題を単純化すると、質問に対する答えはLuceneの実装の1つである可能性があります:Lucene(Java)、Lucene.Net(C#)、またはCLucene(C ++)。

あなたの質問のポイントに従う:

Luceneは、文字列トークナイザーを使用してポイント1を処理します(独自にカスタマイズまたは使用できます)。ポイント2では、StopFilterのようなTokenFilterを使用して、 Luceneが使用してはならないストップワード( "the"、 "a"、 "an" ...)のリストを読み取ることができます。ポイント3では、PorterStemFilterを使用できます。ポイント4は少し注意が必要ですが、カスタマイズされたTokenFilterを使用して実行できます。ポイント1から4は、アナライザーが担当する分析/トークン化フェーズで実行されます。

ポイント5に関しては、Luceneでフィールド付きのドキュメントを保存できます。ドキュメントには、任意の数のフィールドの組み合わせを含めることができます。したがって、すべてのテキストを連結したチャットルームごとに1つのドキュメントを作成し、ドキュメントの別のフィールドに、それが抽出されたチャットルームを参照させることができます。比較できるLuceneドキュメントの束ができあがります。そのため、現在のチャットルームを他のチャットルームと比較して、現在のチャットルームに似ているものを確認できます。

@larsmansが言ったように、必要なのがチャットロムを説明するための最良のキーワードのセットである場合、あなたのニーズは情報抽出/自動要約/トピックスポッティングタスクに近いです。ただし、解析/トークン化フェーズでは引き続きLuceneを使用できます。

* Javaドキュメントを参照しましたが、CLuceneとLucene.NetのAPIは非常に似ているため、違いを理解するのにそれほど問題はありません。

于 2011-09-20T13:25:00.787 に答える