Неэффективность тематического моделирования для кластеризации текста

Я попытался выполнить кластеризацию текста с помощью LDA, но это не дает мне отдельных кластеров. Ниже мой код

#Import libraries
from gensim import corpora, models
import pandas as pd
from gensim.parsing.preprocessing import STOPWORDS
from itertools import chain

#stop words
stoplist = list(STOPWORDS)
new = ['education','certification','certificate','certified']
stoplist.extend(new)
stoplist.sort()

#read data
dat = pd.read_csv('D:\data_800k.csv',encoding='latin').Certi.tolist()
#remove stop words
texts = [[word for word in document.lower().split() if word not in stoplist] for document in dat]
#dictionary
dictionary = corpora.Dictionary(texts)
#corpus
corpus = [dictionary.doc2bow(text) for text in texts]
#train model
lda = models.LdaMulticore(corpus, id2word=dictionary, num_topics=25, workers=4,minimum_probability=0)
#print topics
lda.print_topics(num_topics=25, num_words=7)
#get corpus
lda_corpus = lda[corpus]
#calculate cutoff score
scores = list(chain(*[[score for topic_id,score in topic] \
                      for topic in [doc for doc in lda_corpus]]))


#threshold
threshold = sum(scores)/len(scores)
threshold
**0.039999999971137644**

#cluster1
cluster1 = [j for i,j in zip(lda_corpus,dat) if i[0][1] > threshold]

#cluster2
cluster2 = [j for i,j in zip(lda_corpus,dat) if i[1][1] > threshold]

Проблема в том, что в кластере 1 есть перекрывающиеся элементы, которые, как правило, присутствуют в кластере 2 и так далее.

Я также пытался увеличить порог вручную до 0,5, однако это дает мне ту же проблему.


person StatguyUser    schedule 20.03.2018    source источник


Ответы (1)


Это просто реалистично.

Ни документы, ни слова обычно не могут быть однозначно отнесены к одному кластеру.

Если вы вручную пометите некоторые данные, вы также быстро найдете некоторые документы, которые не могут быть четко помечены как один или другой. Так что это хорошо, если бы алгоритм не делал вид, что существует хорошее уникальное назначение.

person Has QUIT--Anony-Mousse    schedule 21.03.2018