Tuotuo Una biblioteca de modelado de temas escrita en Python. Tuotuo también es un chico lindo, mi hijo, que ahora tiene 6 meses.
Use el Pip Pip Pip para instalar Tuotuo. Puede encontrar la distribución PYPI aquí.
pip install TuoTuo --upgradeActualmente, la biblioteca solo admite el modelado de temas a través de la Asignación Latente Dirichlet (LDA). Como sabemos, LDA se puede implementar utilizando el muestreo de Gibbs y la inferencia variacional, elegimos este último, ya que esto es matemáticamente más sofisticado
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 -> injectionComo podemos ver desde las 5 palabras principales, podemos darnos cuenta fácilmente de la siguiente asignación:
Tema 0 -> Ciencias Tema 1 -> Ley Tema 2 -> Tema de arte 3 -> Tema deportivo 4 -> Salud
Las solicitudes de extracción son bienvenidas. Para cambios importantes, abra primero un problema para discutir lo que le gustaría cambiar.
Como no hay una biblioteca de modelado de temas maduros disponibles, también estamos buscando colaboradores que deseen contribuir en las siguientes direcciones:
La mayor parte del trabajo se completa para esta parte, aún necesitamos trabajar en:
Extienda la biblioteca para apoyar la inferencia de variaciones neuronales después de este documento ICML: inferencia de variaciones neuronales para el procesamiento de texto
Extienda la capacitación para apoyar el aprendizaje de refuerzo después de este documento de ACL: modelo de tema neuronal con aprendizaje de refuerzo
MIT