TUOTUO Библиотека моделирования темы, написанная на Python. Туотуо также милый мальчик, мой сын, которому сейчас 6 месяцев.
Используйте диспетчер пакетов PIP для установки Tuotuo. Вы можете найти распределение PYPI здесь.
pip install TuoTuo --upgradeВ настоящее время библиотека поддерживает только моделирование тем только посредством скрытого распределения дирихлета (LDA). Как мы знаем, LDA может быть реализован с использованием выборки Gibbs и вариационного вывода, мы выбираем последнее, поскольку это математически более сложное
import torch as tr
from tuotuo . generator import doc_generator
gen = doc_generator (
M = 100 ,
# we sample 100 documents
L = 20 ,
# each document would contain 20 pre-defined words
topic_prior = tr . tensor ([ 1 , 1 , 1 , 1 , 1 ], dtype = tr . double )
# we use a exchangable Dirichlet Distribution as our topic prior,
# that is a uniform distribution on 5 topics
)
train_docs = gen . generate_doc () from tuotuo . lda_model import LDASmoothed
import matplotlib . pyplot as plt
lda = LDASmoothed (
num_topics = 5 ,
)
perplexes = lda . fit (
train_docs ,
sampling = False ,
verbose = True ,
return_perplexities = True ,
)
plt . plot ( perplexes )
= >= >= >= >= >= >= >= >
Topic Dirichlet Prior , Alpha
1
Exchangeable Word Dirichlet Prior , Eta
1
Var Inf - Word Dirichlet prior , Lambda
( 5 , 40 )
Var Inf - Topic Dirichlet prior , Gamma
( 100 , 5 )
Init perplexity = 84.99592157507153
End perplexity = 45.96696541539976 
for topic_index in range ( lda . _lambda_ . shape [ 0 ]):
top5 = np . argsort ( lda . _lambda_ [ topic_index ,:],)[ - 5 :]
print ( f"Topic { topic_index } " )
for i , idx in enumerate ( top5 ):
print ( f"Top { i + 1 } -> { lda . train_doc . idx_to_vocab [ idx ] } " )
print ()
= >= >= >= >= >= >= >= >
Topic 0
Top 1 -> physical
Top 2 -> quantum
Top 3 -> research
Top 4 -> scientst
Top 5 -> astrophysics
Topic 1
Top 1 -> divorce
Top 2 -> attorney
Top 3 -> court
Top 4 -> bankrupt
Top 5 -> contract
Topic 2
Top 1 -> content
Top 2 -> Craftsmanship
Top 3 -> concert
Top 4 -> asymmetrical
Top 5 -> Symmetrical
Topic 3
Top 1 -> recreation
Top 2 -> FIFA
Top 3 -> football
Top 4 -> Olympic
Top 5 -> athletics
Topic 4
Top 1 -> fever
Top 2 -> appetite
Top 3 -> contagious
Top 4 -> decongestant
Top 5 -> injectionКак мы можем видеть из 5 лучших слов, мы можем легко реализовать следующее отображение:
Тема 0 -> Научная тема 1 -> Законодательство Тема 2 -> Арт Тема 3 -> Спортивная тема 4 -> Здоровье
Приглашаются запросы. Для серьезных изменений, пожалуйста, сначала откройте проблему, чтобы обсудить, что вы хотели бы изменить.
Поскольку нет доступной библиотеки моделирования темы, мы также ищем сотрудников, которые хотели бы внести свой вклад в следующих направлениях:
Большая часть работы завершена для этой части, нам все еще нужно работать:
Расширить библиотеку для поддержки нейронного вариационного вывода после этой статьи ICML: Нейронный вариационный вывод для обработки текста
Продлить обучение для поддержки обучения подкреплению после этой статьи ACL: модель нейронной темы с обучением подкреплением
Грань