2012-04-02 3 views
5

Рассмотрим произвольное текстовое поле, в котором записывается ответ на вопрос, что вы хотите сделать, прежде чем умереть?Алгоритм для сравнения подобия идей (как строки)

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

  1. Есть ли другой способ или что-то вроде этого?
  2. Это любое другое, чем строковое сходство?
  3. Правильно ли задан вопрос?

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

+0

802 человека? вам нужен один номер? или раздел? или раздел, который похож на перекрытие? – ninjagecko

+0

@ninjagecko это отличный вопрос. Вы бы выбрали разделы по одному номеру? если да, то почему? – Kristian

+1

хорошо хранит больше информации, но это будет зависеть от того, что вы действительно пытаетесь сделать. – ninjagecko

ответ

8

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

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

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

2

Latent Semantic Analysis (LSA) может вас заинтересовать. Вот a nice introduction.

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

+2

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

1

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

Смежные вопросы