Алгоритм сравнения сходства идей (в виде строк) - PullRequest
5 голосов
/ 03 апреля 2012

Рассмотрим произвольное текстовое поле, в котором записан ответ на вопрос: что вы хотите сделать перед смертью?

Используя набор строк ответов (максимальная длина 240), я бы хотел как-то отсортировать и сгруппировать их и посчитать их по идее (что может быть просто сходством строк, как описано в в этом вопросе ).

  1. Есть ли другой или лучший способ сделать что-то подобное?
  2. Отличается ли это от сходства строк?
  3. Это правильный вопрос?

Идея состоит в том, чтобы люди снова и снова писали в текстовом поле, а я предоставляю число, которое описывает, вообще говоря, что 802 человека написали примерно одно и то же

Ответы [ 3 ]

8 голосов
/ 03 апреля 2012

Это намного сложнее, чем сходство строк.Это то, что вам нужно сделать как минимум:

  • Выполнить некоторые задачи форматирования / очистки текста, такие как удаление знаков препинания и общих «стоп-слов»
  • Создание корпуса (сборник словс их статистикой использования) из ответов на возникающие термины.
  • Рассчитать вес для каждого термина.
  • Построить вектор документа из каждого ответа (каждый термин соответствует измерению в очень высоком измеренииЕвклидово пространство)
  • Запуск алгоритма кластеризации для векторов документов.

Прочитайте хорошую книгу по статистике обработки естественного языка или поищите в Google хорошие введения / учебные пособия (вероятные термины: статистический nlp , классификация текста , кластеризация ) Вероятно, вы можете найти некоторые библиотеки ( weka или nltk в зависимости от)на выбранном вами языке, но вам все равно нужно понимать принципы использования библиотеки.

2 голосов
/ 03 апреля 2012

Скрытый семантический анализ (LSA) может вас заинтересовать.Вот хорошее введение .

Скрытый семантический анализ (LSA) - это метод обработки естественного языка, в частности векторной семантики, для анализа отношений между набором документов и содержащимися в них терминами путем создания набора понятий, связанных сдокументы и условия.[...]

1 голос
/ 04 апреля 2012

То, что вы хотите, очень большая проблема в НЛП. Ответ @ Али описывает идею на высоком уровне, но часть «Построить вектор документа для каждого ответа» является действительно сложной. Существует несколько очевидных способов построения вектора документа из векторов содержащихся в нем слов. Сложение, умножение и усреднение выполняются быстро, но они аффективно игнорируют синтаксис. Man bites dog и Dog bites man будут иметь одинаковое представление, но явно не одно и то же значение. Google compositional distributional semantics - насколько я знаю, в этом районе работают люди из университетов Техаса, Тренто, Оксфорда, Сассекса и Google.

...