自然语言处理系列五十三》文本聚类算法》文本聚类介绍及相关算法
注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】
文章目录
- 自然语言处理系列五十三
- 文本聚类算法》文本聚类介绍及相关算法
- K-means文本聚类算法原理
- 总结
自然语言处理系列五十三
文本聚类算法》文本聚类介绍及相关算法
分类和聚类都是文本挖掘中常使用的方法,他们的目的都是将相似度高的对象归类,不同点在于分类是采用监督学习,分类算法按照已经定义好的类别来识别一篇文本,而聚类是将若干文本进行相似度比较,最后将相似度高的归为一类。在分类算法中,训练集为已经标注好的数据集,但是微博文本具有的大数据特性及不确定性决定了标注数据的难度,因此本文选择聚类算法对大量且随机的微博文本进行处理。
大量文本建模后还需要对主题分布进行聚类以得到更精确简洁的话题,因此文本聚类在话题检测技术中具有重要意义。聚类是一种无监督学习方式,目的是把一个数据根据某种规则划分为多个子数据,一个子数据就称为一个聚类。聚类分析在文本分析、商务应用、网页搜索、推荐系统、生物医学等多个领域都有着十分广泛的应用。由于数据应用场合不同,不同的聚类方式侧重点不同,各有优势和缺陷,因此目前没有一个通用的聚类算法。目前聚类主要分为以下几类:基于划分的聚类算法、基于层次的聚类算法、基于密度的聚类算法、基于网格的聚类算法、基于模型的聚类算法以及基于模糊的聚类算法。目前主要的聚类算法分类如图15.1所示。
图15.1 聚类算法分类
1. 基于划分的聚类算法
基于划分的聚类算法是聚类算法中最为简单的算法,假设有一个数据集D,其中包含N个子数据,若要将D划分为K个类簇,K≤N,每个类簇中至少含有一个子数据,且类簇之间不会有交集。要达到的要求是簇中的数据之间有较高的相似度,而簇类之间的相似度尽可能地低。经过专家学者的不断研究,K-means 算法、Single-Pass 增量聚类算法、围绕中心划分( Partitioning Around Mediods, PAM)算法等等都得到了较为广泛的应用。而其中最为经典、应用最多的是K-means算法。
K-means算法又称K均值算法,是一种容易实现且应用广泛的聚类算法,其算法的思想是首先在数据样本集中随机选取K个样本作为簇中心;然后计算样本集中其他样本与这K个簇中心的距离,距离通常利用曼哈顿距离、欧式距离等来度量,再根据设定的阈值将每个样本划分到与其距离最近的簇中心所在的簇中;最后根据新划分的簇重新计算距离,将簇中所含样本的距离均值作为更新簇的中心,再重复计算距离直到达到条件。K-means算法最关键的就是确定K的个数。
基于划分的聚类算法对于大部分数据都有较强的适用性,且计算简单高效,空间复杂度较低,但是在处理大规模样本时结果多数是局部最优,对于类簇中心选取也十分敏感并且无法解决非凸数据。
2. 基于层次的聚类算法
层次聚类算法(Hierarchical Clustering,HC)又称为树聚类算法。主要思想是将样本集合合并或者分裂成凝聚度更高或者更细致的子样本集合,最终样本集合形成一棵层次树。同K-means算法不同,层次聚类算法不需要预先设定聚类数 ,只要样本集合通过不断迭代达到聚类条件或者迭代次数即可。基于层次划分的经典聚类算法有:变色龙算法、AGNES(Agglomerative NE Sting)、CURE(Clustering Using RE Presentatives)等。根据聚类的方向基于层次的聚类算法可以分为凝聚式和分裂式,凝聚式是将簇结合起来,而分裂式则是将大的类簇分为小类。
1)凝聚式层次聚类算法
凝聚式层次聚类(Hierarchical Agglomerative Clustering,HAC)顾名思义是凝聚数据样本,它的聚类方向是从子数据向上不断合并,该算法经常运用于话题检测中。凝聚式层次聚类首先从底部分散的单个样本开始依次计算与其他样本的距离,然后选择距离最小样本并与其合并成一个新的样本集,再重复上述过程直到形成一个包含所有样本的簇,或者达到迭代次数。凝聚式层次聚类只需要计算样本之间的距离然后合并,该方法计算简单,但是如果数据样本太大则算法复杂度会呈指数级增长,且已合并的操作无法逆转。
2)分裂式层次聚类算法
分裂式层次聚类与凝聚式层次聚类处理样本数据的方向是相反的,它是将整个数据样本看作一个大类簇,然后根据距离公式或其他原则将大的类簇分为小的类簇,不断迭代直到将所有的样本数据分类到单独的类簇中或者是达到迭代次数。层次聚类被公认为是能够产生较好质量的聚类结果的聚类算法。此算法缺点是已操作不能撤回,对于大量数据样本时间复杂度高。
3. 基于密度的聚类算法
基于密度的聚类算法的主要思想是首先找出密度较高的点,然后把周围相近的密度较高的样本点连成一片,最后形成各类簇。基于密度的聚类比较代表性的三种方法有:Ester等提出的DBSCAN方法、Ankerst 等提出OPTICS方法和 Hinneburg 提出的 DENCLUE技术。此类算法的优点是鲁棒性很强,对于任意形状的聚类都适用,但是结果的精度与参数设置关系密切,实用性不强。
4. 基于网格的聚类算法
与其他聚类算法相比较,基于网格的聚类算法出发点不再是平面而是空间。在该空间中,有限个网格代表数据,聚类就是按一定的规则将网格合并。Wang等人提出的STING算法及其改进算法、Agrawa等人提出的CLIQUE算法l等都是较为经典的基于网格的算法。基于网格的聚类算法由于处理数据时是独立的,仅仅依赖网格结构中每一维的单位数,因此处理速度很快。但是此算法对参数十分敏感,速度快的代价是精确度不高,通常需要与其他聚类算法结合使用。
5. 基于模型的聚类算法
基于模型的聚类算法的思路是假设每个类簇为一个模型,然后再寻找与该模型拟合最好的数据,通常有基于概率和基于神经网络两种方法。概率模型即概率生成模型,是假设数据是由潜在的概率分布产生的,典型的算法是高斯混合模型(Gaussian Mixture Models,GMM;而来自芬兰的神经网络专家提出的自组织映射(Self Organized Maps,SOM)是典型的神经网络模型。对类簇而言,基于模型的聚类算法是用概率形式呈现,每个类的特征也可以直接用参数表示,但是与其他聚类方法相比,这类聚类方法在样本数据量大的时候执行率较低,不适合大规模聚类场合。
6. 基于模糊的聚类算法
基于模糊的聚类算法主要是为了克服非此即彼的分类缺陷,它的主要思想是以模糊集合论作为数学基础,用模糊数学的方法进行聚类分析。此方法的优点在于对于满足正态分布的样本数据来说它的效果会很好,但是此算法过于依赖初始聚类中心,为确定初始聚类中心需要多次迭代以寻找最佳点,对于大规模数据样本来说会大大增加时间复杂度。
上述的聚类方法各有千秋,在面对不同的数据集时能起到不同的作用,在参考韩威等的文献之后列出表2-2直观展示几种主要算法在性能方面的差异。几种常用聚类算法对比如表15.1所示。
表15.1 常用聚类算法对比
从表可以直观地看出,对于初始无法确定主题个数且大规模的微博短文本来说,Single-Pass增量算法更适合。但是Single-Pass增量算法对于数据输入时的顺序十分敏感,并且计算复杂度随着数据的增大而增多,因此本文采用改进的Single-Pass增量算法对话题进行检测。经过改进的Single-Pass增量算法处理后的文本凝聚度相对较高,维度相对较低,再采用适合处理这类文本的凝聚式层次聚类进行话题合并以得到热点话题。通过结合Single-Pass增量算法与凝聚式层次聚类算法,对大量微博短文本进行处理提取出热点话题,能有效提高效率,同时得到更精确的热点话题。
K-means文本聚类算法原理
K-means文本聚类算法原理下一篇文章分享,更多内容请参见
《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】书籍。
更多的技术交流和探讨也欢迎加我个人微信chenjinglei66。
总结
此文章有对应的配套新书教材和视频:
【配套新书教材】
《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】
新书特色:本书从自然语言处理基础开始,逐步深入各种NLP热点前沿技术,使用了Java和Python两门语言精心编排了大量代码实例,契合公司实际工作场景技能,侧重实战。
全书共分为19章,详细讲解中文分词、词性标注、命名实体识别、依存句法分析、语义角色标注、文本相似度算法、语义相似度计算、词频-逆文档频率(TF-IDF)、条件随机场、新词发现与短语提取、搜索引擎Solr Cloud和Elasticsearch、Word2vec词向量模型、文本分类、文本聚类、关键词提取和文本摘要、自然语言模型(Language Model)、分布式深度学习实战等内容,同时配套完整实战项目,例如对话机器人实战、搜索引擎项目实战、推荐算法系统实战。
本书理论联系实践,深入浅出,知识点全面,通过阅读本书,读者不仅可以理解自然语言处理的知识,还能通过实战项目案例更好地将理论融入实际工作中。
《分布式机器学习实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】
新书特色:深入浅出,逐步讲解分布式机器学习的框架及应用配套个性化推荐算法系统、人脸识别、对话机器人等实战项目。
【配套视频】
推荐系统/智能问答/人脸识别实战 视频教程【陈敬雷】
视频特色:把目前互联网热门、前沿的项目实战汇聚一堂,通过真实的项目实战课程,让你快速成为算法总监、架构师、技术负责人!包含了推荐系统、智能问答、人脸识别等前沿的精品课程,下面分别介绍各个实战项目:
1、推荐算法系统实战
听完此课,可以实现一个完整的推荐系统!下面我们就从推荐系统的整体架构以及各个子系统的实现给大家深度解密来自一线大型互联网公司重量级的实战产品项目!
2、智能问答/对话机器人实战
由浅入深的给大家详细讲解对话机器人项目的原理以及代码实现、并在公司服务器上演示如何实际操作和部署的全过程!
3、人脸识别实战
从人脸识别原理、人脸识别应用场景、人脸检测与对齐、人脸识别比对、人脸年龄识别、人脸性别识别几个方向,从理论到源码实战、再到服务器操作给大家深度讲解!
自然语言处理NLP原理与实战 视频教程【陈敬雷】
视频特色:《自然语言处理NLP原理与实战》包含了互联网公司前沿的热门算法的核心原理,以及源码级别的应用操作实战,直接讲解自然语言处理的核心精髓部分,自然语言处理从业者或者转行自然语言处理者必听视频!
人工智能《分布式机器学习实战》 视频教程【陈敬雷】
视频特色:视频核心内容有互联网公司大数据和人工智能、大数据算法系统架构、大数据基础、Python编程、Java编程、Scala编程、Docker容器、Mahout分布式机器学习平台、Spark分布式机器学习平台、分布式深度学习框架和神经网络算法、自然语言处理算法、工业级完整系统实战(推荐算法系统实战、人脸识别实战、对话机器人实战)。
上一篇:自然语言处理系列五十二》文本分类算法》BERT模型算法原理及文本分类
下一篇:自然语言处理系列五十四》文本聚类算法》K-means文本聚类算法原理
相关文章:

自然语言处理系列五十三》文本聚类算法》文本聚类介绍及相关算法
注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列五十三文本聚类算法》文本聚类介绍及相关算法K…...

计算机网络(一) —— 网络基础入门
目录 一,关于网络 二,协议 2.1 协议是什么,有什么用? 2.2 协议标准谁定的? 2.3 协议分层 2.4 OSI 七层模型 2.5 TCP/IP 四层模型 三,网络传输基本流程 3.1 局域网中两台主机通信* 3.2 报文的封装与…...

从监控到智能:EasyCVR视频汇聚平台助力加油站安全监管升级转型
随着科技的不断进步,视频监控技术在各个行业的应用日益广泛,尤其在加油站这一关键领域,视频智能监管系统的应用显得尤为重要。TSINGSEE青犀视频EasyCVR视频汇聚平台作为一款基于“云-边-端”一体化架构的视频融合与AI智能分析平台,…...

日志服务管理
系统日志管理 sysklogd 系统日志服务 在 CentOS5 以及之前的发行版中,其采用的 sysklogd 服务来记录和管理系统日志的。 sysklogd 服务有两个模块: klogd: 用于记录 linux kernel 相关的日志 syslogd:用于记录用户空间应用日志…...

ROS 工具箱系统要求
ROS 工具箱系统要求 要为 ROS 或 ROS 2 生成自定义消息,或从 MATLAB 或 Simulink 软件中部署 ROS 或 ROS 2 节点,您必须构建必要的 ROS 或 ROS 2 软件包。要构建这些软件包,您必须具备 Python 软件、CMake 软件以及适用于您的平台的 C 编译器…...

CSS解析:定位和层叠上下文
许多开发人员对定位的理解很粗略,如果不完全了解定位,就很容易给自己挖坑。有时候可能会把错误的元素放在其他元素前面,要解决这个问题却没有那么简单。 一般的布局方法是用各种操作来控制文档流的行为。定位则不同:它将元素彻底…...

无名管道与有名管道的区别(C语言)
目录 一、引言 二、无名管道(匿名管道) 1.概念 2.特点 3.使用方法 三、有名管道(命名管道) 1.概念 2.特点 3.使用方法 四、总结 本文将详细介绍在C语言中无名管道(匿名管道)与有名管道(命名…...

Vue+Nginx前端项目多种方式部署一文搞定(练习源码自取)
目录 介绍 本地项目部署 nginx部署 云端服务器部署 介绍 对于Vue项目而言,Nginx可以轻松地配置来处理SPA的路由问题,即对于所有未定义的路径请求返回index.html,这样前端路由机制就可以接管URL的处理。此外,Nginx支持反向代理设…...

MATLAB 中双引号 ““ 和单引号 ‘‘ 的区别详解
在 MATLAB 中,双引号 "" 和单引号 都可以用来表示字符串,但它们的作用和底层类型是不同的。理解它们之间的区别,对于正确使用字符串处理功能非常重要。本文将深入探讨 MATLAB 中 "" 和 的区别,以及在实际编…...

Linux概述、远程连接、常用命令
Linux介绍 Linux操作系统介绍 Linux操作系统的特点 开源免费安全稳定可移植性好 Linux可以安装在不同的设备上 高性能 Linux的使用领域 应用服务器数据库服务器网络服务器虚拟化云计算嵌入式领域个人PC移动手机 Linux文件系统和目录 /:根目录,唯一/h…...

闯关leetcode——1.Two Sum
大纲 题目地址内容 解题 题目 地址 https://leetcode.com/problems/two-sum/description/ 内容 Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target. You may assume that each input would hav…...

02 Shell Script注释和debug
Shell Script注释和debug 一、ShellScript注释 # 代表不解释不执行 语法:# # 创建myshell.sh文件 [rootlocalhost ~]# vi myshell.sh # 写入内容 #!/bin/bash# 打印hello world(正确) echo "hello world" echo "he…...

如何设计项目架构
设计项目架构是软件开发过程中的关键步骤之一,它涉及到如何组织系统的各个部分以及它们之间的交互方式。良好的架构设计能够提高系统的可维护性、扩展性和性能。以下是设计C项目架构的一些基本原则和步骤: 1. 明确需求 在设计任何系统之前,…...

OTG配置为USB盘之二
在前面一节中,描述了otg配置U盘时涉及到的知识点,本篇用统一的脚本完成。 目标 将3588开发板子配置为一个U盘。 配置文件和脚本 配置文件 说明: 1)USB_FUNCS是将开发板配置为什么类型的设备,例如u盘,配置um…...

如何使用 PHP 函数与其他 Web 服务交互?
在 PHP 中,我们可以使用 cURL 或者 file_get_contents 函数与其他 Web 服务进行交互。 使用 cURL 函数 cURL 是一个库,它允许你使用各种类型的协议来发送数据,并从服务器获取数据。 $curl curl_init(‘http://example.com/api’); curl_s…...

.NetCore+vue3上传图片 Multipart body length limit 16384 exceeded.
实现目标。点击图片上传头像 效果图 前端部分图片上传关键代码 <div class"avatar-wrap"><el-imagestyle"width: 154px; height: 154px":src"form.headPic":fit"fit"/></div><div class"upload-box"…...

机器学习如何用于音频分析?
机器学习如何用于音频分析? 一、说明 近十年来,机器学习越来越受欢迎。事实上,它被用于医疗保健、农业和制造业等众多行业。随着技术和计算能力的进步,机器学习有很多潜在的应用正在被创造出来。由于数据以多种格式大量可用&…...

适合程序员在周末阅读的历史书籍:理解人性和世界
一、《人类简史:从动物到上帝》 这本书提供了对人类历史和社会发展的深刻洞察,帮助读者理解人类过去、现在和可能的未来。 《人类简史:从动物到上帝》是以色列历史学家尤瓦尔赫拉利(Yuval Noah Harari)创作的一部极具影…...

探索Mem0:下一代人工智能与机器学习内存管理基础设施(二)Mem0+Ollama 部署运行
探索Mem0:下一代人工智能与机器学习内存管理基础设施(二) Mem 0(发音为“mem-zero”)通过智能记忆层增强AI助手和代理,实现个性化的AI交互。Mem 0会记住用户偏好,适应个人需求,并随着时间的推移不断改进,使其成为客户支持聊天机器人,AI助手和自治系统的理想选择。 …...

C++入门10——stack与queue的使用
目录 1.什么是stack? stack的使用 2.什么是queue? queue的使用 3.priority_queue 3.1 什么是priority_queue? 3.2 priority_queue的使用 1.什么是stack? 在官网中,对stack有这样的介绍: Stacks are a type o…...

詳細解析軟路由與代理爬蟲池-okeyproxy
什麼是軟路由? 軟路由,顧名思義,就是通過軟體實現的路由器功能。與傳統的硬體路由器不同,軟路由通常是基於PC或單板電腦(如樹莓派)運行的路由器軟體。 靈活性高:可以根據需求安裝各種插件和服…...

视频监控管理平台LntonAIServer视频智能分析噪声检测应用场景
在视频监控系统中,噪声问题常常影响到视频画面的清晰度和可用性。噪声可能由多种因素引起,包括但不限于低光环境、摄像机传感器灵敏度过高、编码压缩失真等。LntonAIServer通过引入噪声检测功能,旨在帮助用户及时发现并解决视频流中的噪声问题…...

技术分享-商城篇-用户中心-注销修改(二十三)
前言 上一篇文章技术分享-商城篇-用户中心(二十二)在构建高效、安全的商城用户中心时,确保用户账户的安全性与便捷性至关重要。本文将重点阐述三大核心功能——修改密码、协议授权及注销账户的业务逻辑、设计思路及注意事项,旨在…...

Linux-实用指令
目录 前言 指定运行级别 基本介绍 切换运行级别 指令类 帮助指令 man 获得帮助信息 help指令 文件目录类 pwd指令 ls指令 cd指令 mkdir命令 rmdir指令删除空目录 touch指令 cp指令 rm指令 mv指令 cat指令 more指令 less指令 echo指令 head指令 tail指令…...

【MySQL00】【 杂七杂八】
文章目录 一、前言二、MySQL 文件1. 参数文件2. 日志文件3. 套接字文件4. pid 文件5. 表结构定义文件6. InnoDB 存储引擎文件 二、BTree 索引排序三、InnoDB 关键特性1. 插入缓冲1.1 Insert Buffer 和 Change Buffer1.1 缓冲合并 2. 两次写2. 自适应哈希索引3. 异步IO4. 刷新邻…...

计算机网络 第2章 物理层
文章目录 通信基础基本概念信道的极限容量编码与调制常用的编码方法常用的调制方法 传输介质双绞线同轴电缆光纤以太网对有限传输介质的命名规则无线传输介质物理层接口的特性 物理层设备中继器集线器一些特性 物理层任务:实现相邻节点之间比特(0或1&…...

解决:Module build failed (from ./node_modules/sass-loader/dist/cjs.js)问题
一、问题 Module build failed (from ./node_modules/sass-loader/dist/cjs.js): Error: Cannot find module sass 二、解决方法 1.清除缓存 npm cache clean --force2.重构项目 npm install 3.更新(获取最新的)node-sass和sass-loader依赖包 npm …...

【 html+css 绚丽Loading 】 000041 三才移形三角
前言:哈喽,大家好,今天给大家分享htmlcss 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕…...

ASP.NET Core 入门教学十六 防止常见的Web攻击
在ASP.NET Core中,防止常见的Web攻击是非常重要的,以确保应用程序的安全性。以下是一些常见的Web攻击类型及其防范措施: 1. 跨站脚本攻击(XSS) 跨站脚本攻击(XSS)是一种通过在网页中注入恶意脚…...

单刀直入@ComponentScan之 资源加载
欢迎大家入坑,所谓师傅领进坑爬出去靠个人,首先我要说的是这个是上一篇《单刀直入ComponentScan》的姊妹篇哈,接着把没聊透的事说明白,咱不是虎头蛇尾的人。 资源加载是啥意思 scan ,都认识吧,小学词汇连…...