Основное использование молотка. Первые шаги

Я пытаюсь использовать Mallet буквально без опыта моделирования тем и т. д. Моя цель — получить N темы из M документов, которые у меня есть прямо сейчас, классифицировать каждый документ с одной или несколькими темами (документ 1 = тема 1; документ 2 = тема 2 и, возможно, тема 3) и классифицировать с помощью этих результатов новый документ в будущем. Сначала я пытался использовать для этого bigartm, но ничего не нашел для классификации в этой программе, только тематическое моделирование. Итак, Маллет, я создал файл corpus.txt следующего формата:

Doc.num. \t(tab) Label(actualy 1 everywhere) \t Text 1 1 some text of document to classify 2 1 another doc text ...

На данный момент я могу получить темы из этого файла после преобразования его в формат последовательности функций для молотка с помощью

bin/mallet import-file --input corpus.txt --output foo.mallet--keep-sequence

а потом получать от него темы

bin/mallet train-topics --input foo.mallet --output-state state.gz --output-topic-keys topic-keys.txt --output-doc-topics doc-topics.txt

Итак, общий вопрос теперь заключается в том, что использовать в молотке (классификаторе поездов?), чтобы назначить каждый существующий документ теме, которую я нашел, и сохранить этот результат, чтобы применить его к будущему документу, который я хочу классифицировать по этим темам.

Спасибо


person Kirill    schedule 14.11.2016    source источник


Ответы (2)


То, что вы ищете, описывается как «вывод» в тематических моделях Mallet. Обучение классификатора — это отдельный пакет, направленный на непосредственное изучение взаимосвязей между словами и уже существующим набором классов.

Вот инструкции по использованию логического вывода для новых документов:

При обучении модели с помощью команды train-topics добавьте параметр --inferencer-filename [FILENAME]. Этот параметр создаст инструмент вывода по теме на основе текущей обученной модели и сохранит его в файле. Если у вас уже есть обученная модель, например, из --output-state или --output-model, вы можете инициализировать из этого состояния или модели, запустить 0 итераций выборки и вывести вывод.

После создания файла логического вывода используйте команду MALLET bin/mallet infer-topics --help, чтобы получить информацию об использовании логического вывода по теме.

Обратите внимание, что вы должны убедиться, что новые данные совместимы с вашими тренировочными данными. В противном случае слово ID 425 может означать совершенно другое слово. Это сделает все темы равновероятными. Используйте параметр --use-pipe-from [MALLET TRAINING FILE] в команде MALLET bin/mallet import-file или import-dir, чтобы указать тренировочный файл.

person David Mimno    schedule 14.11.2016

В постановке вашего вопроса удобочитаемый файл doc-topics.txt содержит матрицу-темы-документа, т. Е. Композицию каждого документа в корпусе в темы. Темы обозначены номерами, а их проценты даны. Формат файла таков, что темы уже упорядочены по их старшинству, поэтому доминирующая тема идет первой.

Файл topic-keys.txt содержит первые наиболее актуальные слова. Вы можете использовать этот файл, чтобы угадать несколько хороших лейблов для тем. Эта маркировка в основном выполняется вручную и может включать возвращение к документам и проверку некоторых из них, чтобы получить действительно хорошие этикетки.

person jk - Reinstate Monica    schedule 14.11.2016
comment
Итак, вы имеете в виду, что я должен сам написать скрипт для классификации для будущих целей, и в Mallet нет такой возможности для обучения классификатора по этим темам? - person Kirill; 14.11.2016
comment
@Kirill: есть возможность применить предварительно обученную модель темы к новым документам в Mallet; хотя у меня нет под рукой синтаксиса командной строки (bin/mallet help дает вам много полезной информации, команды молотка train-classifier и classify-file, вероятно, вас заинтересуют. - person jk - Reinstate Monica; 14.11.2016