当前位置: 首页 > article >正文

用层次聚类给文本自动分个类:从词向量到TF-IDF的完整实战(含Scipy linkage详解)

用层次聚类给文本自动分个类从词向量到TF-IDF的完整实战当面对海量文本数据时如何快速发现隐藏的语义结构层次聚类提供了一种直观的解决方案。不同于K-means需要预设类别数量层次聚类通过构建树状图Dendrogram揭示数据多层次的聚合关系特别适合探索性数据分析。下面我们将从特征工程到结果解读完整走通文本聚类的全流程。1. 文本特征工程从词袋到语义文本聚类的第一步是将非结构化的文字转化为计算机可处理的数值向量。目前主流方法可分为基于统计和基于语义两大类1.1 TF-IDF经典的词频统计方法TF-IDF通过衡量词语在文档中的相对重要性构建特征向量。其核心思想是词频TF词语在当前文档出现的频率逆文档频率IDF降低常见词语权重的惩罚因子from sklearn.feature_extraction.text import TfidfVectorizer corpus [苹果发布新款手机, 新能源汽车销量暴涨, 苹果股价创新高] vectorizer TfidfVectorizer(token_patternr(?u)\b\w\b) X vectorizer.fit_transform(corpus) print(X.toarray())注意中文文本需先分词可通过token_pattern参数调整token匹配规则1.2 词向量捕捉语义关系Word2Vec、FastText等模型生成的词向量能捕捉词语的语义关系。对于文档表示常用方法有简单平均对文档中所有词的向量取均值加权平均结合TF-IDF权重对词向量加权import numpy as np from gensim.models import Word2Vec # 假设已有训练好的词向量模型 model Word2Vec.load(word2vec.model) def doc2vec(doc): vectors [model.wv[word] for word in doc if word in model.wv] return np.mean(vectors, axis0) if vectors else np.zeros(model.vector_size)两种方法的对比特征类型优势局限性TF-IDF计算简单解释性强忽略词序无法捕捉语义词向量保留语义关系需要预训练模型长文档效果不稳定2. 距离度量文本相似性计算选择合适的距离度量对聚类效果至关重要。常见文本距离包括2.1 余弦相似度最适合衡量文本相似度关注向量方向而非长度from scipy.spatial.distance import pdist # 对TF-IDF矩阵计算 tfidf_dist pdist(X.toarray(), metriccosine) # 对词向量矩阵计算 w2v_dist pdist(np.array([doc2vec(doc) for doc in docs]), metriccosine)2.2 其他距离度量对比度量方式公式特点适用场景欧式距离直线距离低维数值数据杰卡德距离集合相似度短文本、关键词集合编辑距离字符操作次数拼写检查、DNA序列提示文本数据通常稀疏且高维余弦距离比欧式距离更合理3. 层次聚类实战Scipy全流程3.1 linkage函数详解scipy.cluster.hierarchy.linkage是层次聚类的核心函数其method参数决定簇间距离的计算方式from scipy.cluster.hierarchy import linkage # 使用Ward方法最小化方差 Z linkage(tfidf_dist, methodward)主要method参数对比single最小距离易形成链条状聚类complete最大距离倾向生成紧凑簇average平衡折中计算复杂度适中ward最小化簇内方差适合均匀大小的簇3.2 树状图可视化树状图直观展示聚类过程帮助确定最佳切割点import matplotlib.pyplot as plt from scipy.cluster.hierarchy import dendrogram plt.figure(figsize(10, 5)) dendrogram(Z, labelslabels, orientationtop) plt.axhline(y0.8, ck, ls--) # 假设0.8为切割阈值 plt.show()树状图解读要点纵轴高度表示合并时的距离横轴标签顺序反映聚类相似性切割线位置决定最终簇数量4. 结果提取与应用4.1 簇标签生成使用fcluster根据阈值获取最终分类from scipy.cluster.hierarchy import fcluster # 按距离阈值切割 clusters fcluster(Z, t0.8, criteriondistance) # 按预设簇数量切割 k 3 clusters fcluster(Z, tk, criterionmaxclust)4.2 结果分析与优化典型的结果分析流程统计簇大小分布检查是否出现极端大簇或大量单点簇关键词提取用TF-IDF或词向量中心点解释簇主题参数调优尝试不同距离度量和linkage方法组合# 分析各簇关键词 from collections import Counter for i in range(max(clusters)): cluster_docs [docs[j] for j in range(len(docs)) if clusters[j]i1] words [word for doc in cluster_docs for word in doc] print(fCluster {i1} top words:, Counter(words).most_common(5))实际项目中建议先用小样本测试不同参数组合再扩展到全量数据。对于新闻标题聚类ward方法余弦距离的组合通常表现稳定而短文本评论可能更适合complete linkage。

