2012-04-02 21 views
5

質問に対する回答を記録する任意のテキストボックスを検討します。死ぬ前に何をしたいですか?アイデアの類似性を比較するアルゴリズム(文字列として)

レスポンス文字列(最大長240)のコレクションを使用して、どうか並べ替えてグループ化し、アイデア(this questionに記載されているような文字列の類似性があります)を数えたいと思います。

  1. このようなやり方は他にも良い方法がありますか?
  2. これは文字列の類似性とは異なりますか?
  3. これは正しい質問ですか? 802人は、ほぼ同じことを書いたことを、

ここでの考え方は、人々が何度も何度もテキストボックスに書くことです、と私は一般的に言えば、記述数を提供するために、

+0

802人ですか?あなたは単一の数字をしたいですか?またはパーティション?または重複しているパーティション? – ninjagecko

+0

@ ninjagecko thatsすごい質問です。 1つの番号でパーティションを選択しますか?もしそうなら、なぜですか? – Kristian

+1

それはもっと多くの情報を保存しますが、実際に何をしようとしているかによって異なります。 – ninjagecko

答えて

8

それ文字列の類似性よりもはるかに困難です。

  • は、句読点文字と共通の「ストップワード」を削除するようにいくつかのテキストの書式設定/クリーニング作業を実行し
  • (その使用統計を持つ単語の集合)コーパスを構築から:これは、あなたが最小で何をする必要があるかであります言葉が答えを出す。
  • 各用語の重みを計算します。
  • 各回答から文書ベクトルを構築する(各用語は非常に高次元のユークリッド空間内の次元に対応する)
  • 文書ベクトルに対してクラスタリングアルゴリズムを実行する。

良い統計的自然言語処理の本を読んで、または良い紹介/チュートリアルをGoogleで検索:(WEKAをあなたはおそらく、いくつかのライブラリを見つけることができます(そう用語統計的NLPテキスト分類クラスタリングまたはnltkが気に入っています)あなたが選んだ言語によっては、とにかくライブラリを使用するための概念を理解する必要があります。

2

Latent Semantic Analysis (LSA)さんが関心が行くかもしれません。ここにはa nice introductionです。

潜在意味解析(LSA)は、自然言語処理、特にベクトルセマンティクスの技術であり、一連の文書とその中に含まれる用語との関係を分析する技術であり、条項。 [...]

+2

LSAは、同様の用語をいくつかの深刻な数学的なマジックとマージすることによって次元を縮小する手法です。私は彼が途中でLSAを適用することを検討する前に(最初にドキュメントベクトルを正しく構築し、クラスタリングする)長い道のりがあると思います。 –

1

あなたが望むものは、NLPのオープンな問題です。 @ Aliの答えは、そのアイデアを高いレベルで説明していますが、「すべての回答のドキュメントベクトルを構築する」という部分は本当に難しいものです。そこに含まれる単語のベクトルから文書ベクトルを構築するいくつかの明白な方法があります。加算、乗算、平均化は高速ですが、構文を無視します。 Man bites dogDog bites manは同じ表現を持ちますが、明らかに同じ意味ではありません。Google compositional distributional semantics - 私が知る限り、テキサス州、トレント、オックスフォード、サセックス州の大学に所属し、Googleでこの地域で働いています。

関連する問題