Лучшая кластеризация текстовых документов, чем tf/idf и косинусное сходство?

Я пытаюсь сгруппировать поток Twitter. Я хочу поместить каждый твит в группу, посвященную одной и той же теме. Я попытался кластеризовать поток, используя онлайн-алгоритм кластеризации с tf/idf и косинусным сходством, но обнаружил, что результаты довольно плохие.

Основным недостатком использования tf/idf является то, что он группирует документы, похожие по ключевым словам, поэтому полезно идентифицировать только почти идентичные документы. Например, рассмотрим следующие предложения:

1- Веб-сайт Stackoverflow — хорошее место. 2- Stackoverflow — это веб-сайт.

Предыдущие два предложения, скорее всего, будут сгруппированы вместе с разумным пороговым значением, поскольку они имеют много общих ключевых слов. Но теперь рассмотрим следующие два предложения:

1- Веб-сайт Stackoverflow — хорошее место. 2- Я регулярно посещаю Stackoverflow.

Теперь при использовании tf/idf алгоритм кластеризации с треском провалится, потому что они используют только одно ключевое слово, даже если они оба говорят об одной и той же теме.

Мой вопрос: есть ли лучшие методы кластеризации документов?


person Jack Twain    schedule 08.07.2013    source источник
comment
@ThomasJungblut хорошо, TF-IDF должен быть схемой взвешивания, которая уже придает больший вес релевантным ключевым словам. Если понять, что проблема в том, что твиты — это всего лишь крошечные текстовые фрагменты, вы не можете ожидать, что сходство будет работать на них очень хорошо, кроме почти идентичности. Большинство твитов — это даже не полные предложения, так что НЛП, скорее всего, тоже не сработает.   -  person Has QUIT--Anony-Mousse    schedule 09.07.2013
comment
Одна вещь, на которую стоит обратить внимание при работе с LSI/LDA/NMF и т. д., — это дрейф темы. Обучение модели на известном наборе данных даст хорошие результаты, если конвейер выполнен неправильно. Если вы затем примените свою модель к совершенно невидимому набору данных, вы можете увидеть значительное снижение производительности из-за подбора исходных обучающих данных. Поскольку текст в Твиттере очень короткий, с представлением придется немного повозиться, так как текста может не хватить для правильного обучения модели.   -  person Steve    schedule 09.07.2013
comment
@steve есть какие-нибудь решения для этого?   -  person Jack Twain    schedule 20.07.2013
comment
@guckogucko имеет ли какое-либо влияние пользователь, от которого он исходит?   -  person Steve    schedule 20.07.2013
comment
@стив, что ты имеешь в виду?   -  person Jack Twain    schedule 21.07.2013
comment
Будете ли вы учитывать только текст твита, или это человек, или у вас будет информация о предыдущих твитах пользователей?   -  person Steve    schedule 22.07.2013


Ответы (3)


По моему опыту, косинусное сходство для векторов скрытого семантического анализа (LSA/LSI) работает намного лучше, чем необработанный tf-idf для кластеризации текста, хотя Признаюсь, я не пробовал это на данных Twitter. В частности, он решает проблему разреженности, с которой вы сталкиваетесь, когда документы просто не содержат достаточно общих терминов.

Тематические модели, такие как LDA, могут работать еще лучше.

person Fred Foo    schedule 09.07.2013
comment
методы кластеризации тематических моделей? или особенности представления? - person Jack Twain; 09.07.2013
comment
@guckogucko: представления функций. - person Fred Foo; 09.07.2013

Как упоминалось в других комментариях и ответах. Использование LDA может дать хорошие веса tweet->topic.

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

Хотя это зависит от тренировочного набора, LDA может легко объединять твиты с переполнением стека, переполнением стека и переполнением стека в одну и ту же тему. Однако «моя стопка ящиков вот-вот переполнится» может вместо этого перейти в другую тему о ящиках.

Другой пример: твит со словом Apple может относиться к разным темам (компания, фрукты, Нью-Йорк и другие). LDA будет смотреть на другие слова в твите, чтобы определить применимые темы.

  1. «Стив Джобс был генеральным директором Apple» явно про компанию
  2. "Я ем самое вкусное яблоко" явно про фрукт
  3. «Я собираюсь в большое яблоко, когда я еду в США», скорее всего, о посещении Нью-Йорка.
person ilikedata    schedule 12.07.2013

Длинный ответ:

TfxIdf в настоящее время является одним из самых известных методов поиска. Что вам нужно, так это предварительная обработка от Natural Langage Processing (NLP). Существует множество ресурсов, которые могут помочь вам с английским языком (например, библиотека nltk на python).

Вы должны использовать анализ НЛП как для ваших запросов (вопросов), так и для ваших документов перед индексацией.

Дело в том, что хотя tfxidf (или tfxidf^2, как в lucene) хорош, вы должны использовать его на аннотированном ресурсе с металингвистической информацией. Это может быть сложно и требует обширных знаний о вашей основной поисковой системе, анализе грамматики (синтаксисе) и предметной области документа.

Короткий ответ. Лучше использовать TFxIDF с облегченными грамматическими аннотациями NLP, а также переписать запрос и индексировать.

person Galigator    schedule 09.07.2013