MALLET

Материал из NLPub
Перейти к: навигация, поиск

MALLET (англ. MAchine Learning for LanguagE Toolkit) — кросс-платформенный инструмент тематического моделирования, классификации документов и разметки последовательностей, разработанный в Массачусетском университете в Амхерсте (США). MALLET содержит в себе эффективные реализации некоторых алгоритмов машинного обучения и методов численной оптимизации, необходимых для их работы.

MALLET.png

Доступность

MALLET является свободным программным обеспечением, распространяемым на условиях первой версии лицензии Common Public License. Исходные коды доступны на GitHub.

Установка

Поскольку MALLET написан на языке Java, то необходимо иметь установленный и работающий Java SE Runtime Environment. Для установки анализатора достаточно скачать архив с последней версией программы с сайта http://mallet.cs.umass.edu/download.php и распаковать его в любую доступную директорию на компьютере. Пользователи Windows вынуждены проделать дополнительную работу и добавить переменную окружения MALLET_HOME, содержащую полный путь до каталога с содержимым распакованного архива.

Использование

Тематическое моделирование

Построение тематической модели при помощи MALLET осуществляется в два этапа. Сначала нужно импортировать тексты и преобразовать их в векторную модель — внутреннее представление анализатора. На этом этапе необходимо указать входные тексты и уточнить параметры их обработки, в том числе наличие списков стоп-слов. Достаточно иметь тексты в формате text/plain в файловой системе. Например, тексты расположены в каталоге corpus, стоп-лист представлен в текстовом файле stoplist.txt, а результат импорта сохраняется в файл vsm.mallet.

mallet import-dir --input corpus --stoplist-file stoplist.txt --keep-sequence --token-regex '[\p{L}\p{M}]+' --output vsm.mallet

Также имеется возможность чтения текстов из единого файла в формате «одна строка — один документ», состоящем из трёх колонок, разделённых табуляцией ('\t'):

ID	метка	текст документа одной строкой

В таком случае для файла corpus.txt команда будет иметь следующий вид:

mallet import-file --input corpus.txt --stoplist-file stoplist.txt --keep-sequence --token-regex '[\p{L}\p{M}]+' --output vsm.mallet

После того, как векторное представление сформировано, необходимо построить тематическую модель. Для этого имеется команда train-topics.

mallet train-topics --input vsm.mallet --output-state state.gz --output-topic-keys topic-keys.txt --output-doc-topics doc-topics.txt

В результате выполнения этой команды будут созданы три файла: state.gz с распределением тем по словам в документах, topic-keys.txt с распределением слов по темам, doc-topics.txt с распределением тем по документам[1].

MALLET допускает тонкую настройку процесса построения модели. Стоит отметить параметр --num-iterations N, явно указывающий количество итераций до конца работы алгоритма, --num-topics M, явно указывающий количество тем для извлечения, и --num-threads X, указывающий количество одновременно выполняемых потоков для распараллеливания процесса на несколько процессорных ядер.

Ссылки

См. также

Примечания

  1. Практический пример использования анализатора можно найти в материалах практикума по обработке естественного языка на школе-интенсиве ISMW: http://ismw.ru/ISMW-Workshop-NLPDM.pdf.