Скрытое выделение Дирихле, подводные камни, советы и программы - PullRequest
21 голосов
/ 10 октября 2008

Я экспериментирую с Скрытое распределение Дирихле для устранения неоднозначности и назначения темы, и я ищу совет.

  1. Какая программа является «лучшей», где лучшая - это какая-то комбинация из самых простых в использовании, лучшей предварительной оценки, быстрой
  2. Как мне учесть мою интуицию по поводу актуальности. Допустим, я знаю, что знаю, что некоторые элементы в корпусе действительно относятся к одной категории, как и все статьи одного и того же автора. Могу ли я добавить это в анализ?
  3. Какие-нибудь неожиданные ловушки или советы, которые я должен знать перед тем, как приступить к работе?

Я бы предпочел, чтобы R или Python были для любой программы, но я ожидаю (и принимаю), что буду иметь дело с C.

Ответы [ 5 ]

17 голосов
/ 16 апреля 2010
  1. http://mallet.cs.umass.edu/ является ИМХО самым удивительным пакетом LDA типа plug-n-play. Он использует выборку Гиббса для оценки тем и имеет действительно простой интерфейс командной строки с множеством дополнительных звонков. -n-свистки (несколько более сложных моделей, оптимизация гиперпараметров и т. д.)

  2. Лучше всего позволить алгоритму делать свою работу. Могут быть варианты LDA (и pLSI, и т. Д.), Которые позволяют вам делать что-то наполовину под надзором ... Я пока не знаю ни одного.

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

6 голосов
/ 11 ноября 2011
  1. Вы упомянули предпочтение R, вы можете использовать два пакета topicmodels (медленно) или lda (быстро). Python имеет deltaLDA , pyLDA , Gensim и т. Д.

  2. Моделирование тем с указанными темами или словами сложно, "из коробки", David Andrzejewski имеет некоторый код на Python, который, кажется, делает это. Здесь есть реализация CDA под управлением LDA здесь . И множество статей по смежным подходам ( DiscLDA , с маркировкой LDA , но не в простой в использовании форме, для меня все равно ...

  3. Как говорит @ adi92, удаление стоп-слов, пробелов, чисел, знаков препинания и переноса всех слов значительно улучшает ситуацию. Одна из возможных ловушек заключается в неправильном (или неуместном) количестве тем. В настоящее время нет простой диагностики того, сколько тем оптимально для копруса заданного размера и т. Д. В MALLET (самый быстрый) доступно несколько показателей качества темы *, которые очень удобны.

1 голос
/ 11 октября 2008

Для такого анализа я использовал LingPipe: http://alias -i.com / lingpipe / index.html . Это библиотека Java с открытым исходным кодом, части которой я использую напрямую или портирую. Чтобы включить ваши собственные данные, вы можете использовать классификатор, такой как наивный метод Байеса, совместно. мой опыт работы со статистической НЛП ограничен, но обычно он проходит цикл настройки классификаторов, обучения и просмотра результатов, настройки.

1 голос
/ 11 октября 2008

В дополнение к обычным источникам кажется, что наиболее активная область, говорящая об этом, находится на list-models themesserv . Из моего первоначального опроса самый простой для понимания пакет - пакет LDA Matlab .

Это совсем не легкий материал, поэтому я не удивлен, что на нем трудно найти хорошие ресурсы.

0 голосов
/ 21 апреля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...