🌟作者简介:热爱数据分析,学习Python、Stata、SPSS等统计语言的小高同学~
🍊个人主页:小高要坚强的博客
🍓当前专栏:《Python之文本分析》
🍎本文内容:深度解析 LDA 与聚类结合的文本主题分析实战
🌸作者“三要”格言:要坚强、要努力、要学习
目录
引言
技术框架
数据预处理
LDA 模型构建与训练
文本向量化
训练 LDA 模型
提取主题关键词
聚类分析
模型优化
困惑度评估
可视化与结果导出
总结与展望
本文亮点
展望
引言
在大数据时代,海量文本数据的分析已成为企业决策的重要依据。主题模型(如 Latent Dirichlet Allocation, LDA)是一种强大的工具,可以帮助我们从无结构的文本数据中提取主题信息。然而,LDA 模型的结果往往难以直接转化为业务应用,因此将其与聚类算法(如 K-Means)结合可以进一步提升分析结果的可操作性。
本文将以一个实战案例为引,详细讲解如何使用 LDA 和聚类方法对上市公司环境治理补助相关文本数据进行分析,从而自动识别不同类别的投入方式(如“研发投入”与“非研发投入”),并总结如何优化模型及解读结果。
技术框架
- 数据准备与清洗:
- 加载和清洗数据。
- 分词与去除停用词。
- LDA 模型构建与训练:
- 利用文本向量化技术将文本数据转化为数值表示。
- 构建 LDA 模型提取主题。
- 聚类分析:
- 基于 LDA 输出的文档-主题分布进行聚类,自动标注数据类别。
- 模型优化与可视化:
- 使用困惑度(Perplexity)和主题一致性(Topic Coherence)评估模型。
- 通过 pyLDAvis 对主题结果进行可视化。
- 结果解读与导出:
- 输出主题关键词。
- 将分析结果保存为可交付的报告或文件。
数据预处理
首先加载文本数据与停用词,进行分词与清洗。以下是核心代码:
import pandas as pd
import re
import jieba
# 加载数据
data = pd.read_excel('补助.xlsx') # 请根据实际路径修改
# 加载停用词
stopwords = open('stopwords.txt', encoding='utf-8').read().split('\n')
# 数据清洗与分词
def clean_text(text):
text = re.sub(r'\d+', '', text) # 去除数字
text = re.sub(r'[^\w\s]', '', text) # 去除特殊字符
words = jieba.lcut(text) # 分词
words = [w for w in words if w not in stopwords and len(w)