Тематическая модель Постнауки

Peer Review (optional)

В этом задании мы применим аппарат тематического моделирования к коллекции текстовых записей видеолекций, скачанных с сайта Постнаука. Мы будем визуализировать модель и создавать прототип тематического навигатора по коллекции. В коллекции 1728 документов, размер словаря - 38467 слов. Слова лемматизированы, то есть приведены к начальной форме, с помощью программы mystem, коллекция сохранена в формате vowpal wabbit. В каждой строке до первой черты записана информация о документе (ссылка на страницу с лекцией), после первой черты следует описание документа. Используются две модальности - текстовая ("text") и модальность авторов ("author"); у каждого документа один автор.

Для выполнения задания понадобится библиотека BigARTM. В демонстрации показан пример использования библиотеки версии 0.7.4, на сайте предлагается скачивать версию 0.8.0. В новой версии изменены принципы работы со словарями: они вынесены в отдельный класс (пример в Release Notes). Строить модель и извлекать ее параметры нужно так же, как показано в демонстрации. Вы можете использовать предыдущий релиз или новый релиз на ваше усмотрение.

Спецификации всех функций вы можете смотреть на странице Python API.


In [1]:
import artm

In [2]:
from matplotlib import pyplot as plt
import seaborn as sns
%matplotlib inline
sns.set_style("whitegrid", {'axes.grid' : False})

In [3]:
import numpy as np
import pandas as pd
from sklearn.externals import joblib

In [4]:
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
Считывание данных

Создайте объект класса artm.BatchVectorizer, который будет ссылаться на директорию с пакетами данных (батчами). Чтобы библиотека могла преобразовать текстовый файл в батчи, создайте пустую директорию и укажите ее название в параметре target_folder. Размер батча для небольших коллекций (как наша) не важен, вы можете указать любой.


In [5]:
# Ваш код
batch_vectorizer = artm.BatchVectorizer(data_path='lectures.txt', data_format='vowpal_wabbit',
                                        target_folder='lectures_batches', batch_size=250)
Инициализация модели

Создайте объект класса artm.Model с 30 темами, именами тем, указанными ниже и единичными весами обеих модальностей. Количество тем выбрано не очень большим, чтобы вам было удобнее работать с темами. На этой коллекции можно строить и большее число тем, тогда они будут более узко специализированы.


In [6]:
T = 30   # количество тем
topic_names=["sbj"+str(i) for i in range(T-1)]+["bcg"]
# Ваш код
model = artm.ARTM(num_topics=T, topic_names=topic_names, num_processors=2, class_ids={'text':1, 'author':1},
                  reuse_theta=True, cache_theta=True)

Мы будем строить 29 предметных тем и одну фоновую.

Соберите словарь с помощью метода gather_dictionary и инициализируйте модель, указав random_seed=1. Обязательно укажите свое название словаря, оно понадобится при добавлении регуляризаторов.


In [7]:
# Ваш код
np.random.seed(1)
dictionary = artm.Dictionary('dict')
dictionary.gather(batch_vectorizer.data_path)
model.initialize(dictionary=dictionary)
Добавление score

Создайте два измерителя качества artm.TopTokensScore - по одному для каждой модальности; количество токенов 15. Названия для score придумайте самостоятельно.


In [8]:
# Ваш код
model.scores.add(artm.TopTokensScore(name='top_tokens_score_mod1', class_id='text', num_tokens=15))
model.scores.add(artm.TopTokensScore(name='top_tokens_score_mod2', class_id='author', num_tokens=15))
Построение модели

Мы будем строить модель в два этапа: сначала добавим сглаживающий регуляризатор фоновой темы и настроим параметры модели, затем - добавим разреживающий регуляризатор предметрых тем и выполним еще несколько итераций. Так мы сможем получить наиболее чистые от фоновых слов предметные темы. Сглаживающий и разреживающий регуляризаторы задаются одним и тем же классом artm.SmoothSparsePhiRegularizer: если коэффициент tau положительный, то регуляризатор будет сглаживающий, если отрицательный - разреживающий.

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

Добавьте сглаживающий регуляризатор с коэффициентом tau = 1e5, указав название своего словаря в dictionary, модальность текста в class_ids и тему "bcg" в topic_names.


In [9]:
# Ваш код
model.regularizers.add(artm.SmoothSparsePhiRegularizer(tau=1e5, class_ids='text', dictionary='dict', topic_names='bcg'))

Выполните 30 итераций по коллекции (num_collection_passes), количество внутренних итераций установите равным 1. Используйте метод fit_offline модели.


In [10]:
# Ваш код
model.num_document_passes = 1
model.fit_offline(batch_vectorizer=batch_vectorizer, num_collection_passes=30)

Добавьте разреживающий регуляризатор с коэффициентом tau=-1e5, указав название своего словаря, модальность текста в class_ids и все темы "sbjX" в topic_names.


In [11]:
# Ваш код
topic_names_cleared = list(topic_names).remove('bcg')
model.regularizers.add(artm.SmoothSparsePhiRegularizer(tau=-1e5, class_ids='text', dictionary='dict',
                                                       topic_names=topic_names_cleared))

Выполните еще 15 проходов по коллекции.


In [12]:
# Ваш код
model.fit_offline(batch_vectorizer=batch_vectorizer, num_collection_passes=15)
Интерпретация тем

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


In [13]:
# Ваш код
tokens = model.score_tracker['top_tokens_score_mod1'].last_tokens
for topic_name in model.topic_names:
    print topic_name + ': ',
    for word in tokens[topic_name]:    
        print word,
    print


sbj0:  церковь власть средневековый император русь святой римский папа князь сага король александр византийский вера рим
sbj1:  планета земля атмосфера солнце солнечный белый газ образовываться карлик вокруг вода поверхность спутник орбита океан
sbj2:  система трудность поведение частота двигаться точность искусственный движение относительность тест час самка задание переход часы
sbj3:  культура понятие культурный восприятие сознание феномен личность воспринимать ощущение чувство повседневный переживание детство этика индивид
sbj4:  право литература искусство литературный юрист писатель должник собственность обязательство римский владение произведение исполнение юридический требование
sbj5:  материал структура молекула свойство углерод применение поверхность полимер кристалл металл электронный твердый трехмерный алмаз углеродный
sbj6:  книга фильм автор кино написать документ жанр тема театр кинематограф академия герой анекдот екатерина культовый
sbj7:  смерть ритуал террор правитель государь обряд служба конвент диктатура моральный монтаньяр подданный комитет баратынский насилие
sbj8:  метод химический соединение вещество реакция химия давление лекарство синтез органический разработка продукт концентрация натрий химик
sbj9:  частица энергия квантовый поле физика взаимодействие атом теория магнитный электрон кварк симметрия элементарный фотон стандартный
sbj10:  война россия советский русский власть российский германия мировой реформа историк петр немецкий против гражданский военный
sbj11:  ребенок возраст семья кровь взрослый мать сон родитель старение конфликт катастрофа травма обезьяна сосуд диабет
sbj12:  растение ткань орган иммунный рак озеро сердце опухоль мышца нейронный птица вода активация печень шимпанзе
sbj13:  территория народ христианский империя восток древний письменность государство китай цивилизация памятник христианство северный восточный китайский
sbj14:  звезда галактика масса черный вселенная свет объект скорость волна дыра излучение расстояние вещество телескоп размер
sbj15:  задача информация память данные решение компьютер психология мышление анализ внимание ошибка когнитивный компьютерный психолог решать
sbj16:  раса африка остров америка южный станислав нос волос индия монголоид сенсор дробышевский штамм индеец территориальный
sbj17:  политический философия государство общество философский философ партия правовой политика суд враг платон мысль профессиональный дух
sbj18:  слово текст русский словарь предложение категория значение корпус глагол конструкция грамматика падеж речь поэт лингвистика
sbj19:  революция французский свобода франция роман национальный король нация аргумент творчество актер париж конституция монархия депутат
sbj20:  город технология сеть робот городской интернет компания пользователь музей библиотека медиа горожанин управление метро здание
sbj21:  болезнь заболевание пациент женщина лечение медицина врач боль препарат медицинский операция мужчина больной нарушение диагностика
sbj22:  социальный знание социология объект социологический дисциплина перевод познание обучение описание виктор коммуникация социолог форма предмет
sbj23:  матрица микроорганизм схема эмоция алгоритм вычислительный эмоциональный глубина интеллект микроб программный машина фольклор обеспечение архитектура
sbj24:  исторический бог традиция миф царь греческий представление эпоха религиозный религия имя душа письмо мифология египет
sbj25:  язык лингвист языковой английский гласный согласный звук лингвистический говор филологический диалект компилятор жест программирование германский
sbj26:  страна экономический экономика политика идентичность ценность кризис принятие общественный сталин коллективный выбор праздник ресурс решение
sbj27:  клетка мозг организм ген днк белок биологический животное генетический нейрон геном бактерия молекулярный биология рнк
sbj28:  температура университет сверхпроводимость профессор сверхпроводник сверхпроводящий железо заимствование гумбольдт магнит кельвин сопротивление электроника диссертация булгарский
bcg:  быть что это который этот как они мочь такой очень для человек или тот один

