о выводе lda - PullRequest
       59

о выводе lda

4 голосов
/ 07 декабря 2010

Прямо сейчас я использую инструмент моделирования тем LDA из пакета MALLET, чтобы определить темы в моих документах. Сначала все хорошо, я получил 20 тем. Тем не менее, когда я пытаюсь вывести новый документ, используя модель, результат выглядит несколько странно.

Например, я намеренно управляю своей моделью над документом, который я создал вручную, который содержит только ключевые слова из одной из тем «FLU», но распределение тем, которые я получил, составляло <0.1 для каждой темы. Затем я пробую то же самое на одном из уже отобранных документов, который имеет высокий балл 0,7 по одной из тем. Снова произошло то же самое. </p>

Может кто-нибудь дать подсказку по причине?

Пробовал спрашивать в списке рассылки MALLET, но, видимо, никто не ответил.

Ответы [ 3 ]

2 голосов
/ 07 декабря 2010

Я тоже очень мало знаю о МАЛЕТЕ, но в документах об этом говорится ...

Вывод темы

- имя файла логического вывода [FILENAME] Создать инструмент создания тематического вывода на основе текущая, обученная модель. Использовать Команда MALLET bin / mallet infer-themes --help, чтобы получить информацию об использовании вывода темы.

Обратите внимание, что вы должны убедиться, что новые данные совместимы с вашим данные обучения. Используйте опцию --use-pipe-from [ФАЙЛ ОБУЧЕНИЯ МАЛЕТАМ] в бункере / молотке команды MALLET import-file или import-dir, чтобы указать учебный файл.

Может, ты забыл это сделать? Мне кажется, что данные, на которых вы тренируетесь, не совпадают с форматом данных, на которых вы тестируете.

2 голосов
/ 02 сентября 2011

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

Вот пример для чтения в учебных документах:

ImportExample importerTrain = new ImportExample();//this is an example class in MALLET to import docs.   
InstanceList training= importer.readDirectory(new File(trainingDir));
training.save(new File(outputFile));

При чтении документов в выводе темы:

InstanceList training = InstanceList.load(new File(outputFile));
Pipe pipe = training.getPipe();
ImportExample importer = new ImportExample();
importer.pipe = pipe; //use the same pipe
InstanceList testing = importer.readDirectory(new File(testDir));

Я получил подсказку по одному опубликованному вопросув их архиве: http://thread.gmane.org/gmane.comp.ai.mallet.devel/829

1 голос
/ 07 декабря 2010

Раскрытие информации: я знаком с методами и математикой, обычно используемыми для вывода темы, но я имею минимальное воздействие на МАЛЕТ.
Я надеюсь, что эти полуобразованные догадки приведут вас к решению.Нет гарантии; -)

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

  • Убедитесь, что вы использовали - опцию keep-sequence во время фазы импорта процесса.По умолчанию молоток сохраняет входные данные как простые пакеты слов , теряя порядок, в котором слова были первоначально найдены.Это может быть хорошо для базовых задач классификации, но не для тематического моделирования.
  • Помните, что выборка Гиббса, используемая молотком, является случайным процессом ;ожидайте изменений, в частности, с небольшими образцами.Во время тестов вы можете указать одно и то же случайное начальное число для каждой итерации:
  • Каков размер ваших тренировочных данных ?20 тем кажутся полезными для начальных тестов, которые, как правило, основаны на небольших, вручную созданных и / или быстро собранных наборах для обучения и тестирования.
  • помните, что вывод темы основан на последовательностях слов , не изолированные ключевые слова (в описании тестового документа, созданного вручную, упоминаются «ключевые слова», а не слова «выражения» или «фразы»)
...