Как классифицировать и табулировать ответы в свободной форме на вопрос в опросе? - PullRequest
2 голосов
/ 20 мая 2009

Я хочу проанализировать ответы на веб-опрос ( Git User's Survey 2008 , если кто-то заинтересован). Некоторые из вопросов были в свободной форме, например, «Как вы узнали о Git?». С более чем 3000 ответов, анализ этих ответов полностью вручную исключен (особенно из-за того, что в этом опросе довольно много вопросов в свободной форме).

Как я могу сгруппировать эти ответы (вероятно, на основе ключевых слов, использованных в ответе) по категориям, по крайней мере, полуавтоматически (то есть программа может запросить подтверждение), а затем, как составить таблицу (подсчитать количество записей в каждой категории) эти ответы в свободной форме (ответы)? Один ответ может принадлежать более чем одной категории, хотя для простоты можно предположить, что категории являются ортогональными / исключительными.

Что я хотел бы знать, это как минимум ключевое слово для поиска или алгоритм (метод) для использования. Я бы предпочел решения в Perl (или C).


Возможное решение № 1. (частично): байесовская классификация

(добавлено 2009-05-21)

Одним из решений, о котором я подумал, было бы использование чего-то вроде алгоритма (и математического метода за ним) для байесовской фильтрации спама, только вместо одной или двух категорий ("спам" и "ветчина") было бы больше; и сами категории будут создаваться адаптивно / интерактивно.

Ответы [ 4 ]

1 голос
/ 21 мая 2009

В прошлом у меня были такие грубые принудительные вещи с довольно большими корпусами. Lingua :: EN :: Tagger, Lingua :: Stem :: En. Кроме того, Net :: Calais API (к сожалению, поскольку Thomposon Reuters не совсем подходит для работы с открытым исходным кодом) довольно полезен для извлечения именованных объектов из текста. Конечно, как только вы очистите необработанные данные с помощью этого материала, фактическое копирование данных остается за вами. Я был бы склонен подозревать, что подсчеты частоты и небольшая механическая перекрестная проверка выходного сигнала турка будет достаточной для ваших нужд.

1 голос
/ 20 мая 2009

Тебе это не понравится. Но: если вы проводите опрос и включаете много вопросов произвольной формы, лучше подготовиться к их классификации вручную. Если об этом не может быть и речи, почему у вас возникли эти вопросы?

1 голос
/ 21 мая 2009

Текст :: Ngrams + Алгоритм :: Кластер

  1. Создать векторное представление для каждого ответа (например, количество слов), используя Text :: Ngrams .
  2. Кластеризация векторов с использованием Algorithm :: Cluster для определения группировок, а также ключевых слов, соответствующих группам.
0 голосов
/ 20 мая 2009

Ищите общие слова в качестве ключевых слов, но отбрасывайте бессмысленные слова, такие как "the", "a" и т. Д. После этого вы попадаете на естественный язык вещи, которые мне недоступны.

Меня только что осенило, что идеальным решением для этого является AAI (Искусственный искусственный интеллект). Используйте Amazon 100 * * Механический турок . Привязки Perl Net :: Amazon :: MechanicalTurk . По одному центу за ответ с приличным совпадением (скажем, три человека за ответ), что составит около 90 долларов США.

...