【问题标题】:How to extract topics from existing text clusters?如何从现有的文本集群中提取主题?
【发布时间】:2020-04-08 18:47:49
【问题描述】:

我在文本语料库上执行了硬聚类(使用 tf-idf 权重)并获得了 ~= 200 个聚类。如果我想获取每个集群的主题,我该怎么做?

我尝试在原始文本语料库(预聚类)上使用 LDA 并获得了许多主题,但是我不确定如何将这些主题映射到我现有的每个集群上。 有没有其他方法可以推荐或者 LDA 是正确的方法,我该如何进行?

在线资料仅显示如何将 lda 主题映射到文档句子,而不是预先存在的集群。如果我这样做,并根据它们分配的主题对这些句子进行分段,我将得到与我原来的集群不同的结果(这并不理想)。

提前感谢您的帮助,如果有任何概念错误,请原谅,因为我对 NLP 相当陌生。

【问题讨论】:

  • 您使用什么编程语言进行分析?知道答案会很有帮助。
  • 哦,是的,我目前正在使用 python,感谢您的提问 :)
  • 哦,是的,我目前正在使用 python,感谢您的提问 :)

标签: nlp cluster-analysis lda topic-modeling


【解决方案1】:

我的方法是通过分配的集群拆分您的 TFIDF doc-term 矩阵,然后将这些术语的 tfidf 分数相加(基本上将所有行加在一起)。这将为您提供每个集群的热门词。

如果我们假设 dtm 是您的文档术语矩阵,则“功能”是您的术语列表,按 dtm 列的顺序排列,clusters 是您的集群标签列表,与行的顺序相同在您的dtm 中,这应该为您提供每个集群的热门词

import pandas as pd

def top_terms(df, top_n=5):
    return df.sum().sort_values(ascending=False).head(top_n)

df = pd.DataFrame(dtm, columns=features)

df['labels'] = clusters

df.groupby('labels').apply(top_terms, top_n=10)

【讨论】:

    猜你喜欢
    • 2018-12-14
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    相关资源
    最近更新 更多