BigARTM

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

BigARTM (сокр. англ. additive regularization for topic modeling) — библиотека для тематического моделирования на основе аддитивной регуляризации тематических моделей, разрабатываемая А. Фреем (МФТИ), К. Воронцовым (ВЦ РАН) и М. Апишевым (МГУ).

BigARTM.svg

Доступность

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

Установка

Пользователи Windows могут скачать готовую сборку с GitHub. Пользователи других операционных систем должны скомпилировать и установить BigARTM самостоятельно. Для установки из git-репозитория необходимо иметь работающий компилятор gcc, библиотеку Boost и систему сборки CMake. Сначала выполняется создание локальной рабочей копии репозитория BigARTM и переход в этот каталог.

$ git clone 'https://github.com/bigartm/bigartm.git'
$ cd bigartm

Традиционно, для сборки при помощи CMake используется пустая вложенная директория с именем build. Нужно создать её и сконфигурировать сборку.

$ mkdir build
$ cd build
$ cmake ..

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

$ make -j8

Если процесс сборки завершится успешно, то будет сгенерирован исполняемый файл build/build/src/cpp_client/cpp_client, который можно использовать автономно.

Python

Разработчики на языке программирования Python могут воспользоваться пакетом artm_model для работы с библиотекой.

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

Входные данные для BigARTM задаются в виде мешка слов в формате UCI, разработанном в Калифорнийском университете в Ирвайне (США). Первые три строки файла представляют заголовок в виде трёх параметров: D — количество документов, W — длина словника, NNZ — количество записей. Записи записываются в виде троек, содержащих docID — идентификатор документа, wordID — идентификатор слова, count — количество появлений слова в документе. Файл выглядит следующим образом:

D
W
NNZ
docID wordID count
...
docID wordID count

Для построения тематической модели, BigARTM необходимо два файла: vocab — файл словника и docword — файл корпуса. В качестве примера можно воспользоваться набором данных KOS, созданном на основе записей в блогах на сайте http://www.dailykos.com/. Этот набор данных предлагается и разработчиками анализатора. Сначала нужно получить соответствующие файлы.

$ wget 'https://s3-eu-west-1.amazonaws.com/artm/vocab.kos.txt'
$ wget 'https://s3-eu-west-1.amazonaws.com/artm/docword.kos.txt.gz'
$ gunzip docword.kos.txt.gz

Теперь можно запустить BigARTM и построить тематическую модель.

$ build/src/cpp_client/cpp_client -d docword.kos.txt -v vocab.kos.txt
Parsing text collection... OK.
Iteration 1 took  223 milliseconds.
	Test perplexity = 6690.1, 
	Train perplexity = 6689.98, 
	Test spatsity theta = 0, 
	Train sparsity theta = 0, 
	Spatsity phi = 0.000144802, 
	Test items processed = 343, 
	Train items processed = 3087, 
	Kernel size = 1273.56, 
	Kernel purity = 0.358615, 
	Kernel contrast = 0.123325
...

За несколько итераций процесс завершится и будет показано распределение слов по темам (Top tokens) и распределение тем по последним семи документам (ThetaMatrix).

Top tokens for @default_class:
#1: bush(0.04) iraq(0.026) administration(0.024) war(0.019) president(0.013) intelligence(0.0086) 
#2: bush(0.086) kerry(0.061) general(0.017) campaign(0.016) bushs(0.016) president(0.016) 
#3: november(0.06) poll(0.014) house(0.012) polls(0.012) governor(0.011) electoral(0.011) 
#4: kerry(0.046) poll(0.045) bush(0.038) percent(0.034) voters(0.022) polls(0.021) 
#5: dean(0.053) primary(0.026) democratic(0.025) edwards(0.025) clark(0.024) kerry(0.02) 
#6: years(0.0099) administration(0.0096) bush(0.0078) white(0.0066) energy(0.0055) space(0.0053) 
#7: people(0.014) media(0.012) time(0.0096) ive(0.0057) read(0.0047) ill(0.0046) 
#8: house(0.018) republican(0.016) money(0.016) delay(0.013) committee(0.012) million(0.011) 
#9: campaign(0.021) john(0.013) party(0.0089) kerry(0.0088) speech(0.0073) convention(0.0065) 
#10: war(0.017) iraq(0.015) military(0.014) women(0.0065) general(0.0056) political(0.0056) 
#11: senate(0.029) race(0.02) elections(0.019) house(0.018) republican(0.013) seat(0.011) 
#12: iraq(0.026) war(0.017) iraqi(0.011) american(0.011) soldiers(0.0079) military(0.0075) 
#13: president(0.018) bush(0.015) cheney(0.014) party(0.014) national(0.011) republican(0.011) 
#14: bush(0.016) tax(0.013) jobs(0.012) health(0.0095) economy(0.008) billion(0.007) 
#15: state(0.022) party(0.017) states(0.015) election(0.012) democrats(0.01) vote(0.0098) 
#16: november(0.061) voting(0.016) account(0.012) vote(0.012) republicans(0.012) electoral(0.012) 
ThetaMatrix (last 7 processed documents, ids = 3430,3424,3425,3426,3427,3428,3422):
Topic0: 0.25150 0.00094 0.38063 0.01438 0.01321 0.09560 0.02923 
Topic1: 0.08672 0.05497 0.08752 0.05516 0.15369 0.03563 0.02480 
Topic2: 0.00000 0.00405 0.00000 0.00309 0.00000 0.00944 0.02872 
Topic3: 0.00070 0.08650 0.10486 0.87086 0.53397 0.01916 0.00302 
Topic4: 0.00191 0.00000 0.00010 0.00035 0.00106 0.00009 0.00029 
Topic5: 0.00005 0.06669 0.00943 0.00240 0.00001 0.00139 0.01173 
Topic6: 0.00201 0.25672 0.11324 0.00322 0.00194 0.32449 0.00239 
Topic7: 0.00078 0.00025 0.02206 0.00008 0.01998 0.00027 0.00002 
Topic8: 0.26815 0.06097 0.21650 0.01192 0.11849 0.03565 0.00004 
Topic9: 0.02195 0.24496 0.01534 0.00280 0.00061 0.00185 0.00141 
Topic10: 0.22683 0.00104 0.01220 0.01457 0.00170 0.05004 0.02054 
Topic11: 0.13542 0.00004 0.00000 0.00000 0.00000 0.01821 0.03840 
Topic12: 0.00164 0.16943 0.00676 0.00074 0.00064 0.02175 0.00011 
Topic13: 0.00105 0.00029 0.02978 0.01832 0.15465 0.37895 0.00082 
Topic14: 0.00131 0.00009 0.00157 0.00004 0.00004 0.00508 0.00082 
Topic15: 0.00000 0.05306 0.00000 0.00207 0.00000 0.00241 0.83766 

Дополнительные демонстрационные наборы данных можно скачать со страницы http://bigartm.readthedocs.org/en/latest/download.html. Помимо формата UCI, поддерживаются форматы Matrix Market и Vowpal Wabbit.

Ссылки

См. также