Ayant une grande colonne pandas de texte, je veux d'abord entraîner un modèle LDA sur l'ensemble du texte de cette colonne et identifier 50 sujets :
doc_clean = df['tweet_tokenized'].tolist()
dictionary = corpora.Dictionary(doc_clean)
doc_term_matrix = [dictionary.doc2bow(doc) for doc in doc_clean]
lda = LdaMulticore(doc_term_matrix, id2word=dictionary, num_topics=50)
Ensuite, je veux créer 50 colonnes associées à chaque sujet, et itérer à travers chaque ligne et mettre sa probabilité d'appartenir à l'un des sujets à son ou ses sujets correspondants et mettre des zéros pour le reste des sujets.
Par exemple, si les résultats de l'application du LDA entraîné sur la première ligne sont :
new_doc = dictionary.doc2bow(tweet1)
results = lda(new_doc)
results:
[(1, 0.92), (4,0.42)]
Sachant que le tweet1 appartient au thème 1 avec une probabilité de 0,92 et au thème 4 avec une probabilité de 0,42, je veux avoir 50 nouvelles colonnes associées au thème 1, au thème 2, ..., au thème 50, et donc les valeurs pour le thème 1 soient 0,92 et le thème 4 soient 0,42 et des zéros pour tous les autres thèmes :
topic1 topic2 topic3 topic4 topic5 ... topic50
tweet1 0.92 0 0 0.42 0 ... 0
Existe-t-il un moyen pythonique de réaliser rapidement la dernière partie (c'est-à-dire le remplissage de 50 colonnes) ?