In [14]:
# Ваш код
authors = model.score_tracker['top_tokens_score_mod2'].last_tokens
for topic_name in model.topic_names:
    print topic_name + ': ',
    for author in authors[topic_name]:    
        print author,
    print


sbj0:  Александр_Марей Фёдор_Успенский Татьяна_Бобровникова Павел_Уваров Алексей_Юдин Игорь_Данилевский Ольга_Вайнштейн Елена_Уханова Ольга_Брилева Владимир_Петрухин Елена_Браун Григорий_Бондаренко Раиса_Кирсанова Екатерина_Болтунова Ольга_Тогоева
sbj1:  Сергей_Попов Кирилл_Еськов Дмитрий_Вибе Валерий_Сулейманов Дмитрий_Титов Зоригто_Намсараев Сергей_Наугольных Александр_Марков Елизавета_Ривкина Наталья_Новикова Роман_Рафиков Александр_Слободкин Сергей_Писарев Дмитрий_Лось Юлия_Краус
sbj2:  Елена_Брызгалина Александр_Поддьяков Владимир_Мележик Михаил_Пантелеев Эмиль_Ахмедов Виталий_Пальчиков Михаил_Фейгельман Даниэль_Сельва Антон_Суворов Василий_Климов Алексей_Желтиков Юджин_Ползик Илья_Щуров Владимир_Редько Георгий_Шляпников
sbj3:  Пётр_Турчин Алексей_Руткевич Владимир_Миронов Сергей_Арутюнов Татьяна_Смоктунович Андрей_Лосев Константин_Анохин Кирилл_Разлогов Дмитрий_Иванов Павел_Степанцов Александр_Кислов Фёдор_Гиренок Павел_Умрюхин Светлана_Кузнецова Андрей_Лукашов
sbj4:  Дмитрий_Дождев Олег_Лекманов Андрей_Кофман Денис_Новак Наталья_Смолянская Сергей_Зенкин Виктор_Цетлин Марина_Бутовская Дмитрий_Дорохов Александр_Парфенов Дмитрий_Полдников Евгений_Рогожин Мария_Штейнман Алиса_Вячеславова Татьяна_Гусарова
sbj5:  Артем_Оганов Дмитрий_Паращук Алексей_Акимов Валентин_Крапошин Дмитрий_Гольберг Евгений_Гудилин Владимир_Шалаев Алексей_Хохлов Дмитрий_Клинов Виктор_Зайченко Владимир_Комлев Сергей_Никитов Андрей_Головин Эрик_Мазур Шринивас_Шридхар
sbj6:  Александр_Павлов Павел_Руднев Ян_Левченко Алексей_Бартошевич Ольга_Эдельман Мария_Неклюдова Владимир_Кантор Петр_Дружинин Наталья_Харламенкова Ольга_Вайнштейн Екатерина_Щербакова Анатолий_Гершман Анна_Рогожина Михаил_Маяцкий Мария_Майофис
sbj7:  Михаил_Бойцов Анна_Соколова Александр_Гофман Арсений_Хитров Игорь_Чубаров Дмитрий_Рогозин Алина_Бодрова Галина_Зверева Пол_Грегори Олег_Ауров Мария_Майофис Дмитрий_Бовыкин Михаил_Алексеевский Владимир_Емельянов Сет_Ллойд
sbj8:  Валерий_Фокин Валентин_Ненайденко Алла_Ножевникова Александр_Беленький Виктория_Битюкова Иван_Сорокин Александр_Апт Алексей_Малашенко Сергей_Майоров Сергей_Румянцев Константин_Мирошников Дмитрий_Бак Пётр_Образцов Олег_Мельник Владимир_Польшаков
sbj9:  Дмитрий_Казаков Эмиль_Ахмедов Михаил_Данилов Игорь_Волобуев Наталья_Берлофф Виктор_Брагута Павел_Пахлов Сергей_Демокритов Лев_Дудко Сергей_Троицкий Алексей_Рубцов Марина_Корсакова-Крейн Андрей_Семенов Кит_Моффат Эдуард_Боос
sbj10:  Илья_Женин Кирилл_Соловьев Борис_Морозов Кирилл_Кочегаров Ирина_Бёме Олег_Будницкий Александр_Лаврентьев Александр_Каменский Илья_Виньковецкий Игорь_Курукин Алексей_Киличенков Людмила_Новикова Сергей_Соколовский Ольга_Исупова Варвара_Добровольская
sbj11:  Катерина_Поливанова Юрий_Яшков Мария_Падун Джеральд_де_Хаан Мария_Медникова Эмери_Браун Владимир_Ковальзон Дмитрий_Жуков Наталья_Харламенкова Ольга_Исупова Александр_Жаворонков Максим_Киселев Дэвид_С._Джонс Алексей_Москалев Михаил_Полуэктов
sbj12:  Михаил_Бурцев Филипп_Хайтович Егор_Задереев Константин_Агладзе Дмитрий_Громов Андрей_Цатурян Варвара_Веденина Алишер_Тураев Александр_Петренко Мария_Добровольская Сергей_Яковенко Филлип_Шарп Рудольф_Йениш Михаил_Киселев Иван_Воробьев
sbj13:  Алексей_Муравьёв Дмитрий_Беляев Марк_Ульянов Дмитрий_Худяков Сергей_Серёгичев Наталья_Зубаревич Андрей_Виноградов Владимир_Каганский Олег_Ауров Александр_Высоковский Галина_Ершова Дмитрий_Арзютов Нина_Сумбатова Анна_Дыбо Георгий_Старостин
sbj14:  Сергей_Попов Анатолий_Засов Алексей_Расторгуев Ольга_Сильченко Владимир_Сурдин Михаил_Ревнивцев Дмитрий_Горбунов Олег_Верходанов Андрей_Савельев-Трофимов Алексей_Старобинский Владимир_Белотелов Валерий_Рубаков Ильдар_Габитов Антон_Бирюков Сергей_Блинников
sbj15:  Павел_Балабан Владимир_Спиридонов Игорь_Уточкин Александр_Войскунский Ольга_Сварник Александр_Каплан Наталья_Кисельникова Иван_Луковников Станислав_Клименко Антон_Чижов Ксения_Паниди Александр_Львовский Сет_Ллойд Кьянг_Ку Мартин_Вейс
sbj16:  Станислав_Дробышевский Виталий_Кушниров Александр_Шацкий Евгений_Рогожин Митчел_Резник Алиса_Вячеславова Владимир_Муронец Вера_Мильчина Раиса_Кирсанова Георгий_Базыкин Андрей_Летаров Александр_Воеводский Константин_Лукьянов Леонид_Иомдин Михаил_Эльдаров
sbj17:  Алексей_Козырев Иван_Болдырев Дина_Гусейнова Владимир_Малахов Александр_Павлов Петр_Резвых Павел_Соколов Василий_Жарков Дмитрий_Балалыкин Валентина_Харитонова Руслан_Хестанов Александр_Воеводский Николай_Плотников Юрий_Рогулёв Анна_Севортьян
sbj18:  Александр_Пиперски Дмитрий_Добровольский Надежда_Онипенко Светлана_Евграфова Борис_Иомдин Анатолий_Баранов Петр_Аркадьев Алексей_Шмелев Леонид_Иомдин Екатерина_Протасова Вера_Подлесская Екатерина_Лютикова Андрей_Кибрик Владимир_Плунгян Алина_Бодрова
sbj19:  Дмитрий_Бовыкин Андрей_Зорин Борис_Колоницкий Раиса_Кирсанова Вера_Мильчина Мария_Майофис Алексей_Миллер Александр_Дмитриев Максим_Демин Марина_Новикова-Грунд Мария_Неклюдова Дина_Гусейнова Илья_Иткин Михаил_Алексеевский Светлана_Баньковская
sbj20:  Оксана_Запорожец Александр_Сафонов Алексей_Лебедев Александр_Тормасов Екатерина_Ларионова Екатерина_Лапина-Кратасюк Руслан_Смелянский Джанмарко_Веруджио Лев_Беклемишев Евгений_Магид Дарья_Радченко Деметрис_Зейналипур Сергей_Карабасов Евгений_Хоров Сергей_Ландо
sbj21:  Петр_Федичев Алексей_Алексеев Ярослав_Ашихмин Константин_Анохин Вера_Ижевская Александр_Васильев Алексей_Чжао Елена_Брызгалина Александр_Габибов Инга_Полетаева Юрий_Вайнер Павел_Тищенко Станислав_Полонский Елена_Голубева Наталья_Савва
sbj22:  Виктор_Вахштайн Дмитрий_Ветров Светлана_Бурлак Светлана_Баньковская Сезар_Идальго Александр_Дьяконов Джозеф_Браун Дэвид_Вайнберг Владик_Аветисов Мира_Бергельсон Леонид_Иомдин Aльберт_Давлетшин Александр_Филиппов Андрей_Кибрик Джеффри_Шнапп
sbj23:  Елизавета_Бонч-Осмоловская Дмитрий_Рогозин Александр_Жданов Иван_Оселедец Николай_Пименов Елена_Гороховская Владимир_Кузнецов Станислав_Протасов Александр_Жаворонков Илья_Щуров Максим_Таланов Игорь_Петров Сергей_Гашков Сергей_Зыков Ольга_Столярова
sbj24:  Гасан_Гусейнов Олег_Воскобойников Ивар_Максутов Мария_Штейнман Ольга_Артёмова Владимир_Емельянов Иван_Ладынин Леонид_Григорьев Владимир_Бобровников Галина_Зеленина Аскольд_Иванчик Мира_Бергельсон Ирина_Савельева Ирина_Левонтина Ахмет_Ярлыкапов
sbj25:  Владимир_Плунгян Игорь_Исаев Кирилл_Бабаев Андрей_Кибрик Илья_Иткин Григорий_Крейдлин Владимир_Беликов Георгий_Старостин Евгений_Зуев Максим_Кронгауз Екатерина_Лямина Дмитрий_Дагаев Альберт_Насибулин Яков_Тестелец Андрей_Кофман
sbj26:  Фуад_Алескеров Олег_Хлевнюк Алексей_Белянин Ольга_Малинова Сергей_Бобылев Владимир_Гимпельсон Виктор_Полтерович Сергей_Пекарский Сергей_Афонцев Сергей_Гуриев Александр_Аузан Ольга_Гулевич Василий_Ключарев Рауль_Гайнетдинов Леонард_Полищук
sbj27:  Евгений_Шеваль Константин_Северинов Максим_Франк-Каменецкий Сергей_Киселев Антон_Буздин Сергей_Науменко Светлана_Боринская Сергей_Саложин Алексей_Кондрашов Андрей_Летаров Евгений_Куликов Владимир_Муронец Ричард_Янг Дмитрий_Сорокин Антон_Бернс
sbj28:  Михаил_Киселев Владимир_Пудалов Наталья_Ростиславлева Илья_Шкредов Елена_Вишленкова Евгений_Николаев Анна_Дыбо Алексей_Рубцов Евгений_Антипов Дмитрий_Лось Алексей_Орлов Николай_Мощевитин Герберт_Хупперт Теунис_Клапвик Алексей_Касьян
bcg:  Мария_Фаликман Михаил_Соколов Виталий_Куренной Сергей_Неклюдов Кирилл_Мартынов Михаил_Гельфанд Кирилл_Титаев ПостНаука Александр_Филиппов Михаил_Маяцкий Михаил_Алексеевский Алексей_Маслов Александр_Доброхотов Андрей_Журавлев Павел_Нерлер_(Полян)

