SinglepassTextCluster项目:基于single-pass算法思想的自动文本聚类组件

项目的背景

SinglepassTextCluster, an TextCluster tool based on Singlepass cluster algorithm that use tfidf vector and doc2vec,which can be used for individual real-time corpus cluster task。基于single-pass算法思想的自动文本聚类小组件,内置tfidf和doc2vec两种文本向量方法,可自动输出聚类数目、类簇文档集合和簇类大小,用于自有实时数据的聚类任务。

项目地址: https://github.com/liuhuanyong/SinglepassTextCluster

项目的由来

实时热点话题、事件的发现,是针对实时信息流的一个典型应用场,如如HistoryHotEvent项目。地址:https://github.com/liuhuanyong/HistoryHotEventBase 。 其中包括了从2004年至2019年共16年的每日热点事件项目(004年至今共16年的历时热点标题数据库)。如何高效、快速地从大规模实时文本数据中发现具有代表性的新闻标题,并根据时间顺序挖掘出热点话题或事件的演化脉络具有十分重要的现实意义。
在热点挖掘这个方向上,笔者主要已经进行了若干项目的探索,并从这些项目中,可以总结出一个热点事件生成和演化脉络的挖掘,可以分成四个步骤:
1、面向实时文本流的文本获取。可以针对特定的主题词过滤的方式进行文本语料获取(参考EventMonitor项目,地址:https://github.com/liuhuanyong/EventMonitor ), 也可以以无过滤的方式获取实时的文本数据流,通过步骤2、3进一步得到特定主题的文本集合。
2、面向实时文本流的文本聚类。目标是将众多个文本进行文本聚类,包括文本的去重,聚类成不同的文本主题(粗分类),如将偷税、漏税文本事件聚合在一起。(话题聚类、文本聚类)。
3、聚类文本中的文本主题进行事件细分。针对每一类话题,进一步细分为不同的事件,形成不同主题下的事件,如A偷税漏税、B偷税漏税。(话题事件切分,参考TopicCluster项目。地址:https://github.com/liuhuanyong/TopicCluster )。
4、对细分的事件进行故事里程碑划分。借助时间信息,设定时间窗口,将同一个事件进一步划分成若干个时间事件切片,并挖掘出该事件切片中的代表性事件名称。(事件重要性计算,参考:ImportantEventExtractor项目。地址:https://github.com/liuhuanyong/ImportantEventExtractor )。
5、子事件演化脉络识别。对识别好的代表性事件名称,通过事件演化的特征(方向性特征、时间先后顺序特征、语义转移特征),构建事件演化脉络链。(事件演化脉络识别) 。

目前,关于步骤4和5目前还没有对应的项目,因此,为了填补这一空白,本项目选择步骤4,以Single-Pass算法的实现为例,进行实践说明:
Single-Pass算法又称单通道法或单遍法,是流式数据聚类的增量式方法,算法的时间效率高,适合对流数据进行挖掘,而。对于依次到达的文本数据流,该方法按输入顺序每次处理一个数据,依据当前数据与已有类的匹配度大小,将该数据判为已有类或者创建一个新的数据类,实现流式数据的增量和动态聚类。

项目的构成

1、data:待处理文本,如train.txt。
2、model: token_vector.bin,预先训练好的字向量,可用于文本的快速向量化。
3、result: 最终聚类结果文件,文件以json格式保存,记录聚类结果id、类簇中文本数量、类簇文本集合信息。
4、cluster_demo.py:聚类主控脚本,在该脚本中可直接指定聚类阈值,聚类的方法和聚类输入、输出文本路径。
5、cluster_doc2vec.py:基于doc2vec的主控聚类接口。
6、cluster_tfidf.py:基于tfidf的主控聚类接口。
7、singlepass_cluster_tfidf.py:基于tfidf的single-pass聚类算法实现细节。
8、singlepass_cluster_doc2vec.py:基于doc2vec的single-pass聚类算法实现细节。

项目的运行效果

1、项目运行方式:python cluster_demo.py
2、处理输入文本:train.txt,其中选择了1000条汽车需求评论语料,每条为1行,内容如下:

"""
但在一个周一晚上,州监管机构还是要求他们停止所有测试
问题是持久发展,需要市场投融资这个循环
所以买车前需要试驾
五菱荣光V(参数|询价),现在跑了30000多公里了,需要做哪些常规保养
总成3000,应该需要换码,我的灯还没到,等到了换完我上作业
建议在车内保险丝盒里面找一下,看位置图
车辆还有一年多的保修期,现在需要处理吗
现在根据修理店建议,我已经换了燃油泵总成,燃油压力调阀,问题依旧
个人建议质保期内还是在4S店保养吧
房车必须要足够大,才能住得舒服,因此房车的拓展应该成为房车的主流"""

3、参数设置。使用doc2vec向量化方法,theta选择0.85。
4、聚类运行结果: cluster_doc2vec.json,共得到779个聚类结果,示例如下:

"""
{"cluster_id": 77, "cluster_nums": 5, "cluster_docs": [{"doc_id": 1, "doc_content": "那时候,冬天停车必须防水,根本没有防冻液这一说"}, {"doc_id": 2, "doc_content": "这两款比较的话,建议入手瑞风s3"}, {"doc_id": 3, "doc_content": "这里我们建议,首先将这几款车型上市的时间进行对比"}, {"doc_id": 4, "doc_content": "这东西,必须自己试驾"}, {"doc_id": 5, "doc_content": "希望大家可以透过这篇文章了解一下,轮胎的寿命…"}]}"""

项目的总结

1、针对用户自有实时文本数据,利用聚类方法进行自动的文本聚类,得到聚类主题以及聚类的相关文档,可以为数据集文本的分析提供较好的帮助。基于single-pass算法思想的自动文本聚类小组件,可以直接使用。
2、singlepass聚类算法是一个简单、快速的聚类算法,其核心在于文档向量化方法以及聚类阈值,本工具内置tfidf和doc2vec两种文本向量方法,阈值可作为超参供用户指定输入。
3、文档向量化方法,有其他的更好的建模方法,如LDA聚类方法、bert向量化、word2vec向量化方法,大家可以在向量化阶段根据实际需求自动地进行向量化模块替换。
4、singlepass聚类方法对输入数据的顺序、阈值敏感,同一份数据,不同的输入顺序,不同的阈值,会得到不同的聚类结果。
5、singlepass聚类方法与输入数据的规模敏感,随着簇规模的增加,其计算量会越来越大(新文本要对所有簇中心进行比对),因此针对大的数据,需要设计高效的选型,如mapreduce或者根据某些特征过滤部分类簇,再进行相识度计算,减少计算量。
6、在处理具有时间序列信息的聚类任务(如实时热点挖掘)中,单独使用文本语义相似度的方法进行聚类是不够的,还需要考虑时间因素,因此可以在聚类的过程中设置时间聚类的阈值(一个新的超参), 在么每个聚类中心加入时间片段参数(记录该文簇中文档的第一个时间以及最后一个时间),如果新加的文本时间大于设定的时间,则不再加入该簇。
7、具体聚类的效果还与输入语料文本情况有关,不同的语料在同一个算法下,可能得出不同的聚类效果。

关于作者

刘焕勇,liuhuanyong,现任360人工智能研究院算法专家,前中科院软件所工程师,主要研究方向为知识图谱、事件图谱在实际业务中的落地应用。
得语言者得天下,得语言资源者,分得天下,得语言逻辑者,争得天下。
1、个人主页:https://liuhuanyong.github.io
2、个人博客:https://blog.csdn.net/lhy2014/
3、个人公众号:老刘说NLP
欢迎对自然语言处理、知识图谱、事件图谱理论技术、技术实践等落地应用的朋友一同交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DTW动态时间规整算法

原文地址:https://blog.csdn.net/qcyfred/article/details/53824507 https://zhuanlan.zhihu.com/p/43247215 动态时间规整(DTW)算法简介相忘天涯,深藏于心19 人赞同了该文章DTW最初用于识别语音的相似性。我们用数字表示音调高低…

POJ 3461 字符串匹配(KMP / 哈希(有推导))

文章目录1. 题目1.1 题目链接1.2 题目大意2. Accepted代码2.1 KMP解法2.2 哈希法(有推导过程)1. 题目 1.1 题目链接 http://poj.org/problem?id3461 类似题目:LeetCode 30. 串联所有单词的子串(字符串哈希) 1.2 题…

莫比乌斯:百度凤巢下一代广告召回系统

星标/置顶小屋,带你解锁最萌最前沿的NLP、搜索与推荐技术文 | 江城编 | 夕小瑶今天聊聊百度在最顶级的数据挖掘会议KDD2019的计算广告track上提出的query-ad匹配模型——莫比乌斯(MOBIUS)。这也是百度凤巢下一代广告召回系统的内部代号&#…

当知识图谱遇上推荐系统之MKR模型(论文笔记三)

Multi-Task Feature Learning for Knowledge Graph Enhanced Recommendation 类别:交替学习 将知识图谱特征学习和推荐算法视为两个分离但又相关的任务,使用多任务学习的框架进行交替学习。 1、背景 MKR是一个通用的、端对端的深度推荐框架&#xf…

关于话题演化关系网络生成的路线思考:从话题聚类到话题网络展示

话题演化关系网络生成,是实现事件演化追踪的一个重要方法。通过对文本话题进行聚类、内容处理、话题演化关联、话题演化网络的展示,能够在一定程度上为用户揭示出一个事件发展的情况。本文就笔者对该方向的实现路线思考进行总结,分享给大家。…

综述 | 事件抽取及推理 (下)

本文转载在公众号:知识工场 。 上篇事件抽取及推理的推文已经介绍了事件抽取的基本方法,本篇主要介绍事件推理的相关工作。就目前来看,事件方向相关的研究还是以事件抽取为主流任务,当前大多都是在模型的框架和优化方面进行研究。…

Redis系列教程(三):如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题

Java相关的面试都会问到缓存的问题:史上最全Redis面试49题(含答案):哨兵复制事务集群持久化等,除此之外还会问到缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等不常见的问题,但却是非常重要的问题,今…

随机森林:提供银行精准营销解决方案

原文地址:https://blog.csdn.net/weixin_34233679/article/details/88480912 本例是根据科赛网练习赛进行练手,学习巩固一下随机森林建模以及应用。 赛题描述本练习赛的数据,选自UCI机器学习库中的「银行营销数据集(Bank Marketing Data Set)…

谁说2021届秋招算法岗一定要灰飞烟灭啦?

没错,这是一碗鸡汤,希望肝完这碗鸡汤的师弟师妹们就不要过度焦虑啦~理性上车,理性下车,希望萌新们都能遇到最适合自己的坑位2014年末入坑AI,一路见证了AI行业的快速起飞、爆炸、焦虑和冷却。小夕前几天在知…

论文浅尝 | 基于深度强化学习的远程监督数据集的降噪

论文链接:https://arxiv.org/pdf/1805.09927.pdf来源:ACL2018Motivation:远程监督是以一种生成关系抽取训练样本的方法,无需人工标注数据。但是远程监督引入了噪音,即存在很多的假正例。本文的出发点非常简单&#xff…

字符串匹配算法(AC自动机 Aho-Corasick)

文章目录1. 多模式串匹配2. 经典多模式串匹配--AC自动机2.1 AC自动机构建2.2 在AC自动机上匹配主串2.3 复杂度分析3. python包1. 多模式串匹配 前面学的BF、RK、BM、KMP都是单模式串匹配算法(一个模式串,一个主串)多模式串匹配,即…

机器学习资源和记录

学习记录: 2019.08.01: 林轩田机器学习技法--Matrix Factorization :https://redstonewill.com/783/ [ 收获 ]:先假设 有用户特征向量(维度为d表示用户对d种特性的不同喜爱程度)、有电影特征&#xff08…

Redis系列教程(五):Redis哨兵、复制、集群的设计原理,以及区别

前一篇文章高并发架构系列:Redis为什么是单线程、及高并发快的3大原因详解谈了Redis高并发快的3个原因,本篇主要谈Redis的高可用,两篇合起来就可以把redis的高并发和高可用搞清楚了。 谈到Redis服务器的高可用,如何保证备份的机器…

老刘说NLP:焦虑被大肆贩卖下的自然语言处理学习思考

一、话题的由来 近期,有不少朋友来信,来询问如何看待自然语言处理这个方向,表示对当前的状态很不满,希望能够尽快地找到一个合适的方向、快速的学习方式,提升自己的自然语言处理能力,从而找到一个算法岗位的…

垃圾分类智能化-垃圾分类机器人

垃圾分类智能化-奇虎机器人: https://www.chatbot.cn/news-253.html 在人工智能眼里,垃圾分类分几步?:https://mp.weixin.qq.com/s/MlKnx77XGOUvZG1J-PtqMw 垃圾邮件分类之朴素贝叶斯算法实践:https://mp.weixin.qq.…

论文浅尝 | 区分概念和实例的知识图谱嵌入方法

链接:https://arxiv.org/pdf/1811.04588.pdf知识图谱的表示学习最近几年被广泛研究,表示学习的结果对知识图谱补全和信息抽取都有很大帮助。本文提出了一种新的区分概念和实例的知识图谱表示学习方法,将上下位关系与普通的关系做了区分&#…

写在校招季,谈谈机器学习岗的Offer选择问题

星标/置顶小屋,带你解锁最萌最前沿的NLP、搜索与推荐技术文 | 吴海波 现在校招开始的越来越早,今年的实习生招聘还是异常火爆,简历一堆,而且是越来越没有区分度,以前面个xgboost的论文细节,就能区分很多人&…

leetcode--数组(Easy)

2019.08.02 1.返回和为指定值的两数的索引 基本思想:哈希表实现:把数组中的值作为key,索引作为value,在一此遍历的过程中,一边转map,一边查找符合要求的两个数 def twoSum(self, nums: List[int], target:…

Redis系列教程(六):Redis缓存和MySQL数据一致性方案详解

需求起因 在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。 这个业务场景,主要是解决读数据从Redis缓存…

贪心算法(Greedy Algorithm)之霍夫曼编码

文章目录1. 贪心算法2. 应用2.1 找零钱2.2 区间覆盖2.3 霍夫曼编码霍夫曼编码完整代码1. 贪心算法 我们希望在一定的限制条件下,获得一个最优解每次都在当前的标准下做出当下最优决策(整体不一定最优),做出的决策不可以后悔&…