# HarryCLDA分析工具
**Repository Path**: HarryJWC/harrycldaanalysistool
## Basic Information
- **Project Name**: HarryCLDA分析工具
- **Description**: LDA全功能分析软件
- **Primary Language**: Unknown
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-11-28
- **Last Updated**: 2026-03-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: LDA
## README
# HarryC's LDA Analysis Tool V4 JW❤QX @小红书drharry
这是一个基于 Python CustomTkinter 开发的现代化图形界面(GUI)LDA 主题建模工具。它集成了 **Gensim LDA** 核心算法、**Jieba** 中文分词、**Pyecharts** 交互式可视化以及 **科学情感分析** 模块。
本工具专为科研人员设计,旨在通过"傻瓜式"操作实现复杂的文本挖掘任务,支持从数据清洗、K值寻优、模型训练到全量可视化导出的完整工作流。
(exe版本请查看文档内说明EXE版本链接和使用说明.txt)
> ⚠️ **语言支持特别说明 (Language Support Warning)**
> - ✅ **中文 (Chinese)**: **完美支持**。经过深度优化,分词、去停用词、新词发现及可视化均运行良好,强烈推荐用于中文文本分析。
> - ⚠️ **英文 (English)**: 基础功能可用,但部分 NLP 处理流程可能存在不稳定性。
> - ❌ **韩语 (Korean)**: **严重故障**。由于底层 JPype/JVM 调用冲突,选择韩语模式极大概率导致程序直接**闪退 (Crash)**,目前暂时无法解决。请勿尝试使用韩语数据。
### 1. 零基础环境搭建指南
如果您是 Python 或编程新手,请严格按照以下步骤搭建运行环境。
**第一步:安装基础软件**
1. **下载 Anaconda**: [点击前往官网](https://www.anaconda.com/download),下载并安装适合您系统的版本。它是 Python 的科学计算包管理器。
2. **下载 PyCharm Community**: [点击前往官网](https://www.jetbrains.com/pycharm/download/),下载安装。它是最好用的代码编辑器。
**第二步:创建项目**
1. 打开 PyCharm,点击 **New Project**。
2. 在 Interpreter type (解释器类型) 中,
- 方案 A (推荐 Anaconda 用户): 选择 Conda。PyCharm 通常会自动检测到您安装的 Anaconda。
- 方案 B (推荐普通 Python 用户): 选择 venv (Virtualenv)。这是 Python 自带的虚拟环境工具,更轻量。
3. 点击 **Create**。
4. 在左侧项目栏右键 -> **New** -> **File**,命名为 `HarryCLDA 4.0.0.py`,并将代码粘贴进去或**直接打开**`HarryCLDA 4.0.0.py`
**第三步:安装依赖 (关键)***(或**直接运行,Pycharm会提示需要安装哪些模块**)
在 PyCharm 底部点击 **Terminal** (终端),复制并运行以下命令:
```bash
pip install customtkinter pandas numpy jieba gensim pyLDAvis matplotlib wordcloud networkx pyecharts openpyxl xlsxwriter
```
*注:如果您需要进行英文处理,可能还需要安装 nltk 相关数据包。*
### 操作系统兼容性
- **推荐**: **Windows 11** + PyCharm (测试通过,稳定)。
- **警告**: **macOS** 系统可能会出现 UI 无法显示或卡死的情况。建议 Mac 用户使用虚拟机 (Parallels/VMware) 运行 Windows。
## 2. 核心参数与指标深度解读 (Parameters Guide)
### 2.0 数据格式说明
您的数据文件应当是 Excel (.xlsx) 格式。本工具支持读取单列文本或带有时间戳的数据:
| **列名示例** | **数据类型** | **作用** | **必选性** |
| :--- | :--- | :--- | :--- |
| **文本内容** | 文本 (String) | **核心分析对象**。模型将读取此列进行分词、清洗和 LDA 聚类。 | **必选** |
| **发布时间** | 时间 (Date/Time) | 格式如 2023-01-01。用于生成 **主题热度演化图 (Static Evolution)** 和 **动态主题模型 (DTM)**。 | 可选 |
> **操作提示**: 程序启动后,支持"Excel文件导入"或"文件夹批量导入"。若导入 Excel,程序会弹窗询问哪一列是文本,哪一列是时间。
### 2.1 本工具将 LDA 的复杂参数进行了图形化封装,以下是各 Tab 页面的核心指标解读与推荐值。
### 2.2 Tab 1: 数据清洗 (Data Preprocessing)
- **词性筛选 (POS Filter)**:
- *含义*: 决定保留哪些词性的词。
- *推荐值*: n, v, vn (名词、动词、名动词)。
- *解读*: 形容词 (a) 通常对区分主题贡献较小,建议根据研究需求谨慎勾选。
- **预处理过滤低频词**:
- *含义*: 在分词阶段,直接删除出现次数少于 N 次的词。
- *推荐值*: 3。能有效减少拼写错误或极度冷僻词带来的噪音。
- **N-gram 短语挖掘**:
- *含义*: 自动发现如 "人工智能" (Bigram) 这样的词组,而不仅仅是 "人工" 和 "智能"。
### 2.3 Tab 2: K值寻优 (Optimization)
LDA 模型最难确定的就是主题数量 (K)。本工具提供双重指标评估:
1. **一致性得分 (Coherence Score - C_v)**:
- *含义*: 衡量主题内部词汇的语义相似度。**越高越好**。
- *解读*:
- \> 0.55: 优秀,主题含义清晰,人类可读性强。
- 0.4 - 0.55: 良好,可接受。
- \< 0.4: 较差,说明主题内部杂乱,需调整清洗规则或 K 值。
2. **困惑度 (Perplexity)**:
- *含义*: 衡量模型对新数据的预测能力。
- *解读*: 数值通常为负数,代数上越大(越接近 0)越好。但在 LDA 中,**一致性得分通常比困惑度更具参考价值**。
### 2.4 Tab 3: 模型训练 (Modeling)
- **去除低频/高频词 (No Below/Above)**:
- No Below = 5: 只有在至少 5 篇文档中出现的词才保留。
- No Above = 0.5: 在超过 50% 文档中都出现的词(如"研究"、"分析"等通用词)将被删除。
- **Alpha & Beta (Eta)**:
- Alpha: 控制文档-主题分布的稀疏度。推荐 auto,让模型自动学习。
- Beta: 控制主题-词分布的稀疏度。推荐 auto。
- **种子引导 (Seeded LDA)**:
- *功能*: 半监督学习。允许用户指定某些词必须属于特定主题。
- *格式*: T1:价格,便宜; T2:外观,好看。
- **稳健性检验 (Stability Check)**:
- *功能*: 跑 5 次模型计算 Jaccard 相似度,验证结果是否因随机种子不同而剧烈波动。得分 \>0.6 为稳健。
## 3. 输出文件清单与深度解读 (Output Files with Interpretation)
所有结果保存在程序同级目录的 LDA_Scientific_Output 文件夹中。为了方便论文写作,此处提供了详细的图表解读指南。
### 📂 03_可视化图表 (Vis) - 重点解读
| **文件名** | **类型** | **功能描述** | **🧐 如何解读 (How to Read)** |
| :--- | :--- | :--- | :--- |
| **ldavis.html** | 交互网页 | **主题距离图** (最经典) | **① 左侧气泡**: 圆圈大小代表该主题包含的文档数量(热度);圆圈之间的距离代表语义相似度(重叠代表主题含义相近)。
**② 右侧条形**: 红色条代表选定主题下该词的频率,蓝色条代表该词在全文的频率。 |
| **Static_Evolution_Sankey.html** | 交互网页 | **主题热度演化桑基图** | **流向宽度**: 代表热度。如果 T1 的流向 T2 的线条很宽,说明 T1 时期的热点话题在下一阶段主要演变成了 T2。用于分析舆情或研究焦点的转移。 |
| **DTM_Evolution_Sankey.html** | 交互网页 | **动态主题模型 (DTM)** | **词汇演变**: 展示**同一个主题**内部的关键词随时间的变化。例如"手机"主题,早期关键词可能是"按键",后期变为"触屏"。 |
| **Topic_Word_Weights_Heatmap.html** | 交互/图片 | **主题-词权重热力图** | **颜色深浅**: 颜色越深(或数值越大),代表该词对该主题的贡献度越高。可横向对比,看某个词是否是跨主题的通用高频词。 |
| **topic_intensity.png** | 图片 | **主题强度柱状图** | **柱子高度**: 代表该主题在整个数据集中的总概率之和。最高的柱子意味着这是**讨论最激烈、最主流**的话题。 |
| **sentiment_by_topic.png** | 图片 | **分主题情感倾向图** | **纵轴分数 (0-1)**:
• **\> 0.5 (正面)**: 柱子越高,代表该主题下的讨论越积极、正面。
• **\< 0.5 (负面)**: 柱子越低,代表该主题下的讨论越消极、负面。
• **= 0.5**: 中立。 |
| **network_graph.html** | 交互/图片 | **主题-词共现网络图** | **节点连接**: 大节点为主题,小节点为词。连线表示归属关系。如果一个词同时连接了多个大节点,说明它是这些主题共有的核心概念。 |
| **cloud_topic_{N}.png** | 图片 | **分主题词云** | **字体大小**: 词越大,代表其在该主题中的权重(P值)越高,是该主题的核心定义词。 |
### 📂 04_数据报表 (Report)
| **文件名** | **格式** | **用途** |
| :--- | :--- | :--- |
| **Doc_Topics.xlsx** | Excel | **核心结果**。包含每条原始文本及其对应的概率最高的主题 (Dominant Topic)。写论文时通常需引用此表中的示例文本。 |
| **Topic_Word_Weights_TopN.xlsx** | Excel | **词权重表**。列出每个主题下权重最高的 N 个词。可直接复制到论文中作为"主题词表"。 |
| **Representative_Docs.xlsx** | Excel | **代表性文本**。列出每个主题下概率最高(最典型)的 5 篇文章,用于定性分析主题的含义。 |
| **Sentiment_Scores.xlsx** | Excel | 每条文档的具体情感打分结果。 |
### 📂 01_预处理数据 (Data)
- **预处理统计报告.xlsx**: 包含清洗前后的文档数、词数对比。若"最终有效文档"过少,需检查是否停用词表过度清洗。
- **New_Word_Discovery_cn.xlsx**: 自动发现的新词列表。
## 4. 常见问题 (FAQ)
1. **Q: 为什么生成的 HTML 无法打开或显示空白?**
- A: 请确保您已安装 pyecharts 库。如果依然空白,请检查浏览器是否拦截了本地 JS 脚本,建议使用 Chrome 或 Edge 打开。
2. **Q: 为什么韩语模式会闪退?**
- A: 韩语分词依赖 konlpy,它需要调用系统的 Java 环境 (JVM)。Python 与 Java 的内存交互在 GUI 线程中极不稳定,导致崩溃。建议使用 Python 原生支持良好的中文或英文数据。
3. **Q: 运行"稳健性检验"时界面卡死?**
- A: 正常现象。稳健性检验需要连续训练 5 次模型,计算量巨大。请耐心等待,或查看底部的日志输出。
4. **Q: 提示 "Java 未检测到"?**
- A: 程序会自动检查环境变量。如果您不需要处理韩语,请忽略此提示,这不会影响中文和英文的分析功能。
## 5. 作者声明与版权
### 👨💻 作者寄语
我是编程新手,开发此工具旨在辅助科研。代码如有疏漏,恳请指正。
### ⚠️ 版权与引用 (Terms of Use)
1. **非商用**: 本项目仅供学术研究与个人学习,**严禁商用**。
2. **引用**: 修改或发布请带上标签:**Source: drharry@小红书**
Code revised by HarryC. Version 4.0