В последней теме "bcg" должны находиться общеупотребительные слова.

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

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

можно назвать "Физика элементарных частиц".

Дайте названия 29 предметным темам. Если вы не знаете, как назвать тему, назовите ее первым встретившимся в ней существительным, хотя при таком подходе навигатор будет менее информативным. Из названий тем составьте список из 29 строк и запишите го в переменную sbj_topic_labels. В переменной topic_labels будут храниться названия всех тем, включая фоновую.


In [15]:
sbj_topic_labels = []   # запишите названия тем в список
for topic_name in model.topic_names[:29]:
    sbj_topic_labels.append(tokens[topic_name][0])

topic_labels = sbj_topic_labels + [u"Фоновая тема"]
Анализ тем

Далее мы будем работать с распределениями тем в документах (матрица $\Theta$) и авторов в темах (одна из двух матриц $\Phi$, соответствующая модальности авторов). Создайте переменные, содержащие две этих матрицы, с помощью методов get_phi и get_theta модели. Назовите переменные theta и phi_a. Выведите формы обеих матриц, чтобы понять, по каким осям стоят темы.


In [16]:
model.theta_columns_naming = "title" # включает именование столбцов Theta их названиями-ссылками, а не внутренними id 
# Ваш код
theta = model.get_theta()
print('Theta shape: %s' % str(theta.shape))
phi_a = model.get_phi(class_ids='author')
print('Phi_a shape: %s' % str(phi_a.shape))


Theta shape: (30, 1728)
Phi_a shape: (539, 30)

Визуализируем фрагмент матрицы $\Theta$ - первые 100 документов (это наиболее простой способ визуально оценить, как темы распределяются в документах). С помощью метода seaborn.heatmap выведите фрагмент theta как изображение. Рекомендация: создайте фигуру pyplot размера (20, 10).


In [17]:
# Ваш код
theta.iloc[:,:100]


