J'ai formé un algorithme LDA sur un corpus, et ce que je voudrais faire, c'est obtenir pour chaque phrase le sujet sur lequel il correspond, afin de faire une comparaison entre ce que l'algorithme trouve et les étiquettes que j'ai.Gensim trouver des sujets dans des phrases
J'ai essayé avec le code ci-dessous, mais les résultats sont tout à fait mauvais, je trouve beaucoup de sujet 17 (peut-être 25% du volume, il devrait être plus proche de 5%)
Merci pour votre aide
# text lemmatized: list of string lemmatized
dico = Dictionary(texts_lemmatized)
corpus_lda = [dico.doc2bow(text) for text in texts_lemmatized]
lda_ = LdaModel(corpus_lda, num_topics=18)
df_ = pd.DataFrame([])
data = []
# theme_commentaire = label of the string
for i in range(0, len(theme_commentaire)):
# lda_.get_document_topics() gives the distribution of all topic for a specific sentence
algo = max(lda_.get_document_topics(corpus_lda[i]))[0]
human = theme_commentaire[i]
data.append([str(algo), human])
cols = ['algo', 'human']
df_ = pd.DataFrame(data, columns=cols)
df_.head()
Lire ce SO Question pertinente: http://stackoverflow.com/q/42269313/7414759 – stovfl
ce n'est pas vraiment mon problème important est de LDA pas TFIDF. J'ai trouvé mon problème cependant, c'est la fonction max(), elle fonctionne sur la valeur clé de ma liste de tuple [(num_topics, probabilités)] donc en gros je vais avoir 17 la plupart du temps parce que c'est la plus grosse clé. – glouis