# 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