In [2]:
from gensim.models import AuthorTopicModel

model = AuthorTopicModel.load('model.atmodel')


C:\ProgramData\Anaconda3\lib\site-packages\gensim\utils.py:860: UserWarning: detected Windows; aliasing chunkize to chunkize_serial
  warnings.warn("detected Windows; aliasing chunkize to chunkize_serial")

In [6]:
for topic in model.show_topics(num_topics=100):
    words = ''
    for word, prob in model.show_topic(topic[0]):
        words += word + ' '
    print('Words: ' + words)
    print()


Words: a laotraopinion d y actuar llevan el dinero credenciales público 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: campaña rápido documento democracia mexicana capítulo imagen estrategia arranca inglés 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: a el y edomex campaña méxico partidos morena candidatos pri 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: y a vía ojo monterrey gracias escribe enlared el enlared_escribe 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: lomásyi columna more y amlo LoMásYI COLUMNA maduro monreal crisis méxico 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: y a el años méxico mundo vida mexicano mujer historia 

Words: a paris resultados concierto el grande panamá méxico borge just 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: a López Obrador venezolana lópez el maduro tuit obrador lópez_obrador gobierno 

Words: a fm y el alaire morena noticias venezuela cadena eva 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: a cdmx y el lluvias puebla oaxaca policías detienen detienen_a 

Words: notimextv podcastnotimex el junio voto comicios mexico caída sistema malas 

Words: comparto voto pan mexiquense y electoral opinión electorales prd a 

Words: the to of in trump is a and on it 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: informaciónw a as than deportesw one y may war falsos 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: luiscárdenasmvs entrevista_luiscárdenasmvs alaire_luiscárdenasmvs mesamvs roland arranca roland_garros regular eduardo_lizalde intervención 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: a opinión y el mil envivo méxico junio país seguridad 

Words: enfoque enfoque_noticias Enfoque Noticias arranca garros pasillo_salmonela estable intervención regular pasillo 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: y a conoce semana el cdmx almomento debes puedes porsinoloviste 

Words: a entérate y why an pierdas tv memes lasmásleídas junio 

Words: a edomex el y pri coahuila veracruz electoral morena nayarit 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: laotraopinión a some ne into estable regular roland intervención salmonela 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: a y el o aire out ciudadanos prensa saludos tienes 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: y gracias a am enportada abrazo fecha o saludos evento 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: eleccionesw a y el electoral eslahoradeopinar lt empieza agendapública mercado 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: a video y el chivas tigres gobierno libertad méxico eu 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: trump parís eu a Acuerdo de París el y climático cambio el_parís 

Words: roland_garros creación estable intervención regular arranca roland garros salmonela lizalde 

Words: a el y video detalles muertos atentado trump hombre londres 


In [7]:
%%time
from sklearn.manifold import TSNE
tsne = TSNE(n_components=2, random_state=0)
smallest_author = 0  # Ignore authors with documents less than this.
authors = [model.author2id[a] for a in model.author2id.keys() if len(model.author2doc[a]) >= smallest_author]
_ = tsne.fit_transform(model.state.gamma[authors, :])  # Result stored in tsne.embedding_


Wall time: 1.72 s

In [8]:
from bokeh.io import output_notebook
output_notebook()


Loading BokehJS ...

In [9]:
from bokeh.models import HoverTool
from bokeh.plotting import figure, show, ColumnDataSource

x = tsne.embedding_[:, 0]
y = tsne.embedding_[:, 1]
author_names = [model.id2author[a] for a in authors]

scale = 0.01
author_sizes = [len(model.author2doc[a]) for a in author_names]
radii = [size * scale for size in author_sizes]

source = ColumnDataSource(
        data=dict(
            x=x,
            y=y,
            author_names=author_names,
            author_sizes=author_sizes,
            radii=radii,
        )
    )

hover = HoverTool(
        tooltips=[
        ("author", "@author_names"),
        ("size", "@author_sizes"),
        ]
    )

p = figure(tools=[hover, 'crosshair,pan,wheel_zoom,box_zoom,reset,save,lasso_select'])
p.scatter('x', 'y', radius='radii', source=source, fill_alpha=0.6, line_color=None)
show(p)



In [11]:
from gensim.similarities import MatrixSimilarity


index = MatrixSimilarity(model[list(model.id2author.values())])

In [12]:
from gensim import matutils
import pandas as pd


author_vecs = [model.get_author_topics(author) for author in model.id2author.values()]

def similarity(vec1, vec2):
    dist = matutils.hellinger(matutils.sparse2full(vec1, model.num_topics), \
                              matutils.sparse2full(vec2, model.num_topics))
    sim = 1.0 / (1.0 + dist)
    return sim

def get_sims(vec):
    sims = [similarity(vec, vec2) for vec2 in author_vecs]
    return sims

def get_table(name, top_n=10, smallest_author=1):
    sims = get_sims(model.get_author_topics(name))


    table = []
    for elem in enumerate(sims):
        author_name = model.id2author[elem[0]]
        sim = elem[1]
        author_size = len(model.author2doc[author_name])
        if author_size >= smallest_author:
            table.append((author_name, sim, author_size))
            

    df = pd.DataFrame(table, columns=['Author', 'Score', 'Size'])
    df = df.sort_values('Score', ascending=False)[:top_n]
    
    return df

In [17]:
get_table('caudillomx')


Out[17]:
Author Score Size
87 caudillomx 1.000000 4
91 eduardosalazar4 0.531703 1
75 aguilarcamin 0.524155 1
132 ramonalberto 0.513458 2
84 campossuarez 0.512764 1
110 juanpadeleo 0.509731 3
107 jorgezepedap 0.509675 3
76 aguirre_alberto 0.509645 6
33 JACrespo1 0.509229 7
80 amparocasar 0.508874 4