Out[17]:
http://postnauka.ru/video/56293 http://postnauka.ru/video/56295 http://postnauka.ru/video/56297 http://postnauka.ru/video/56300 http://postnauka.ru/video/56302 http://postnauka.ru/video/56304 http://postnauka.ru/video/56306 http://postnauka.ru/video/5633 http://postnauka.ru/video/56616 http://postnauka.ru/video/56618 ... http://postnauka.ru/video/59622 http://postnauka.ru/video/59627 http://postnauka.ru/video/59632 http://postnauka.ru/video/59633 http://postnauka.ru/video/59636 http://postnauka.ru/video/59638 http://postnauka.ru/video/5990 http://postnauka.ru/video/5999 http://postnauka.ru/video/60481 http://postnauka.ru/video/60527
sbj0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.615795e-03 5.826328e-03 6.690106e-03 2.333948e-01 2.309685e-07 1.290646e-03 ... 1.379134e-03 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.975263e-14 0.000000e+00 8.181204e-12 0.000000e+00 3.142958e-10
sbj1 2.365974e-03 2.813645e-06 5.787503e-03 2.347792e-02 1.294310e-04 2.431411e-03 4.493554e-11 1.364979e-10 4.259948e-11 0.000000e+00 ... 5.491423e-03 8.827297e-02 1.958271e-06 2.452312e-10 2.704179e-02 4.198350e-09 0.000000e+00 0.000000e+00 3.381352e-02 3.151193e-11
sbj2 1.100288e-02 1.198531e-02 7.588623e-03 2.375591e-02 2.431038e-03 8.432037e-04 0.000000e+00 0.000000e+00 3.361735e-04 1.588876e-01 ... 1.074490e-04 2.098809e-03 2.356075e-02 9.243062e-03 1.059433e-02 1.359719e-04 0.000000e+00 5.510303e-12 1.823301e-02 1.024957e-02
sbj3 5.631584e-07 3.800987e-03 1.288341e-16 3.620143e-07 3.659086e-03 6.045363e-03 1.063831e-03 2.288382e-03 2.906446e-14 2.113592e-03 ... 1.137938e-02 3.710633e-07 0.000000e+00 1.448206e-15 0.000000e+00 2.174611e-02 0.000000e+00 2.669105e-02 2.065489e-03 1.035555e-02
sbj4 1.690206e-15 0.000000e+00 3.194629e-11 0.000000e+00 1.880246e-06 7.280024e-06 2.968680e-03 1.272916e-02 9.972495e-06 6.662811e-03 ... 0.000000e+00 0.000000e+00 3.139087e-13 1.567204e-12 0.000000e+00 1.231178e-02 0.000000e+00 0.000000e+00 0.000000e+00 2.995591e-13
sbj5 3.253643e-02 8.517537e-02 7.669173e-03 5.421258e-03 6.459936e-04 6.698408e-10 1.399974e-03 0.000000e+00 1.759079e-04 0.000000e+00 ... 7.210645e-10 0.000000e+00 2.505355e-03 3.723327e-14 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.688198e-03 4.602053e-03
sbj6 6.199425e-12 2.644613e-10 1.464014e-07 0.000000e+00 2.277577e-15 2.824101e-03 2.422077e-02 1.907522e-03 1.325458e-02 2.833300e-03 ... 3.254065e-10 1.952500e-10 0.000000e+00 0.000000e+00 5.584308e-05 0.000000e+00 0.000000e+00 2.076127e-02 0.000000e+00 3.544570e-09
sbj7 3.159435e-13 5.922384e-04 1.048226e-03 1.942535e-15 5.358541e-16 1.589317e-02 6.938816e-03 7.084831e-16 5.981811e-10 5.305212e-03 ... 1.046924e-02 8.992326e-09 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.599978e-05 2.424960e-12 2.382713e-08
sbj8 3.186109e-02 1.930104e-01 1.454594e-03 0.000000e+00 0.000000e+00 0.000000e+00 5.966459e-10 4.768803e-10 1.124524e-02 2.644161e-03 ... 1.480793e-03 4.354995e-03 9.072819e-03 1.712228e-03 2.972907e-03 0.000000e+00 1.407671e-02 8.684367e-11 0.000000e+00 1.446478e-16
sbj9 5.803334e-02 2.386962e-02 8.059232e-03 1.980447e-01 6.472742e-15 0.000000e+00 9.373865e-03 1.884760e-14 1.272137e-03 1.675071e-06 ... 8.327604e-03 1.652707e-02 2.433616e-07 2.947058e-03 1.018859e-02 0.000000e+00 1.945470e-02 2.222477e-03 1.324624e-01 1.485956e-03
sbj10 0.000000e+00 2.650264e-10 1.071296e-03 0.000000e+00 2.379628e-03 3.144830e-02 3.122585e-02 4.333917e-02 1.090939e-16 2.017102e-03 ... 1.288873e-05 0.000000e+00 1.852044e-14 9.963767e-15 0.000000e+00 1.241501e-11 0.000000e+00 4.108402e-05 2.940261e-12 8.271491e-13
sbj11 1.301288e-06 1.444658e-03 2.336557e-07 2.131585e-16 8.286385e-07 1.428333e-03 1.155227e-03 5.206999e-03 0.000000e+00 1.567555e-03 ... 3.029792e-03 8.510383e-08 1.131559e-01 0.000000e+00 6.333492e-03 2.092641e-01 0.000000e+00 9.922829e-03 0.000000e+00 1.887107e-01
sbj12 1.529836e-08 3.537931e-16 1.441386e-02 0.000000e+00 0.000000e+00 0.000000e+00 1.462110e-03 0.000000e+00 0.000000e+00 0.000000e+00 ... 1.529313e-04 0.000000e+00 2.690569e-02 7.439913e-04 6.147978e-09 0.000000e+00 0.000000e+00 3.460207e-03 3.077330e-09 1.753343e-11
sbj13 0.000000e+00 5.759944e-14 7.847686e-07 0.000000e+00 2.579170e-01 4.733827e-02 2.517390e-03 6.005373e-09 9.867400e-04 6.766301e-07 ... 3.764160e-02 1.681480e-03 0.000000e+00 0.000000e+00 1.406857e-05 0.000000e+00 0.000000e+00 8.580174e-04 0.000000e+00 0.000000e+00
sbj14 3.326968e-03 8.165962e-03 7.653046e-14 2.711452e-02 1.205271e-10 1.308079e-15 7.829401e-09 0.000000e+00 2.506522e-10 1.320100e-03 ... 8.827933e-04 2.493625e-01 2.212810e-02 0.000000e+00 3.055434e-01 8.600307e-06 0.000000e+00 2.104393e-10 2.253079e-01 1.101925e-03
sbj15 2.762196e-10 6.337721e-03 2.295035e-04 1.086874e-02 1.221951e-03 1.051308e-04 4.654839e-03 1.821778e-13 1.451283e-06 3.833466e-02 ... 2.931316e-03 3.587509e-04 2.367024e-03 9.399074e-02 2.601886e-05 1.034479e-02 3.239594e-03 4.808009e-10 2.271216e-02 8.160237e-03
sbj16 1.534455e-06 7.836045e-15 1.076947e-01 0.000000e+00 0.000000e+00 1.979856e-12 1.046663e-03 4.190896e-04 0.000000e+00 0.000000e+00 ... 0.000000e+00 5.750878e-03 7.054279e-16 0.000000e+00 5.766081e-15 0.000000e+00 0.000000e+00 0.000000e+00 1.536438e-13 0.000000e+00
sbj17 1.759224e-10 3.560417e-12 0.000000e+00 0.000000e+00 7.629578e-16 2.512678e-06 3.548772e-13 1.499576e-02 1.518809e-10 1.137487e-03 ... 1.017195e-02 0.000000e+00 0.000000e+00 7.007671e-16 0.000000e+00 1.454903e-03 0.000000e+00 7.133941e-03 9.865421e-14 8.925220e-11
sbj18 8.475238e-13 0.000000e+00 1.886228e-03 4.147140e-04 1.490800e-02 2.113295e-03 1.183168e-01 0.000000e+00 2.391743e-01 1.171738e-13 ... 5.265966e-03 4.020661e-09 0.000000e+00 2.246563e-03 0.000000e+00 3.782582e-15 5.101562e-08 1.166656e-02 0.000000e+00 2.551951e-03
sbj19 3.329645e-11 3.055988e-03 0.000000e+00 2.599221e-12 1.793584e-12 2.803973e-05 2.947594e-03 0.000000e+00 5.741415e-10 7.882562e-10 ... 1.631071e-16 0.000000e+00 1.014588e-08 2.452638e-12 0.000000e+00 2.662075e-03 0.000000e+00 5.721936e-05 0.000000e+00 2.457218e-14
sbj20 6.846754e-08 1.274563e-06 8.018457e-05 1.490345e-03 3.270347e-08 4.490791e-12 4.019169e-03 0.000000e+00 1.192295e-08 1.291840e-14 ... 4.278328e-13 0.000000e+00 1.436337e-03 1.080501e-02 0.000000e+00 1.074478e-02 0.000000e+00 9.239231e-06 0.000000e+00 4.290278e-10
sbj21 0.000000e+00 0.000000e+00 7.128303e-03 1.540124e-10 0.000000e+00 3.024320e-15 8.133485e-03 0.000000e+00 6.324977e-11 1.798043e-03 ... 1.475171e-01 0.000000e+00 2.617811e-02 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.813431e-03 0.000000e+00 5.112049e-02
sbj22 1.926446e-04 2.198219e-07 7.146259e-12 1.597977e-02 2.563172e-03 1.225938e-12 6.598089e-07 2.121900e-03 2.032154e-02 4.625240e-03 ... 2.571581e-03 1.477072e-04 7.912395e-12 1.706520e-02 1.297397e-12 6.962804e-03 6.719932e-10 2.747912e-03 1.424588e-03 1.331456e-04
sbj23 0.000000e+00 2.872151e-03 2.337680e-03 1.302500e-03 1.082382e-10 1.952844e-16 8.891940e-04 0.000000e+00 2.955661e-05 2.144135e-03 ... 4.667871e-03 0.000000e+00 5.597538e-09 9.441310e-02 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.095285e-11
sbj24 6.447507e-12 4.353175e-06 4.910778e-04 4.791756e-04 7.865456e-03 1.988224e-01 1.235606e-02 3.060545e-02 2.590095e-12 5.509691e-03 ... 1.192461e-02 4.160266e-13 2.767052e-15 2.527267e-16 8.979666e-14 0.000000e+00 0.000000e+00 2.573505e-01 0.000000e+00 2.281200e-05
sbj25 0.000000e+00 5.700903e-16 0.000000e+00 1.344049e-03 1.452929e-02 0.000000e+00 0.000000e+00 0.000000e+00 2.278600e-02 3.432573e-11 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.890253e-06 0.000000e+00 0.000000e+00 5.069784e-03 0.000000e+00 0.000000e+00
sbj26 1.944169e-04 6.355513e-04 0.000000e+00 0.000000e+00 0.000000e+00 4.583309e-10 3.382472e-03 0.000000e+00 1.456362e-12 5.551902e-03 ... 2.425246e-09 0.000000e+00 3.199979e-03 4.636270e-03 0.000000e+00 8.527528e-04 0.000000e+00 0.000000e+00 0.000000e+00 1.879838e-03
sbj27 4.199563e-05 1.400592e-14 9.136329e-02 0.000000e+00 1.877559e-12 0.000000e+00 7.348156e-13 0.000000e+00 9.192511e-16 2.815190e-08 ... 6.034134e-03 4.535927e-03 9.574238e-02 6.946669e-08 0.000000e+00 0.000000e+00 2.203100e-01 0.000000e+00 0.000000e+00 2.213809e-02
sbj28 1.570383e-01 3.663712e-03 1.796842e-12 5.340670e-10 1.821951e-15 5.704402e-10 3.025560e-13 1.057832e-04 0.000000e+00 0.000000e+00 ... 6.256137e-11 0.000000e+00 0.000000e+00 5.652190e-03 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 6.227807e-14 0.000000e+00
bcg 7.034025e-01 6.553817e-01 7.416953e-01 6.903061e-01 6.901314e-01 6.848429e-01 7.552364e-01 6.528859e-01 6.904061e-01 7.562543e-01 ... 7.285604e-01 6.269085e-01 6.737454e-01 7.565445e-01 6.372266e-01 7.235115e-01 7.429190e-01 6.501784e-01 5.622929e-01 6.974876e-01

