话题演化关系网络生成,是实现事件演化追踪的一个重要方法。通过对文本话题进行聚类、内容处理、话题演化关联、话题演化网络的展示,能够在一定程度上为用户揭示出一个事件发展的情况。本文就笔者对该方向的实现路线思考进行总结,分享给大家。
一、文本话题聚类
1、使用single-pass趟次聚类算法,将聚类的相似度阈值设置为0.6,对给定主题的所有文本进行聚类,得到多个话题类及每个类别下对应的文档集合。
2、假设一个话题下必须包含的文档数量大于某个阈值,否则不能成为话题。在本次实验中,将类下文档数量小于2的主题进行删除,得到最终的话题类别集合,并选择top30作为高频话题集合,即热点话题集合
3、热点话题热度的计算,某个话题的热度等于该话题下文本数量与该主题文本数量的比值
4、对热点话题集合进行话题内容处理和话题演化关联操作
二、话题内容处理
1、话题开始时间和结束时间获取
1)获取某一话题所有文本的时间,并以日为单位,移除单日发文量小于2的日期,将每个时间点按照持续时间不超过30天则为一个话题的持续时间原则进行时间段合并,划分成若干个时间片段。将时间片段按照包含文本的数量从大到小排序,取得最佳的话题时间范围
2)将得到的时间段中的第一个时间为话题的开始时间
3)将得到的时间段中的最后一个时间为话题的结束时间
2、话题名称抽取
1)获取某一话题下,开始时间和结束时间范围内的所有文本标题,形成标题集合
2)获取所有文本标题中所有标题的最大公共子串:标题两两比对,得到最长公共字串,并计数
3)对最长公共子串中的标题进行得分计算,得分为:log(最长公共字串的频次)*log(最长公共字串的长度)
4)将得分最高的最长公共子串作为该话题的名称
3、话题代表新闻的提取
1)获取每个话题类下离类中心最近的新闻标题作为话题代表新闻。
4、话题标签的提取
1)获取每个话题类下所有的文本集合,形成一个话题文本,使用TFIDF算法进行关键词提取,取关键词的top20作为该话题的标签
三、话题演化关联
1、获取每个话题类别下的所有文本,并利用word2vec词向量做平均池化的方法,形成该话题的向量表示。
2、针对话题集合中每个话题类别进行两两组合(如话题a,话题b),并建立有向演化关系边,满足有效条件:
1)话题演化必须是从一个较早出现的话题演化到一个较晚出现的话题,在时间上满足时序,即话题a的开始时间必定早于话题b的开始时间
2)话题a和话题b之间在时间上必定存在交集,如果两个话题没有时间重叠,那么两个话题存在演化关系的可能性很小
3)话题a和话题b之间时间的交集跨度越大,那么两个话题之间的演化可能性就越大
4)话题a和话题b之间必定存在共用的关键词或者普通词语,即内容相关性。话题a和话题b之间的相似度必须大于某个阈值,才能存在演化关系
5)话题a和话题b之间的相似度越高,那么两个话题之间的演化可能性就越大
3、计算话题之间的演化权重。
1)每两个话题之间的演化权重,为话题间时间相关性与内容相关性之积,即log(话题重叠日期数)*话题内容相似度
2)话题间内容相似度为话题之间的余弦相似度
3)若话题间内容相似度小于阈值,则演化权重为0,本实验中设置阈值等于0.6
4)若话题间演化权重大于0,则在两个话题间构建一条有向边,如a->b,表示由话题a演变成了话题b
四、话题演化网络的展示
1、使用visjs对生成的话题演化图进行有向图可视化展示
2、话题节点以话题名称+话题开始时间+话题结束时间来表示,话题之间演化关系,以两个话题之间的演化权重作为边的标签 。
关于作者
刘焕勇,liuhuanyong,现任360人工智能研究院算法专家,前中科院软件所工程师,主要研究方向为知识图谱、事件图谱在实际业务中的落地应用。
得语言者得天下,得语言资源者,分得天下,得语言逻辑者,争得天下。
1、个人主页:https://liuhuanyong.github.io。
2、个人博客:https://blog.csdn.net/lhy2014/。
欢迎对自然语言处理、知识图谱、事件图谱理论技术、技术实践等落地应用的朋友一同交流。