在自然语言处理(NLP)领域,经常需要从大量文本中提取主题信息。主题建模是一种用于发现文档集合中隐藏主题的技术。LDA(Latent Dirichlet Allocation)是其中一种流行的主题建模算法。本文将介绍如何在Python中使用gensim和sklearn库来实现LDA主题建模。
将使用以下文档集合来应用LDA模型:
文档1:这个周末想看部电影。
文档2:昨天去购物了。新西兰在南安普顿击败印度,赢得了世界杯测试冠军。
文档3:不怎么看板球。Netflix和亚马逊Prime有很多好看的电影。
文档4:电影是放松的好方式,但这次想画画,读一些好书。已经很久没这样做了!
文档5:这蓝莓奶昔真好喝!试试读读乔·迪斯潘扎博士的书。他的作品真是颠覆性的!他的书帮助学到了很多关于思想如何影响生物学,以及如何重新连接大脑。
在Python中执行LDA的工作流程包括以下步骤:
文本预处理是LDA模型成功的关键。以下是常见的预处理步骤:
在gensim中,不需要显式创建文档-词矩阵(DTM)。gensim包有一个内部机制来创建DTM。下一步是将语料库(文档列表)转换为文档-词矩阵,使用之前准备的字典(这里使用的向量化器是词袋模型)。
# 假设doc_term_matrix是文档-词矩阵
# 创建LDA模型对象并传递所需参数
lda_model = gensim.models.LdaModel(doc_term_matrix, num_topics=5, id2word=id2word, passes=15, chunksize=10, alpha='auto', eta='auto')
通过上述步骤,可以获得以下主题结果:每个52个独特的单词都根据主题获得权重。换句话说,它意味着哪些单词主导了主题。
gensim包中实现LDA时常用的参数包括:
在sklearn中,清理文本数据后,使用向量化器将清理后的文本转换为数值表示。这里使用了TF-IDF和计数向量化器。
# 假设doc_term_matrix是文档-词矩阵
# 创建LDA模型
lda_model = sklearn.decomposition.LatentDirichletAllocation(n_components=5, max_iter=5, learning_method='online', learning_offset=50.,random_state=0)