相关文章:

用层次聚类给文本自动分个类:从词向量到TF-IDF的完整实战(含Scipy linkage详解)

用层次聚类给文本自动分个类:从词向量到TF-IDF的完整实战 当面对海量文本数据时,如何快速发现隐藏的语义结构?层次聚类提供了一种直观的解决方案。不同于K-means需要预设类别数量,层次聚类通过构建树状图(Dendrogram&a…...

别再手动lock/unlock了!Qt多线程开发中QMutexLocker的正确打开方式(附源码对比)

Qt多线程开发:用QMutexLocker实现零失误的锁管理 在Qt多线程开发中,资源竞争问题就像房间里的大象——谁都无法忽视。传统QMutex的手动lock/unlock操作看似简单,却隐藏着巨大的隐患。想象一下,在一个复杂的业务逻辑中,…...

PoeCharm:10个技巧让你成为流放之路角色构建大师

PoeCharm:10个技巧让你成为流放之路角色构建大师 【免费下载链接】PoeCharm Path of Building Chinese version 项目地址: https://gitcode.com/gh_mirrors/po/PoeCharm 当你在流放之路中面对复杂的角色构建时,是否曾因语言障碍而错过最佳装备组合…...

2026届学术党必备的十大AI辅助写作神器推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智慧助力学术写作现今已然成了现实,当下,大型语言模组能够以效率…...

别再为Linux读卡器发愁了!手把手教你用pcsc-lite搞定USB智能卡驱动(附常见错误排查)

Linux智能卡驱动终极指南:从安装到排错的完整解决方案 每次在Linux系统上插上USB智能卡读卡器,却发现系统毫无反应时,那种挫败感简直让人抓狂。作为一位经历过无数次驱动安装失败的"过来人",我完全理解这种痛苦——明明…...

别再傻傻分不清了!GCC、Glibc、Libstdc++ 在 Linux 下到底是啥关系?

别再傻傻分不清了!GCC、Glibc、Libstdc 在 Linux 下到底是啥关系? 刚接触 Linux C/C 开发时,最让人头疼的莫过于那些晦涩难懂的编译错误。比如 undefined reference to std::cout 或者 glibc version not found,新手往往一脸茫然&…...

python重命名文件 发生的一些问题记录

1.2.你的怀疑完全正确! 问题就出在这里!问题根源 你使用了 PyCharm 的重构重命名功能,并且勾选了 "All Places"(所有位置),这导致:✅ 文件重命名了❌ 但 PyCharm 可能错误地修改了某些…...

文本文件名相似度筛选

在日常工作中,整理文本文件时最让人头疼的问题之一就是重复文件过多。同一个内容的不同版本混在一起,靠肉眼很难快速区分哪些是"真正重复"、哪些只是"名字相似但内容不同"。这篇文章介绍一个能解决这个问题的桌面工具,帮…...

四十二、Fluent欧拉模型流化床模拟:从基础设置到颗粒动力学解析

1. 流化床与欧拉模型基础概念 流化床技术在现代工业中应用广泛,从化工反应器到生物质燃烧装置都能见到它的身影。简单来说,流化床就是让固体颗粒在流体作用下呈现类似流体流动状态的一种装置。想象一下小时候玩过的泡泡浴,当浴缸底部不断有气…...

解密WPF黑盒:5分钟掌握dnSpy BAML反编译核心技术

解密WPF黑盒:5分钟掌握dnSpy BAML反编译核心技术 【免费下载链接】dnSpy Unofficial revival of the well known .NET debugger and assembly editor, dnSpy 项目地址: https://gitcode.com/gh_mirrors/dns/dnSpy 你是否曾面对WPF应用程序的二进制界面资源束…...

【量化实战】解码期权PCR:从情绪指标到稳健策略的构建与优化

1. 期权PCR指标的本质与市场情绪解码 第一次接触期权PCR指标时,我和大多数新手一样困惑——这个看似简单的比值背后,到底藏着什么市场秘密?经过多年实战,我发现它就像市场的"心电图",能实时反映投资者的集体…...

为何买车不做小白鼠,得看口碑?使用多年的车主指某些电车容易散架!后悔得肠子都青了

独家首发公众号柏铭科技---------------------------不少给新手推荐汽车的时候,都会拿配置说事,然而车这种东西并不仅仅是配置的问题,更重要的是耐久性,车与手机等产品很不一样,车价格更贵、使用时间更长、二手车残值也…...

基于双向反激变换器的SOC估算与主动均衡仿真的研究

基于双向反激变换器的SOC估算与主动均衡仿真 可以 [1]复现硕士论文:《锂离子电池SOC估算与主动均衡策略研究_王昊》 [2]六节电池模型:使用Simmulink搭建了六节电池主动均衡仿真 [3]均衡策略:选择了电压、SOC及其分阶段使用作为主动均衡变量&a…...

逆向实战:手把手带你用Node.js复现某音a_bogus算法核心步骤(含完整代码)

深入解析Node.js实现a_bogus算法的核心逻辑与实战应用 在当今Web开发与数据采集领域,理解平台加密机制已成为开发者必备技能。a_bogus作为某平台核心加密参数,其生成过程融合了多种加密技术。本文将彻底拆解这一算法,从底层位运算到高层架构&…...

别再死磕公式了!用MATLAB手把手复现DIC中的FA-GN与IC-GN算法(附完整代码)

MATLAB实战:从零实现DIC中的FA-GN与IC-GN算法 在材料力学、生物医学等领域的变形测量中,数字图像相关技术(Digital Image Correlation, DIC)已成为不可或缺的工具。但对于初学者而言,如何将复杂的数学公式转化为可运行…...

用Python和Pandas手把手实现你的第一个Q-learning寻宝游戏(附完整代码)

用Python和Pandas手把手实现你的第一个Q-learning寻宝游戏(附完整代码) 在人工智能的众多分支中,强化学习因其独特的"试错学习"机制而备受关注。想象一下,你正在教一个孩子玩迷宫游戏——你不会直接告诉他每一步该怎么走…...

别再硬啃理论了!用‘主从博弈’的视角理解Benders分解

主从博弈:用故事思维拆解Benders分解算法 想象一下你是一家跨国公司的CEO(主问题),需要决定在哪些国家开设工厂(x变量)。而每个国家的分公司经理(子问题)会根据你的决策,…...

【GD32】TIMER基本定时器实战:从时钟树解析到精准微秒延时实现

1. 认识GD32基本定时器:你的精准时间管家 第一次接触GD32的定时器时,我完全被那些专业术语吓到了——APB总线、预分频、自动重装载值...直到有一次做传感器数据采集项目,因为延时不准导致数据错位,才真正明白定时器的重要性。简单…...

MetaboAnalystR 4.2:代谢组学数据分析的完整R包解决方案指南

MetaboAnalystR 4.2:代谢组学数据分析的完整R包解决方案指南 【免费下载链接】MetaboAnalystR R package for MetaboAnalyst 项目地址: https://gitcode.com/gh_mirrors/me/MetaboAnalystR MetaboAnalystR 4.2是一个功能强大的R语言代谢组学数据分析工具包&a…...

梁高直降25cm!HPH新构造省时又省钱

一、建筑与新能源的“双重风口”,催生HPH技术新浪潮 迎来刚刚落下帷幕结果的,是二零二六年于北京亦庄举办的人形机器人半程马拉松,从中我们看到前沿技术从实验室迈向真实场景所具备的速度。于此同时,在刚刚对外进行公布的二零二六…...

2026届必备的五大AI辅助论文神器推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能助力撰写开题报告,能大幅提高研究框架搭建效率,它依据自然语…...

告别工厂模式:用更清晰的方式在Spring Boot里玩转MQTT发布与订阅(附可运行Demo)

Spring Boot极简MQTT实战:从零构建智能灯控系统 物联网开发中,MQTT协议因其轻量级和高效性成为设备通信的首选方案。但对于刚接触Spring Boot的开发者来说,网上充斥着大量使用复杂工厂模式的实现方案,不仅增加了学习曲线&#xff…...

ConvNeXt 系列改进:位置信息补全:ConvNeXt 结合 CoordAtt(坐标注意力),提升密集预测任务表现

一、写在前面:ConvNeXt 的“阿喀琉斯之踵” 2022年,Meta AI(FAIR)团队推出ConvNeXt,以纯卷积架构在ImageNet-1K上拿下87.8%的top-1准确率,在COCO目标检测和ADE20K语义分割任务上全面超越Swin Transformer,让整个社区重新认识到卷积网络的潜力。2023年,ConvNeXt V2更进…...

【算法日记】Day 20 动态规划专题——状态压缩DP(三)

Abstract:#动态规划 #状压DP #TSP问题 1. 题目 题目:Luogu P1171 售货员的难题核心思路:状态压缩动态规划。定义dp[status][cur]表示当前已经访问过的城市集合为status,且当前位于城市cur,要访问完所有剩余城市并最终…...

HAKE模型实战:用极坐标嵌入搞定知识图谱的层级关系预测

HAKE模型实战:极坐标嵌入在知识图谱层级关系预测中的应用 知识图谱作为结构化的人类知识库,在智能搜索、推荐系统和问答系统等领域展现出巨大价值。然而,现实中的知识图谱往往面临数据不完整的问题——大量有效三元组缺失。传统基于规则或统计…...

CANoe COM接口深度探索:如何像查字典一样使用Type Library和对象层次图

CANoe COM接口深度探索:如何像查字典一样使用Type Library和对象层次图 当你在深夜调试CANoe自动化脚本时,是否曾被满屏的"Method not found"错误折磨得抓狂?作为经历过数百小时COM接口调试的老手,我发现大多数开发者卡…...

Cadence SPB16.6 自带400+原理图库(.olb)快速盘点与高效复用指南

Cadence SPB16.6 自带原理图库高效复用全攻略:从海量元件中快速定位与集成 1. 原理图库资源概览与分类解析 Cadence SPB16.6作为业界领先的EDA工具套件,其自带的原理图库资源堪称硬件设计领域的"宝藏"。安装目录下的capture/library文件夹内包…...

用Python实战模糊粗糙集:从理论到代码,5步搞定高维数据降维

用Python实战模糊粗糙集:从理论到代码,5步搞定高维数据降维 当你的数据集包含数百个传感器读数或用户行为指标时,传统降维方法往往会丢失关键信息。我在处理电商用户画像数据时就遇到过这个问题——PCA处理后那些微妙的购买模式特征全都不见了…...

互联网大厂 Java 求职面试:音视频场景中的技术挑战

互联网大厂 Java 求职面试:音视频场景中的技术挑战 在一个晴朗的下午,面试官小李正坐在会议室中,等候着候选人燕双非的到来。这位看似轻松的程序员,今天却要面对一系列技术问题。小李微笑着,开始了第一轮提问。第一轮提…...

RKMEDIA VO图层实战:从DRM基础到双屏叠加配置

1. DRM基础与屏幕检测入门 在RK平台开发中,显示系统是整个交互体验的核心。我刚开始接触RV1126开发板时,第一件事就是确认屏幕能否正常点亮。这里不得不提modetest这个神器——它是DRM(Direct Rendering Manager)子系统提供的调试…...