如何在调查中对问题的自由形式答案进行分类和列表?

时间:2009-05-20 13:37:46

标签: statistics analysis survey freeform

我想分析网络调查的答案(Git User's Survey 2008,如果有兴趣的话)。有些问题是自由形式的问题,比如“你是怎么听说Git的?”。有超过3,000份回复完全手工分析这些回复是不可能的(特别是在这次调查中存在相当多的自由形式问题)。

如何将这些回复(可能基于响应中使用的关键词)分组至少半自动(即程序可以要求确认),以及后来如何列表(计算每个类别中的条目数)那些自由形式的回复(答案)?一个答案可以属于多个类别,尽管为了简单起见,可以假设类别是正交/独占的。

我想知道的是至少要搜索关键字,要么使用算法(方法)。我更喜欢 Perl (或C)中的解决方案。


可能的解决方案否1.(部分):贝叶斯分类

(已添加2009-05-21)

我想到的一个解决方案是使用算法(以及它背后的数学方法)进行贝叶斯垃圾邮件过滤,而不是一两个类别(“垃圾邮件”和“火腿”)会有更多;和类别本身将自适应/交互式创建。

4 个答案:

答案 0 :(得分:1)

你不会喜欢这个。但是:如果您进行调查并且包含大量自由格式问题,则最好准备手动对其进行分类。如果这是不可能的,你为什么一开始就有这些问题?

答案 1 :(得分:1)

Text :: Ngrams + Algorithm :: Cluster

  1. 使用Text::Ngrams为每个答案(例如字数)生成一些矢量表示。
  2. 使用Algorithm::Cluster对向量进行聚类,以确定分组以及与这些组对应的关键字。

答案 2 :(得分:1)

我过去曾经用相当大的语料库来强迫这样的东西。 Lingua :: EN :: Tagger,Lingua :: Stem :: En。此外,Net :: Calais API(不幸的是,因为Thomposon Reuters并不完全是开源友好的)对于从文本中提取命名实体非常有用。当然,一旦你用这些东西清理了原始数据,实际的数据修改就由你决定了。我倾向于怀疑频率计数和输出的机械特克斯交叉验证是否足以满足您的需求。

答案 3 :(得分:0)

将常用字词视为关键字,但通过无意义的字词,例如“the”,“a”等,然后进入natural language以外的东西。

我突然意识到,完美的解决方案是AAI(人工智能)。使用亚马逊的Mechanical Turk。 Perl绑定是Net::Amazon::MechanicalTurk。每回复一分钱,有一个相当不错的重叠(每个回复说三个人),大约90美元。