2

Web調査(興味がある場合はGit User's Survey 2008 )への回答を分析したいと思います。いくつかの質問は、「Gitについてどのように知りましたか?」などの自由形式の質問でした。3,000を超える回答があり、それらの回答を完全に手作業で分析することは問題外です(特に、この調査にはかなりの自由形式の質問があります)。

それらの返信を(おそらく応答で使用されたキーワードに基づいて)少なくとも半自動でカテゴリにグループ化するにはどうすればよいですか(つまり、プログラムは確認を求めることができます)、後でそれらを表にまとめる方法(各カテゴリのエントリ数を数える)-フォームの返信(回答)?1つの回答が複数のカテゴリに属する​​場合がありますが、簡単にするために、カテゴリは直交/排他的であると想定できます。

私が知りたいのは、少なくとも検索するキーワード、または使用するアルゴリズム(メソッド)です。私はPerl(またはC)のソリューションを好みます。


考えられる解決策1.(部分的):ベイズ分類

(2009年5月21日追加)

私が考えた解決策の1つは、ベイジアンスパムフィルタリングにアルゴリズム(およびその背後にある数学的方法)のようなものを使用することです。1つまたは2つのカテゴリ(「スパム」と「ハム」)の代わりに、さらに多くのカテゴリがあります。カテゴリ自体は、適応的/インタラクティブに作成されます。

4

4 に答える 4

1

あなたはこれを好きになるつもりはありません。ただし、調査を行い、自由形式の質問を多数含める場合は、それらを手動で分類する準備をしておくことをお勧めします。それが問題外であるなら、なぜあなたはそもそもそれらの質問をしたのですか?

于 2009-05-20T13:46:50.227 に答える
1

テキスト::Ngrams + アルゴリズム::クラスター

  1. Text::Ngramsを使用して、各回答のベクトル表現 (単語数など) を生成します。
  2. Algorithm::Clusterを使用してベクトルをクラスタ化し、グループ化とグループに対応するキーワードを決定します。
于 2009-05-20T21:11:02.780 に答える
1

私は過去に、かなり大きなコーパスを使ってこのようなものを力ずくで作ったことがあります。Lingua::EN::Tagger、Lingua::Stem::En。また、Net::Calais API は (残念ながら、Thomposon Reuters は正確にはオープン ソースに適していないため)、テキストから名前付きエンティティを抽出するのに非常に役立ちます。もちろん、このようなもので生データをクリーンアップしたら、実際のデータ変更はあなた次第です。頻度カウントと、出力の機械的なターク交差検証で十分であると思われます。

于 2009-05-21T01:26:18.910 に答える
0

キーワードとして一般的な単語を探しますが、「the」、「a」などの意味のない単語を削除します。その後、私を超えた自然言語に取り掛かります。

これに対する完璧な解決策はAAI(人工人工知能)であることに気づきました。AmazonのMechanicalTurkを使用してください。PerlバインディングはNet::Amazon::MechanicalTurkです。返信ごとに1ペニーで、まともなオーバーラップ(たとえば、返信ごとに3人の人間)を使用すると、約90米ドルになります。

于 2009-05-20T13:45:28.717 に答える