30 rows × 100 columns


In [18]:
plt.figure(figsize=(20,10))
plt.title('Theta matrix for the first 100 documents')
sns.heatmap(theta.iloc[:,:100], cmap='YlGnBu', xticklabels=False)
plt.show();


C:\ProgramData\Anaconda3\envs\python2\lib\site-packages\seaborn\matrix.py:151: DeprecationWarning: elementwise == comparison failed; this will raise an error in the future.
  if yticklabels == []:

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

Помимо этих двух тем, фоновой и общенаучной, каждый документ характеризуется малым числом других тем.

Оценим $p(t)$ - долю каждой темы во всей коллекции. По формуле полной вероятности вычислять эти величины нужно как $p(t) = \sum_d p(t|d) p(d)$. Согласно вероятностной модели, $p(d)$ пропорционально длине документа d. Поступим проще: будем полагать, что все документы равновероятны. Тогда оценить $p(t)$ можно, просуммировав $p(t|d)$ по всем документам, а затем разделив полученный вектор на его сумму.

Создайте переменную-датафрейм с T строками, индексированными названиями тем, и 1 столбцом, содержащим оценки $p(t)$. Выведите датафрейм на печать.


In [19]:
# Ваш код
prob_theme_data = [np.sum(theta.iloc[i]) for i in range(theta.shape[0])]
prob_theme_data_normed = prob_theme_data / np.sum(prob_theme_data)
prob_theme = pd.DataFrame(data=prob_theme_data_normed, index=topic_labels, columns=['prob'])
prob_theme


Out[19]:
prob
церковь 0.011975
планета 0.012339
система 0.009096
культура 0.014267
право 0.008992
материал 0.010729
книга 0.007120
смерть 0.004974
метод 0.014357
частица 0.022601
война 0.016313
ребенок 0.007031
растение 0.008048
территория 0.015103
звезда 0.019987
задача 0.013829
раса 0.004554
политический 0.016947
слово 0.010133
революция 0.006677
город 0.009078
болезнь 0.009108
социальный 0.011651
матрица 0.007219
исторический 0.015869
язык 0.009823
страна 0.012222
клетка 0.025202
температура 0.006310
Фоновая тема 0.658447

In [20]:
prob_theme_max = prob_theme
prob_theme_min = prob_theme

print('Max 5 probabilities:')
for i in range(5):
    max_value = prob_theme_max.max()[0]
    print(prob_theme_max[prob_theme_max.values == max_value].index[0])
    prob_theme_max = prob_theme_max[prob_theme_max.values != max_value]

print('\nMin 3 probabilities:')
for i in range(3):
    min_value = prob_theme_min.min()[0]
    print(prob_theme_min[prob_theme_min.values == min_value].index[0])
    prob_theme_min = prob_theme_min[prob_theme_min.values != min_value]


Max 5 probabilities:
Фоновая тема
клетка
частица
звезда
политический

Min 3 probabilities:
раса
смерть
температура

Найдите 5 самых распространенных и 3 наименее освещенных темы в коллекции (наибольшие и наименьшие $p(t)$ соответственно), не считая фоновую и общенаучную. Укажите названия, которые вы дали этим темам.

Ваш ответ: 5 тем с max p(t): Фоновая тема клетка частица звезда политический 3 темы с min p(t): раса смерть температура

Визуализируйте матрицу $\Phi$ модальности авторов в виде изображения. Рекомендация: установите yticklabels=False в heatmap.


In [21]:
# Ваш код
plt.figure(figsize=(20,10))
plt.title('Theta matrix for the first 100 documents')
sns.heatmap(phi_a.iloc[:100], cmap='YlGnBu', yticklabels=False)
plt.show();


Каждой теме соответствует не очень большое число авторов - матрица достаточно разреженная. Кроме того, некоторые темы имеют доминирующего автора $a$, имеющего большую вероятность $p(a|t)$ - этот автор записал больше всего лекций по теме.

Будем считать, что автор $a$ значим в теме, если $p(a|t) > 0.01$. Для каждого автора посчитайте, в скольких темах он значим. Найдите авторов-рекордсменов, которые значимы (а значит, читали лекции) в >= 3 темах.


In [22]:
phi_a


