@ Aron và @Roko Mijic của phương pháp tiếp cận bỏ bê thực tế là chức năng show_topics
lợi nhuận theo mặc định top 20 từ chỉ mỗi chủ đề. Nếu một trả về tất cả các từ soạn một chủ đề, tất cả các xác suất chủ đề gần đúng trong trường hợp đó sẽ là 1 (hoặc 0,999999). Tôi đã thử nghiệm với đoạn mã sau, đó là một sự thích nghi của @Roko Mijic của:
def topic_prob_extractor(gensim_hdp, t=-1, w=25, isSorted=True):
"""
Input the gensim model to get the rough topics' probabilities
"""
shown_topics = gensim_hdp.show_topics(num_topics=t, num_words=w ,formatted=False)
topics_nos = [x[0] for x in shown_topics ]
weights = [ sum([item[1] for item in shown_topics[topicN][1]]) for topicN in topics_nos ]
if (isSorted):
return pd.DataFrame({'topic_id' : topics_nos, 'weight' : weights}).sort_values(by = "weight", ascending=False);
else:
return pd.DataFrame({'topic_id' : topics_nos, 'weight' : weights});
Một tốt hơn, nhưng tôi không chắc chắn nếu 100% hợp lệ, cách tiếp cận là một trong những đề cập here.Bạn có thể nhận được trọng lượng đúng (vector alpha) của mô hình HDP như:
alpha = hdpModel.hdp_to_lda()[0];
Kiểm tra các chủ đề các chủ đề giá trị alpha tương đương là hơn logic hơn kiểm đếm lên trọng lượng của 20 từ đầu tiên của mỗi chủ đề để xấp xỉ xác suất sử dụng của nó trong dữ liệu.
không phải tất cả đều nằm trong 'chủ đề' bất kể xác suất – user86895