Я экспериментирую с Скрытое размещение Дирихле для устранения неоднозначности и назначения темы, и мне нужен совет.
Я бы предпочел, чтобы для любой программы были интерфейсы R или Python, но я ожидаю (и принимаю), что буду иметь дело с C.





В дополнение к обычныйисточники, похоже, наиболее активная область, о которой говорят об этом, находится на список тем-моделей. Судя по моему первоначальному обзору, самый простой для понимания пакет - это Пакет LDA Matlab.
Это совсем не легкий материал, поэтому я не удивлен, что по нему сложно найти хорошие ресурсы.
Для такого рода анализа я использовал LingPipe: http://alias-i.com/lingpipe/index.html. Это библиотека Java с открытым исходным кодом, части которой я использую напрямую или портирую. Чтобы включить свои собственные данные, вы можете использовать классификатор, например, наивный байесовский класс в сочетании. мой опыт статистического nlp ограничен, но обычно он следует за циклом настройки классификаторов, обучения, просмотра результатов и настройки.
http://mallet.cs.umass.edu/ - ИМХО, самый крутой LDA-пакет plug-n-play. Он использует выборку Гиббса для оценки тем и имеет действительно простой интерфейс командной строки с множеством дополнительных наворотов (несколько более сложных моделей, оптимизация гиперпараметров и т. д.)
Лучше позволить алгоритму делать свою работу. Могут быть варианты LDA (и pLSI, и т. д.), Которые позволяют вам делать что-то вроде полу-контролируемого ... На данный момент я не знаю ни одного.
Я обнаружил, что удаление стоп-слов и других очень часто встречающихся слов, похоже, значительно улучшило качество моих тем (оценивалось по основным словам каждой темы, а не по какой-либо строгой метрике). Я предполагаю, что стемминг / лемматизация поможет, поскольку Что ж.
я второй это. Lda Маллета использует разреженную структуру данных и распределенное обучение, так что это очень быстро. включение оптимизации гиперпараметров даст лучший результат, imo.
Вы упомянули о предпочтении R, вы можете использовать два пакета: тематические модели (медленный) или lda (быстрый). В Python есть deltaLDA, pyLDA, Gensim и т. д.
Тематическое моделирование с указанными темами или словами сложно из коробки, Давид Анджеевски имеет некоторый код Python, который, кажется, делает это. Существует реализация C++ контролируемого LDA здесь. И множество статей о связанных подходах (DiscLDA, Маркированный LDA, но не в простой в использовании форме, по крайней мере для меня ...
Как говорит @ adi92, удаление игнорируемых слов, пробелов, чисел, знаков препинания и выделения корней - все это значительно улучшает ситуацию. Одна из возможных ловушек - неправильное (или несоответствующее) количество тем. В настоящее время нет прямой диагностики того, сколько тем является оптимальным для копруса заданного размера и т. д. В MALLET (самый быстрый) доступно несколько меры качества темы, которые очень удобны.
Пол Минейро писал о реализации полууправляемого алгоритма LDA на machinedlearnings.com/2011/04/semi-supervised-lda-gotits.h tml