Out[22]:
sbj0 sbj1 sbj2 sbj3 sbj4 sbj5 sbj6 sbj7 sbj8 sbj9 ... sbj20 sbj21 sbj22 sbj23 sbj24 sbj25 sbj26 sbj27 sbj28 bcg
Ярослав_Исполатов 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 3.767525e-15 0.000000e+00 0.0 0.000000e+00 0.000000e+00 1.100183e-13 0.000000 0.000000e+00 0.004769
Сергей_Демокритов 0.000000 0.000000 5.080262e-16 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 3.488657e-02 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Руслан_Смелянский 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 6.216063e-03 0.000000e+00 ... 7.598587e-02 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Александр_Апт 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 4.259059e-02 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Людмила_Новикова 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 1.456843e-07 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Александр_Парфенов 0.000000 0.000000 0.000000e+00 0.000000e+00 0.041443 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Джеффри_Шнапп 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 2.390124e-09 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 2.888579e-02 0.000000
Дмитрий_Чудаков 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.020226 0.000000e+00 0.000000
Дмитрий_Дождев 0.000000 0.000000 0.000000e+00 0.000000e+00 0.269379 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Владимир_Шалаев 0.000000 0.000000 1.579593e-12 0.000000e+00 0.000000 4.802466e-02 0.000000e+00 0.000000e+00 1.163521e-15 6.123714e-15 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Марк_Харрисон 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 2.133025e-02 0.000000 0.000000e+00 0.000000
Валерий_Фокин 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 9.937804e-02 0.000000e+00 ... 0.000000e+00 1.003262e-09 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Ави_Лёб 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Сергей_Гуриев 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 1.156283e-12 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 4.708394e-02 0.000000 0.000000e+00 0.000000
Эмиль_Ахмедов 0.000000 0.000016 6.534969e-02 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.080881e-01 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Алексей_Муравьёв 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Виктор_Быков 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 1.640151e-02 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Павел_Пахлов 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 3.488657e-02 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Павел_Уваров 0.068204 0.000000 0.000000e+00 0.000000e+00 0.000000 5.953167e-06 0.000000e+00 3.242674e-16 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 1.357917e-02 0.000000e+00 0.000000e+00 0.000000 8.418371e-08 0.000000
Сергей_Соколовский 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 1.430742e-04 0.000000e+00 1.553856e-02 0.000000 0.000000e+00 0.000000
Светлана_Боринская 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.030340 0.000000e+00 0.000000
Эдуард_Боос 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.325771e-02 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Евгений_Шеваль 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.131459 0.000000e+00 0.000000
Нина_Сумбатова 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 1.429114e-02 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 1.625867e-05 0.000000e+00 0.000000 0.000000e+00 0.000000
Виктор_Вахштайн 0.000000 0.000000 0.000000e+00 1.349230e-15 0.000000 0.000000e+00 0.000000e+00 1.756056e-15 0.000000e+00 0.000000e+00 ... 2.778634e-16 0.000000e+00 6.644868e-01 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000120
Хопи_Хукстра 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.010113 0.000000e+00 0.000000
Валерий_Рубаков 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.700429e-02 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Сергей_Науменко 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.030340 0.000000e+00 0.000000
Андрей_Савельев-Трофимов 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 8.030489e-11 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Aльберт_Давлетшин 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 1.465157e-03 0.0 0.000000e+00 1.113690e-10 0.000000e+00 0.009378 0.000000e+00 0.000000
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
Роберт_Лэнгер 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 4.062152e-15 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Олег_Воскобойников 0.000007 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 9.163693e-02 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Татьяна_Котова 0.000000 0.000000 0.000000e+00 2.779270e-09 0.000000 0.000000e+00 6.819314e-16 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.009538
Дмитрий_Полдников 0.000064 0.000000 0.000000e+00 0.000000e+00 0.041345 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Андрей_Семенов 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.325771e-02 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Яков_Фоминов 0.000000 0.000000 2.416585e-02 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 4.676496e-11 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 1.044256e-08 0.000000
Дэвид_Синклер 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 4.578224e-09 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Дэвид_С._Джонс 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 6.714608e-14 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Анна_Рогожина 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 2.566339e-02 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Мария_Шутова 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.020226 0.000000e+00 0.000000
Марина_Новикова-Грунд 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000019
Кристофер_Карр 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.004769
Сергей_Нечаев 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Алексей_Орлов 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 2.888580e-02 0.000000
Георгий_Старостин 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 5.685657e-02 0.000000e+00 0.000000 0.000000e+00 0.000000
Дмитрий_Баюк 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 3.460113e-13 0.000000e+00 0.000000e+00 0.0 0.000000e+00 3.316609e-10 0.000000e+00 0.000000 0.000000e+00 0.009538
Антон_Чугунов 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 2.837969e-02 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000010 0.000000e+00 0.000000
Анатолий_Вишневский 0.000000 0.000000 1.996819e-10 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 1.447367e-02 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 1.820986e-05 0.000000 0.000000e+00 0.000000
Юрий_Рогулёв 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Екатерина_Болтунова 0.013744 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Дэвид_Кларк 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 7.473745e-07 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Алексей_Малашенко 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 4.259044e-02 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 9.303008e-09 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Ирина_Левонтина 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 1.566961e-16 0.000000e+00 0.0 2.618421e-02 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Андрей_Коротаев 0.000000 0.000000 0.000000e+00 2.059654e-02 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Татьяна_Гусарова 0.000000 0.000000 0.000000e+00 0.000000e+00 0.020721 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Дарья_Радченко 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 2.965705e-02 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Ирина_Каспэ 0.000000 0.000000 0.000000e+00 2.059654e-02 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Марина_Корсакова-Крейн 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 2.325771e-02 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Павел_Степанцов 0.000000 0.000000 0.000000e+00 4.119309e-02 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000
Дэвид_Гросс 0.000000 0.000000 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 1.162886e-02 ... 0.000000e+00 0.000000e+00 0.000000e+00 0.0 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 0.000000e+00 0.000000

539 rows × 30 columns


In [23]:
for i in range(phi_a.shape[0]):
    num_valuble_topics = 0
    for val in phi_a.iloc[i]:
        if val > 0.01:
            num_valuble_topics += 1
    if num_valuble_topics >= 3:
        print(i),
        print(phi_a.index[i])


184 Елена_Брызгалина
200 Андрей_Цатурян
229 Алина_Бодрова
342 Дмитрий_Лось

In [24]:
print(phi_a.iloc[184])


sbj0     0.000000e+00
sbj1     0.000000e+00
sbj2     1.054398e-01
sbj3     0.000000e+00
sbj4     0.000000e+00
sbj5     0.000000e+00
sbj6     0.000000e+00
sbj7     1.202001e-02
sbj8     0.000000e+00
sbj9     0.000000e+00
sbj10    0.000000e+00
sbj11    0.000000e+00
sbj12    0.000000e+00
sbj13    0.000000e+00
sbj14    0.000000e+00
sbj15    0.000000e+00
sbj16    0.000000e+00
sbj17    2.384968e-07
sbj18    0.000000e+00
sbj19    0.000000e+00
sbj20    0.000000e+00
sbj21    3.945983e-02
sbj22    0.000000e+00
sbj23    0.000000e+00
sbj24    0.000000e+00
sbj25    0.000000e+00
sbj26    0.000000e+00
sbj27    0.000000e+00
sbj28    0.000000e+00
bcg      0.000000e+00
Name: Елена_Брызгалина, dtype: float32
Ваш ответ: авторы, значимые в не менее чем 3 темах: 184 Елена_Брызгалина 200 Андрей_Цатурян 229 Алина_Бодрова 342 Дмитрий_Лось

Большинство авторов значимы в 1 теме, что логично.

Построение тематической карты авторов

По сути, в матрице $\Phi$, соответствующей модальности авторов, записаны тематические кластеры авторов. Для любого автора мы можем составить его тематический круг - авторов, разбирающихся в той же теме, что и данный. Интересующиеся слушатели могут попробовать выполнить эту процедуру для ученых, читающих лекции на Постнауке, которых они знают (например, на Постнауке есть лекции с К. В. Воронцовым - лектором текущего модуля :)

Составим карту близости авторов по тематике их исследований. Для этого применим метод понижения размерности MDS к тематическим профилям авторов.

Чтобы получить тематический профиль автора, распределение $p(t|a)$, нужно воспользоваться формулой Байеса: $p(t|a) = \frac {p(a|t) p(t)} {\sum_t' p(a|t') p(t')}$. Все необходимые для этого величины у вас есть и записаны в переменных phi и pt.

Передайте матрицу тематических профилей авторов, записанных по строкам, в метод MDS с n_components=2. Используйте косинусную метрику (она хорошо подходит для поиска расстояний между векторами, имеющими фиксированную сумму компонент).


In [25]:
from sklearn.manifold import MDS
from sklearn.metrics import pairwise_distances

In [26]:
prob_theme_author = np.empty(phi_a.shape)
for i in range(prob_theme_author.shape[0]):
    for j in range(prob_theme_author.shape[1]):
        prob_theme_author[i,j] = phi_a.iloc[i,j] * prob_theme.iloc[j,:] / np.sum(phi_a.iloc[i,:] * prob_theme.prob.values)

In [27]:
# Ваш код
similarities = pairwise_distances(prob_theme_author, metric='cosine')
mds = MDS(n_components=2, dissimilarity='precomputed', random_state=42)
pos = mds.fit_transform(similarities)

Визуализируйте найденные двумерные представления с помощью функции scatter.


In [28]:
# Ваш код
plt.figure(figsize=(10,5))
plt.scatter(pos[:,0], pos[:,1])
plt.show();


Должно получиться, что некоторые грппы авторов формируют сгустки, которые можно считать тематическими группами авторов.

Раскрасим точки следующим образом: для каждого автора выберем наиболее вероятную для него тему ($\max_t p(t|a)$), и каждой теме сопоставим цвет. Кроме того, добавим на карту имена и фамилии авторов, это можно сделать в цикле по всем точкам с помощью функции plt.annotate, указывая метку точки первым аргументом и ее координаты в аргументе xy. Рекомендуется сделать размер изображения большим, тогда маркеры точек тоже придется увеличить (s=100 в plt.scatter). Изобразите карту авторов и сохраните в pdf-файл с помощью функции plt.savefig.

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


In [29]:
import matplotlib.cm as cm
colors = cm.rainbow(np.linspace(0, 1, T)) # цвета для тем
# Ваш код
max_theme_prob_for_colors = [np.argmax(author) for author in prob_theme_author]
plt.figure(figsize=(15,10))
plt.axis('off')
plt.scatter(pos[:,0], pos[:,1], s=100, c=colors[max_theme_prob_for_colors])
for i, author in enumerate(phi_a.index):
        plt.annotate(author, pos[i])
plt.savefig('authors_map.pdf', dpi=200, format='pdf')
plt.show();


Создание простого тематического навигатора по Постнауке

Наш тематический навигатор будет для каждой темы показывать ее список слов, а также список релевантных теме документов.

Нам понадобятся распределения $p(d|t)$. По формуле Байеса $p(d|t) = \frac{p(t|d)p(d)}{\sum_{d'}p(t|d')p(d')}$, но поскольку мы считаем документы равновероятными, достаточно разделить каждую строку $\Theta$ на ее сумму, чтобы оценить распределение.

Отсортируйте матрицу $p(d|t)$ по убыванию $p(d|t)$ в каждой теме (то есть построчно). Нам понадобятся индексы наиболее вероятных документов в каждой теме, поэтому используйте функцию argmax.


In [30]:
# Ваш код
prob_doc_theme = theta.values / np.array([np.sum(theme) for theme in theta.values])[:, np.newaxis]
prob_doc_theme_sorted_indices = prob_doc_theme.argsort(axis=1)[:,::-1]
prob_doc_theme_sorted_indices


Out[30]:
array([[ 192,  735,  414, ...,  939,  938,    0],
       [ 647, 1225, 1199, ...,  507, 1250,  863],
       [ 231,  549,  608, ...,  527, 1322,  863],
       ..., 
       [  76, 1237,  281, ...,  868,  867,  863],
       [1126,  522, 1170, ...,  739, 1402,  863],
       [1306,  567,  506, ...,  647,  218,  153]], dtype=int64)

Создавать навигатор мы будем прямо в jupiter notebook: это возможно благодаря тому факту, что при печати ссылки она автоматически превращается в гиперссылку.


In [31]:
print "http://yandex.ru"   # получится кликабельная ссылка


http://yandex.ru

Кроме того, подключив модуль ipython.core.display, можно использовать html-разметку в выводе. Например:


In [32]:
from IPython.core.display import display, HTML
display(HTML(u"<h1>Заголовок</h1>"))   # также <h2>, <h3>
display(HTML(u"<ul><li>Пункт 1</li><li>Пункт 2</li></ul>"))
display(HTML(u'<font color="green">Зеленый!</font>'))
display(HTML(u'<a href="http://yandex.ru">Еще один вариант вывода ссылки</a>'))


Заголовок

  • Пункт 1
  • Пункт 2
Зеленый!

В цикле для каждой темы выведите ее заголовок, в следующей строке - топ-10 слов темы, затем в виде списка ссылки на 10 наиболее релевантных (по $p(d|t)$) теме документов. Используйте html-разметку. Творчество приветствуется :)


In [33]:
# Ваш код
for i, theme in enumerate(topic_labels):
    display(HTML("<h3>%s</h3>" % theme))
    for j in range(10):
        print(tokens[model.topic_names[i]][j]),
    print('')
    for k in range(10):
        print(theta.columns[prob_doc_theme_sorted_indices[i,k]])


церковь

церковь власть средневековый император русь святой римский папа князь сага 
http://postnauka.ru/video/9299
http://postnauka.ru/video/3348
http://postnauka.ru/video/24030
http://postnauka.ru/video/9968
http://postnauka.ru/video/23472
http://postnauka.ru/video/13156
http://postnauka.ru/video/31677
http://postnauka.ru/video/50350
http://postnauka.ru/video/24034
http://postnauka.ru/video/50668

планета

планета земля атмосфера солнце солнечный белый газ образовываться карлик вокруг 
http://postnauka.ru/video/53693
http://postnauka.ru/video/32889
http://postnauka.ru/video/31695
http://postnauka.ru/video/51364
http://postnauka.ru/video/9835
http://postnauka.ru/video/36249
http://postnauka.ru/video/9690
http://postnauka.ru/video/49261
http://postnauka.ru/video/24245
http://postnauka.ru/video/37994

система

система трудность поведение частота двигаться точность искусственный движение относительность тест 
http://postnauka.ru/video/1856
http://postnauka.ru/video/51174
http://postnauka.ru/video/52553
http://postnauka.ru/video/34426
http://postnauka.ru/video/52548
http://postnauka.ru/video/51382
http://postnauka.ru/video/19509
http://postnauka.ru/video/21662
http://postnauka.ru/video/37982
http://postnauka.ru/video/41348

культура

культура понятие культурный восприятие сознание феномен личность воспринимать ощущение чувство 
http://postnauka.ru/video/11034
http://postnauka.ru/video/12524
http://postnauka.ru/video/12740
http://postnauka.ru/video/5891
http://postnauka.ru/video/36707
http://postnauka.ru/video/7747
http://postnauka.ru/video/7169
http://postnauka.ru/video/9874
http://postnauka.ru/video/11626
http://postnauka.ru/video/7731

право

право литература искусство литературный юрист писатель должник собственность обязательство римский 
http://postnauka.ru/video/17913
http://postnauka.ru/video/31688
http://postnauka.ru/video/38009
http://postnauka.ru/video/34414
http://postnauka.ru/video/49455
http://postnauka.ru/video/14297
http://postnauka.ru/video/17825
http://postnauka.ru/video/13042
http://postnauka.ru/video/16822
http://postnauka.ru/video/42220

материал

материал структура молекула свойство углерод применение поверхность полимер кристалл металл 
http://postnauka.ru/video/13544
http://postnauka.ru/video/12375
http://postnauka.ru/video/41686
http://postnauka.ru/video/31182
http://postnauka.ru/video/22592
http://postnauka.ru/video/46379
http://postnauka.ru/video/36492
http://postnauka.ru/video/36657
http://postnauka.ru/video/36490
http://postnauka.ru/video/47818

книга

книга фильм автор кино написать документ жанр тема театр кинематограф 
http://postnauka.ru/video/10759
http://postnauka.ru/video/39723
http://postnauka.ru/video/13541
http://postnauka.ru/video/38510
http://postnauka.ru/video/42807
http://postnauka.ru/video/52416
http://postnauka.ru/video/47204
http://postnauka.ru/video/57127
http://postnauka.ru/video/47208
http://postnauka.ru/video/47202

смерть

смерть ритуал террор правитель государь обряд служба конвент диктатура моральный 
http://postnauka.ru/video/1893
http://postnauka.ru/video/48480
http://postnauka.ru/video/32882
http://postnauka.ru/video/37992
http://postnauka.ru/video/50656
http://postnauka.ru/video/48335
http://postnauka.ru/video/12374
http://postnauka.ru/video/1899
http://postnauka.ru/video/51331
http://postnauka.ru/video/21660

метод

метод химический соединение вещество реакция химия давление лекарство синтез органический 
http://postnauka.ru/video/18048
http://postnauka.ru/video/13700
http://postnauka.ru/video/11646
http://postnauka.ru/video/19071
http://postnauka.ru/video/51490
http://postnauka.ru/video/24449
http://postnauka.ru/video/10473
http://postnauka.ru/video/13151
http://postnauka.ru/video/7363
http://postnauka.ru/video/9144

частица

частица энергия квантовый поле физика взаимодействие атом теория магнитный электрон 
http://postnauka.ru/video/13043
http://postnauka.ru/video/18870
http://postnauka.ru/video/18873
http://postnauka.ru/video/11651
http://postnauka.ru/video/22760
http://postnauka.ru/video/24434
http://postnauka.ru/video/2945
http://postnauka.ru/video/14283
http://postnauka.ru/video/7753
http://postnauka.ru/video/7311

война

война россия советский русский власть российский германия мировой реформа историк 
http://postnauka.ru/video/35041
http://postnauka.ru/video/46939
http://postnauka.ru/video/19574
http://postnauka.ru/video/31183
http://postnauka.ru/video/29992
http://postnauka.ru/video/51180
http://postnauka.ru/video/26667
http://postnauka.ru/video/25906
http://postnauka.ru/video/42809
http://postnauka.ru/video/41895

ребенок

ребенок возраст семья кровь взрослый мать сон родитель старение конфликт 
http://postnauka.ru/video/22892
http://postnauka.ru/video/59638
http://postnauka.ru/video/30678
http://postnauka.ru/video/60527
http://postnauka.ru/video/57657
http://postnauka.ru/video/18613
http://postnauka.ru/video/30606
http://postnauka.ru/video/17395
http://postnauka.ru/video/6377
http://postnauka.ru/video/29103

растение

растение ткань орган иммунный рак озеро сердце опухоль мышца нейронный 
http://postnauka.ru/video/16821
http://postnauka.ru/video/23172
http://postnauka.ru/video/46562
http://postnauka.ru/video/13746
http://postnauka.ru/video/51169
http://postnauka.ru/video/51501
http://postnauka.ru/video/33793
http://postnauka.ru/video/18192
http://postnauka.ru/video/26213
http://postnauka.ru/video/59617

территория

территория народ христианский империя восток древний письменность государство китай цивилизация 
http://postnauka.ru/video/53171
http://postnauka.ru/video/50071
http://postnauka.ru/video/2527
http://postnauka.ru/video/58742
http://postnauka.ru/video/59201
http://postnauka.ru/video/50066
http://postnauka.ru/video/49203
http://postnauka.ru/video/48959
http://postnauka.ru/video/46313
http://postnauka.ru/video/45458

звезда

звезда галактика масса черный вселенная свет объект скорость волна дыра 
http://postnauka.ru/video/6673
http://postnauka.ru/video/17780
http://postnauka.ru/video/31193
http://postnauka.ru/video/29998
http://postnauka.ru/video/30015
http://postnauka.ru/video/2971
http://postnauka.ru/video/23506
http://postnauka.ru/video/48109
http://postnauka.ru/video/23502
http://postnauka.ru/video/57338

задача

задача информация память данные решение компьютер психология мышление анализ внимание 
http://postnauka.ru/video/24182
http://postnauka.ru/video/24451
http://postnauka.ru/video/5181
http://postnauka.ru/video/23763
http://postnauka.ru/video/53415
http://postnauka.ru/video/19577
http://postnauka.ru/video/56052
http://postnauka.ru/video/57336
http://postnauka.ru/video/50349
http://postnauka.ru/video/17421

раса

раса африка остров америка южный станислав нос волос индия монголоид 
http://postnauka.ru/video/31707
http://postnauka.ru/video/32898
http://postnauka.ru/video/42707
http://postnauka.ru/video/49262
http://postnauka.ru/video/42735
http://postnauka.ru/video/37732
http://postnauka.ru/video/35150
http://postnauka.ru/video/40880
http://postnauka.ru/video/17397
http://postnauka.ru/video/36253

политический

политический философия государство общество философский философ партия правовой политика суд 
http://postnauka.ru/video/12738
http://postnauka.ru/video/32906
http://postnauka.ru/video/2526
http://postnauka.ru/video/12371
http://postnauka.ru/video/3418
http://postnauka.ru/video/22975
http://postnauka.ru/video/36713
http://postnauka.ru/video/37965
http://postnauka.ru/video/2972
http://postnauka.ru/video/9728

слово

слово текст русский словарь предложение категория значение корпус глагол конструкция 
http://postnauka.ru/video/36272
http://postnauka.ru/video/1898
http://postnauka.ru/video/6720
http://postnauka.ru/video/48960
http://postnauka.ru/video/47548
http://postnauka.ru/video/56616
http://postnauka.ru/video/51499
http://postnauka.ru/video/57524
http://postnauka.ru/video/30017
http://postnauka.ru/video/2946

революция

революция французский свобода франция роман национальный король нация аргумент творчество 
http://postnauka.ru/video/5396
http://postnauka.ru/video/48492
http://postnauka.ru/video/43843
http://postnauka.ru/video/47823
http://postnauka.ru/video/22079
http://postnauka.ru/video/45548
http://postnauka.ru/video/53577
http://postnauka.ru/video/28944
http://postnauka.ru/video/54742
http://postnauka.ru/video/41671

город

город технология сеть робот городской интернет компания пользователь музей библиотека 
http://postnauka.ru/video/13742
http://postnauka.ru/video/12515
http://postnauka.ru/video/11634
http://postnauka.ru/video/9998
http://postnauka.ru/video/7068
http://postnauka.ru/video/47301
http://postnauka.ru/video/17604
http://postnauka.ru/video/30026
http://postnauka.ru/video/50792
http://postnauka.ru/video/29812

болезнь

болезнь заболевание пациент женщина лечение медицина врач боль препарат медицинский 
http://postnauka.ru/video/2541
http://postnauka.ru/video/54325
http://postnauka.ru/video/27925
http://postnauka.ru/video/51384
http://postnauka.ru/video/55539
http://postnauka.ru/video/49206
http://postnauka.ru/video/12974
http://postnauka.ru/video/45961
http://postnauka.ru/video/13746
http://postnauka.ru/video/43853

социальный

социальный знание социология объект социологический дисциплина перевод познание обучение описание 
http://postnauka.ru/video/10783
http://postnauka.ru/video/434
http://postnauka.ru/video/3628
http://postnauka.ru/video/2530
http://postnauka.ru/video/6380
http://postnauka.ru/video/12083
http://postnauka.ru/video/11640
http://postnauka.ru/video/17491
http://postnauka.ru/video/4280
http://postnauka.ru/video/14295

матрица

матрица микроорганизм схема эмоция алгоритм вычислительный эмоциональный глубина интеллект микроб 
http://postnauka.ru/video/31671
http://postnauka.ru/video/49437
http://postnauka.ru/video/42416
http://postnauka.ru/video/3635
http://postnauka.ru/video/34964
http://postnauka.ru/video/33788
http://postnauka.ru/video/52738
http://postnauka.ru/video/3420
http://postnauka.ru/video/3352
http://postnauka.ru/video/37976

исторический

исторический бог традиция миф царь греческий представление эпоха религиозный религия 
http://postnauka.ru/video/10779
http://postnauka.ru/video/12527
http://postnauka.ru/video/9429
http://postnauka.ru/video/21631
http://postnauka.ru/video/7065
http://postnauka.ru/video/9997
http://postnauka.ru/video/43664
http://postnauka.ru/video/5999
http://postnauka.ru/video/12517
http://postnauka.ru/video/5876

язык

язык лингвист языковой английский гласный согласный звук лингвистический говор филологический 
http://postnauka.ru/video/8964
http://postnauka.ru/video/13041
http://postnauka.ru/video/10773
http://postnauka.ru/video/48114
http://postnauka.ru/video/15343
http://postnauka.ru/video/16157
http://postnauka.ru/video/51171
http://postnauka.ru/video/3403
http://postnauka.ru/video/14284
http://postnauka.ru/video/57879

страна

страна экономический экономика политика идентичность ценность кризис принятие общественный сталин 
http://postnauka.ru/video/31684
http://postnauka.ru/video/9389
http://postnauka.ru/video/7781
http://postnauka.ru/video/3605
http://postnauka.ru/video/30601
http://postnauka.ru/video/5882
http://postnauka.ru/video/13152
http://postnauka.ru/video/28282
http://postnauka.ru/video/27823
http://postnauka.ru/video/6497

клетка

клетка мозг организм ген днк белок биологический животное генетический нейрон 
http://postnauka.ru/video/5915
http://postnauka.ru/video/10475
http://postnauka.ru/video/19436
http://postnauka.ru/video/10754
http://postnauka.ru/video/17051
http://postnauka.ru/video/11628
http://postnauka.ru/video/35051
http://postnauka.ru/video/5390
http://postnauka.ru/video/6477
http://postnauka.ru/video/44252

температура

температура университет сверхпроводимость профессор сверхпроводник сверхпроводящий железо заимствование гумбольдт магнит 
http://postnauka.ru/video/2973
http://postnauka.ru/video/50340
http://postnauka.ru/video/31198
http://postnauka.ru/video/51380
http://postnauka.ru/video/22314
http://postnauka.ru/video/55756
http://postnauka.ru/video/25326
http://postnauka.ru/video/50699
http://postnauka.ru/video/31200
http://postnauka.ru/video/19461

Фоновая тема

быть что это который этот как они мочь такой очень 
http://postnauka.ru/video/12376
http://postnauka.ru/video/51365
http://postnauka.ru/video/49851
http://postnauka.ru/video/42436
http://postnauka.ru/video/51184
http://postnauka.ru/video/45956
http://postnauka.ru/video/41678
http://postnauka.ru/video/51178
http://postnauka.ru/video/10750
http://postnauka.ru/video/5602
Заключение

В этом Peer Review мы познакомились с базовыми возможностями библиотеки BigARTM и с методами визуализации тематических моделей. Визуализация тематических моделей - это широкая и активно развивающаяся область научных исследований. Мы рассмотрели только самые простые приемы. Желающие могут попробовать применить Serendip, разработанный в University of Wisconsin-Madison, к построенной модели. Эта библиотека позволяет максимально полно охарактеризовать темы и написана для языка python.

Сделав задание, вы можете выбрать в навигаторе наиболее интересную для вас тему и посмотреть видеолекции :) На Постнауке очень много интересных материалов.