2. 复旦大学 计算机科学技术学院, 上海 200433
2. School of Computer Science, Fudan University, Shanghai 200433, China
开放科学(资源服务)标志码(OSID):
互联网和人工智能等信息技术的快速发展,使得新闻报道、博客推文、用户评论等大量文本数据呈指数级增长,这些文本数据中蕴含着时事政治、热点话题等具有重要价值和研究意义的信息。但由于网络中文本数据海量、繁杂等特点,人们难以在大量篇幅文本中直接获取有效信息,因此快速高效地在海量文本数据中提取有效信息成为研究人员关注的重点。以词序列形式挖掘文本中频繁出现的短语成为用户获取关键信息及进行文本集探索的有效方式之一。频繁词序列挖掘是将频繁出现的词序列看作能够反映文档主题内容的短语,挖掘在文本集合中频繁出现的词序列。频繁词序列挖掘工作在短语挖掘[1]、文本聚类[2]、话题检测[3]等任务中发挥重要作用。EL-KISHKY等[4]在语料库中抽取频繁词序列作为短语候选集,用于短语挖掘。BEIL等[5]挖掘文本集合中的频繁项集,使用频繁项集作为候选簇进行文本聚类。MA[6]检测滑动时间窗口中的词频统计等信息,并将其应用于新闻流的热点话题提取模型。在这些工作中,频繁词序列挖掘是目标任务中重要且耗时的步骤,因此高效的挖掘方法能够带来整体任务效率的提升。
在很多实际应用中,新闻、博客等文本数据通常会以时间为单位进行组织并存储。近年来,文献[7-9]等诸多研究工作都聚焦在流数据、时空数据等具有时间属性的文本数据中进行文本挖掘。因此,研究时间维度下的文本挖掘工作同样具有重要意义。在一段时间区间内持续频繁出现的短语,更能体现热点话题和文章内容趋势。例如,当使用《纽约时报》新闻作为输入数据时,划定时间区间为“2020年3月”、频次阈值为20,在这段连续时间区间内进行频繁词序列挖掘,发现获得的频繁词序列为“冠状病毒实时更新”、“冠状病毒的简报”和“伯尼·桑德斯”等,通过这些频繁词序列,可以看出该阶段的热点话题更多与新冠肺炎和美国大选的候选人选问题相关。然而,在面对海量文本数据并无法完全掌握文本内容的情况下,用户难以在一次查询中准确设置阈值和时间区间,需要多次迭代查询从而完成挖掘任务。用户趋向于以探索性方式逐步进行挖掘,例如通过调整最小频次阈值的大小获取合适的关键短语集合,或通过调整时间区间来探索不同时间段内的热点话题的变化。传统频繁项集挖掘方法在修改最小频次阈值或数据集后需要重新进行挖掘,因此在海量文本数据库上进行频繁词序列挖掘时存在耗时严重的问题,无法达到频繁迭代的查询效率要求。
针对文本挖掘中热点话题检测、关键短语挖掘等实际应用场景,本文提出连续时间区间内的频繁词序列挖掘算法。使用频率树(Frequency Tree,F-Tree)作为基本索引结构支持高效的频繁词序列挖掘,同时设计频率树的序列化构建方式和多棵频率树的连续剪枝挖掘算法,快速寻找在连续时间区间内的热点短语信息。
1 相关工作 1.1 热点话题检测热点话题检测主要关注在一段时间内持续受到关注和讨论的主题内容,近年来研究人员对于热点话题检测进行大量研究。文献[10]提出PCTF方法,并将其用于查询一组词汇成为热词的最长持续时间。文献[11-12]在带有时空信息的数据流中,查找一段时间内发布的k个最相关的词汇或文档。文献[13]通过优化TF-IPDF的计算过程,加快热点词汇查询效率。在上述工作中,热点话题的挖掘结果均以单个词汇为单位呈现。短语相比词汇在语意中更加完整,能够表达更准确的主题含义,在实际应用场景中,人们更倾向于使用短语作为主题表达方式。
1.2 频繁项集挖掘频繁词序列挖掘问题类似于数据挖掘中的频繁项集挖掘问题[14]。在频繁项集挖掘中,以Apriori算法[15-16]为代表的层次优先搜索方法通过遍历迭代数据集发现项集,以FP-Growth算法[17]为代表的一系列算法根据数据信息构建FP-Tree,在此基础上进行频繁项集发现。Apriori算法能够通过简单修改应用于频繁词序列挖掘问题,但由于算法需要多次扫描整个事务数据库,在大规模文本挖掘中效率低下。凭借良好的扩展性和易编写的特点,仍有一些研究人员[18-19]使用Apriori类算法进行词序列挖掘。FP-Growth类算法利用树形结构对原始数据进行索引,在挖掘过程中无需生成候选频繁项集,提高了算法效率。但在FP-Tree的构建过程中,需要按照项集频繁度进行重新排序,打乱了项集之前的前后顺序和关联关系,对于频繁词序列挖掘任务而言,单词构成的词序列是有序且连续的。因此,上述频繁项集工作对于解决频繁词序列挖掘问题具有一定指导意义,但无法完全适用于频繁词序列的挖掘。
1.3 后缀树与FP-Tree类似,后缀树是一种多叉树型的数据结构,能够索引一个字符串的所有后缀。对于由给定字符串S构成的后缀树T,T中每个内部节点到叶子节点的路径均能够构成S的一个后缀。如图 1所示,由字符串S=“I Know You Know I Know”构成的后缀树T可以看出,S包含两个以I为起始点的后缀“I Know You Know I Know”和“I Know”。
![]() |
Download:
|
图 1 后缀树 Fig. 1 Suffix tree |
后缀树的概念由WEINER[20]在1973年提出,为了降低后缀树的存储代价,MCCREIGHT等[21]对后缀树采取压缩冗余节点的方法,如图 2所示,每条边不再仅限于包含一个单词而是一个部分叉的字符串,使用$表示字符串结束。每个内部节点都至少具有两个子节点。为提高后缀树的构造效率,UKKONEN[22]在1995年提出在线构造字符串后缀树的算法,能够从左向右对字符串进行处理,当遇到不同后缀时对后缀树的边进行分割,该方法具有线性的时间复杂度。
![]() |
Download:
|
图 2 压缩后缀树 Fig. 2 Compressed suffix tree |
本文研究的主要问题为根据用户给定的查询范围和最小频次阈值,快速找到查询范围内在所有最小时间区间上均满足频次阈值的词序列集合,实现对连续热点话题的检测。
定义1(时间区间
定义2(带有时间属性的文本数据库D) 数据集中的文本根据时间属性值分布在对应区间中,存储分布于时间区间
定义3(词序列
定义4(词序列的频次
定义5(连续时间区间内的频繁词序列查询
原始后缀树在边上记录子串起始位置等信息,同时后缀树通常作为单个字符串而不是文本集合的索引结构,无法很好地表示多条文本数据信息。本文对后缀树结构进行改进,提出频率树,使其可用于词序列频次的计算,实现词序列挖掘算法。F-Tree对于原始后缀树结构修改如下:
1)给定一个包含n条文本数据的文本集合
例1 频率树与仅索引单条字符串的后缀树不同,能够包含多条文本串的所有后缀。使用不同终止符保证了文本数据的所有后缀为唯一存在,每个后缀均由唯一的叶节点表示,避免了后缀数据被隐藏在内部节点中或频次计算被忽略的问题。例如,根据UKKONEN算法在图 2的后缀树中插入新的句子“I Know”时,原始后缀树在读取到与边“I Know”完全匹配后,判断完成本次插入而无须进行任何操作,导致对于完全相同的后缀错误的频次计算。如图 3所示,对于由“I Know You Know I Know”和“I Know”构成的F-Tree,当修改为插入“I Know $\$$2”时,能够与“I Know You Know I Know $\$$1”中“I Know”后缀在终止符位置进行区分,从而保证频率统计的正确性。
![]() |
Download:
|
图 3 频率树 Fig. 3 Frequency tree |
2)F-Tree的每个节点由节点标号
例2 以图 3中节点2为例,节点9存储的
引理1 在F-Tree中,叶子节点的
证明 如图 3所示,F-Tree中由根节点到叶子节点的路径表示文本数据后缀,由于每条插入数据采用不同终止符进行标记,因此数据集中所有后缀均是唯一的,即叶子节点的
引理2 每个内部节点的
证明 数据集中词序列s出现频次
引理3 如果由根节点到节点i的路径
证明 由于每个节点的
由F-Tree节点的freq特点可知,通过对比节点freq值与频次阈值的大小,可以判断词序列是否符合查询要求。当使用F-Tree进行最小频次为
算法1 基于频率树的频繁词序列挖掘算法
输入 后缀树根节点root,阈值
输出 满足阈值条件的词序列s的集合S
1.S={}
2.if root.freq <
3.return S//节点频次不满足阈值时停止遍历
4.//深度遍历当前节点的孩子节点
5.for link in root.links do
6.//路径中加入当前子串
7.path.add(link.value)
8.S < - mining_tree(link,
9.path.remove(link.value)
10.if S.empty:
11.S < - path
12.return S
使用F-Tree的频繁词序列挖掘算法能够获得每个单位时间区间内的频繁词序列结果。为了进行连续时间区间范围内的频繁词序列挖掘,需要对每个单位时间区间内的挖掘结果进行合并,得到在所有单位时间区间内均满足查询条件的词序列。在对单个F-Tree挖掘结果进行合并时,一个基础的取交集方法是对所有的结果集合逐个合并取交集,从而获取满足要求的最终结果集合。对第i个时间区间的词序列集合
算法2 连续区间查询的取交集算法
输入 词序列集合S1,S2
输出 在S1,S2中均出现过的子串result
1.S={}
2.S1.sort()
3.S2.sort()
4.s2=S2.begin()
5.for s1 in S1:
6.while s2!=S2.end()
7.i=0,length=-1
8.while(i < s1.length & & i < s1.length)
9.if s1[i]==s2[i]:
10.i++
11.else break;
12.length=max(length,i)
13.if(i==s1.length):break
14.else if(i==s2.length||s1[i] > s2[i]):
15.continue
16.else:break;
17.if l > 0:S < - s1[0,i]
18.return S
3.3 改进的剪枝挖掘算法算法1与算法2在对每个F-Tree都进行阈值为
算法3 改进的剪枝挖掘算法
输入 后缀树根节点root,阈值
输出 满足阈值条件词序列的合并后的集合S
1.S
2.//逐个判断S中词序列是否满足条件
3.for sequence in S
4.//计算当前后缀树中满足阈值的路径长度
5.length = find_prefix(root,sequence,θ,0)
6.//截取对应子串并加入结果集合
7.S
使用前i-1个单位时间区间内的结果作为输入,对第i棵F-Tree进行扫描剪枝,获得在前i个单位区间内均满足查询条件的结果集合。在剪枝查询算法中,对于输入集合的每个词序列s,在区间i中的F-Tree中以根节点为起点,自上而下在F-Tree中查找词序列s所经节点是否满足查询阈值,从而找到满足查询条件的最长前缀。该算法充分利用了第i-1个区间的挖掘结果,能够减少F-Tree需要扫描的范围,同时无须对结果集合进行合并,减少了多次遍历的时间代价。后缀树的词序列匹配算法(find_prefix)描述如算法4所示。
算法4 基于频率树的词序列匹配算法
输入 当前匹配节点node,需要匹配的词序列s,阈值
输出 能够匹配的词序列长度length
1.//判断当前节点freq是否满足阈值
2.while node.freq > =
3.//找到与s当前位置匹配的suffix link
4.link = node.findLink(s[index])
5.if link==NULL:break
6.//判断suffix link中词序列与s能否完全匹配
7.while link.value[i]==s[index]
8.i++,index++
9.//继续沿路径向下检测
10.node = link.node
11.return index
3.4 外存频率树加载当使用大规模文本数据集进行查询时,常规主机的内存往往无法容纳全部频率树索引结构。根据F-Tree结构可以看出,树中边信息与节点信息仅与文本数据集相关,而与每次查询的设定阈值无关。因此,当面临内存中无法容纳所有F-Tree索引结构的情况下,通过序列化方法构建每个最小区间内的后缀树并存储在本地文件中,当进行查询时,只需通过反序列化将时间区间范围内的后缀树进行结构恢复,而无须对时间区间内的全部文档重新遍历来构建后缀树。当进行连续时间区间内挖掘时,不再需要多次根据不同时间区间内的文本集合构造F-Tree。相对于读取原数据并重新构建F-Tree的方法,序列化方法能快速还原F-Tree结构,从而提升整体挖掘效率。
3.5 时间复杂度分析假设文本数据集中文本长度为m,查询时间区间长度为T,在单位时间区间下挖掘的频繁词序列的总长度平均为
F-Tree构造具有与压缩后缀树相同的时间复杂度,根据文献[9]可知,F-Tree构造的时间复杂度为O(m)。对于朴素F-Tree的频繁词序列挖掘算法,需要对F-Tree进行深度遍历找到满足查询要求的所有路径,查找长度为
实验使用2个开放数据集进行测试:twitter数据集采用2009年4月至2009年6月的16万条twitter文本;blogs数据集采用来自blogger.com的2004年1月至2004年12月的博客文章[23],该语料库共包含681 288篇文章。在实验中设置单位时间区间长度为1周。为了更加符合现实应用场景,使用NLTK自然语言处理库对文本集合进行预处理,包括按照标点和停用词对文章进行断句、词形还原等。表 1给出了数据集的详细信息。
![]() |
下载CSV 表 1 数据集详细信息 Table 1 Dataset details |
实验算法均由C++ 11语言编写,gcc编译,运行环境为2 GHz Intel Core i5四核处理器,16 GB内存,macOS Catalina 10.15.7操作系统。
实验将Apriori频繁项集挖掘算法作为对比算法,并分别修改频繁词序列查询的各项参数,以验证本文提出的基于频率树的频繁词序列挖掘算法TS_Mining和改进的剪枝挖掘算法TS_Pruning的有效性。
4.2 性能分析对于twitter数据集,设置查询的起始时间为2009年4月1日,查询时间区间T为1、3、6、9、12周;对于blogs数据集,设置查询的起始时间为2004年1月1日,查询时间区间T为5、10、20、50周。
图 4给出了在内存存储数据情况下改变查询时间区间后的查询耗时对比。由图 4可以看出,当数据全部存在于内存时,TS_Pruning算法运行时间开销最低,这是由于在查询条件相同的情况下TS_Pruning算法扫描路径更少,TS_Mining算法不需要多次迭代扫描数据集,因此相比Apriori算法查询耗时约减少了2个数量级,具有明显的效率提升。
![]() |
Download:
|
图 4 改变查询时间区间后的查询耗时对比 Fig. 4 Comparison of query time consumption after changing the query time interval |
图 5给出了在磁盘加载数据情况下改变查询时间区间后的加载与查询总耗时对比。由图 5可以看出,查询所需数据需要从磁盘中加载到内存,基于F-Tree的算法相对于Apriori算法具有大幅的效率提升,但由于查询任务的耗时主要在数据加载到内存的过程中,因此TS_Mining与TS_Pruning算法的总耗时差别并不明显。对于twitter数据集和blogs数据集,设置查询阈值
![]() |
Download:
|
图 5 改变查询时间区间后的加载与查询总耗时对比 Fig. 5 Comparison of loading and total query time consumption after changing the query time interval |
![]() |
Download:
|
图 6 改变查询阈值后的查询耗时对比 Fig. 6 Comparison of query time consumption after changing the query threshold |
通过以上实验结果可以看出,本文提出的TS_Mining算法和TS_Pruning算法能够较好地适应不同需求的查询问题,在不同查询阈值和查询时间区间的应用场景下均能保持更好的查询效率。
为验证本文算法在实际应用场景中的可用性,除了算法查询时间外,还统计了基于Apriori和F-Tree算法的内存和磁盘存储开销。在所有数据及索引全部存储于内存的应用场景下,基于F-Tree的算法的内存存储开销约为Apriori算法的3倍,如表 2所示。
![]() |
下载CSV 表 2 Apriori与F-Tree的内存存储开销 Table 2 Memory storage overhead of Apriori and F-Tree |
如表 3所示,当数据量较大需要在磁盘中进行存储时,F-Tree索引的存储方式在磁盘存储开销上相对原始文本大小约有5至6倍的增长,但随着磁盘存储价格的不断降低,在外存存储的方式还是能够被接受的。对两类算法实时加载的最大内存消耗进行统计,如图 7所示,在实时加载数据的应用场景下,基于F-Tree的算法内存消耗约为Apriori算法的4倍。然而,由于对于连续时间区间查询而言,只需逐次加载一个单位时间区间内的数据并进行挖掘,内存消耗仅与单位时间区间内数据量有关,与总数据集大小和查询条件的设置无关。
![]() |
下载CSV 表 3 F-Tree磁盘存储开销 Table 3 Disk storage overhead of F-Tree |
![]() |
Download:
|
图 7 实时加载的最大内存消耗 Fig. 7 Maximum memory consumption for real-time loading |
本文研究连续时间区间内的频繁词序列挖掘问题,通过改进后缀树结构提出基于频率树的快速频繁词序列挖掘算法。针对连续时间区间内的频繁词序列查询问题,设计改进的剪枝挖掘算法进一步提升频繁词序列挖掘效率。实验结果表明,本文提出的基于频率树的快速频繁词序列挖掘算法和改进的剪枝挖掘算法在不同的应用场景下的查询效率均明显优于传统Apriori挖掘算法。后续将针对频率树的外存存储代价问题进行优化,通过压缩频率树索引和改进后缀树加载效率,进一步提高整体查询和加载效率。
[1] |
LIU J, SHANG J, WANG C, et al. Mining quality phrases from massive text corpora[C]//Proceedings of the 36th ACM SIGMOD International Conference on Management of Data. New York, USA: ACM Press, 2015: 1729-1744.
|
[2] |
王永恒, 贾焰, 杨树强. 海量短语信息文本聚类技术研究[J]. 计算机工程, 2007, 33(14): 38-40. WANG Y H, JIA Y, YANG S Q. Study on massive short documents clustering technology[J]. Computer Engineering, 2007, 33(14): 38-40. (in Chinese) |
[3] |
张仰森, 段宇翔, 黄改娟, 等. 社交媒体话题检测与追踪技术研究综述[J]. 中文信息学报, 2019, 33(7): 1-10, 30. ZHANG Y S, DUAN Y X, HUANG G J, et al. A survey on topic detection and tracking methods in social media[J]. Journal of Chinese Information Processing, 2019, 33(7): 1-10, 30. (in Chinese) |
[4] |
EL-KISHKY A, SONG Y L, WANG C, et al. Scalable topical phrase mining from text corpora[J]. Proceedings of the VLDB Endowment, 2014, 8(3): 305-316. DOI:10.14778/2735508.2735519 |
[5] |
BEIL F, ESTER M, XU X W. Frequent term-based text clustering[C]//Proceedings of the 8th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. New York, USA: ACM Press, 2002: 436-442.
|
[6] |
MA H F. Hot topic extraction using time window[C]//Proceedings of 2011 International Conference on Machine Learning and Cybernetics. Washington D.C., USA: IEEE Press, 2011: 56-60.
|
[7] |
WANG X, ZHANG Y, ZHANG W J, et al. Skype: top-k spatial-keyword publish/subscribe over sliding window[J]. Proceedings of the VLDB Endowment, 2016, 9(7): 588-599. DOI:10.14778/2904483.2904490 |
[8] |
VAN LE H, TAKASU A. Parallelizing top-k frequent spatiotemporal terms computation on key-value stores[C]//Proceedings of the 26th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems. New York, USA: ACM Press, 2018: 476-479.
|
[9] |
刘一宁, 申彦明. 基于终身机器学习的主题挖掘与评分预测联合模型[J]. 计算机工程, 2019, 45(6): 237-241, 248. LIU Y N, SHEN Y M. Topic mining and ratings prediction joint model based on lifelong machine learning[J]. Computer Engineering, 2019, 45(6): 237-241, 248. (in Chinese) |
[10] |
路畅, 何震瀛, 荆一楠, 等. 热点词汇的最长时间区间查询算法[J]. 计算机应用与软件, 2019, 36(8): 249-254, 305. LU C, HE Z Y, JING Y N, et al. A hot terms maximal time range query algorithm[J]. Computer Applications and Software, 2019, 36(8): 249-254, 305. (in Chinese) |
[11] |
CHEN L S, SHANG S, JENSEN C S, et al. Top-k term publish/subscribe for geo-textual data streams[J]. The VLDB Journal, 2020, 29(5): 1101-1128. DOI:10.1007/s00778-020-00607-8 |
[12] |
CHEN L S, SHANG S. Approximate spatio-temporal top-k publish/subscribe[J]. World Wide Web, 2019, 22(5): 2153-2175. DOI:10.1007/s11280-018-0564-3 |
[13] |
赵志洲, 路畅, 何震瀛, 等. 一种高效的文本区间热词查询算法[J]. 计算机工程, 2018, 44(2): 17-23, 30. ZHAO Z Z, LU C, HE Z Y, et al. An efficient text interval hot word query algorithm[J]. Computer Engineering, 2018, 44(2): 17-23, 30. (in Chinese) |
[14] |
HAN J W, KAMBER M. Data mining: concepts and techniques[M]. .
|
[15] |
AGRAWAL R, IMIELIŃSKI T, SWAMI A. Mining association rules between sets of items in large databases[C]//Proceedings of 1993 ACM SIGMOD International Conference on Management of Data. New York, USA: ACM Press, 1993: 207-216.
|
[16] |
AGRAWAL R, SRIKANT R. Fast algorithms for mining association rules in large databases[C]//Proceedings of the 20th International Conference on Very Large Data Bases. New York, USA: ACM Press, 1994: 487-499.
|
[17] |
HAN J W, PEI J, YIN Y W, et al. Mining frequent patterns without candidate generation: a frequent-pattern tree approach[J]. Data Mining and Knowledge Discovery, 2004, 8(1): 53-87. DOI:10.1023/B:DAMI.0000005258.31418.83 |
[18] |
刘昱彤, 吴斌, 谢韬, 等. 基于古汉语语料的新词发现方法[J]. 中文信息学报, 2019, 33(1): 46-55. LIU Y T, WU B, XIE T, et al. New word detection in ancient Chinese corpus[J]. Journal of Chinese Information Processing, 2019, 33(1): 46-55. (in Chinese) |
[19] |
柯文俊, 高金华, 沈华伟, 等. 基于改进Apriori算法的问题模板无监督抽取方法[J]. 中文信息学报, 2020, 34(10): 76-84. KE W J, GAO J H, SHEN H W, et al. Unsupervised question template extraction based on improved Apriori algorithm[J]. Journal of Chinese Information Processing, 2020, 34(10): 76-84. (in Chinese) |
[20] |
WEINER P. Linear pattern matching algorithms[C]//Proceedings of the 14th Annual Symposium on Switching and Automata Theory. Washington D.C., USA: IEEE Press, 1973: 1-11.
|
[21] |
MCCREIGHT E M. A space-economical suffix tree construction algorithm[J]. Journal of the ACM, 1976, 23(2): 262-272. DOI:10.1145/321941.321946 |
[22] |
UKKONEN E. On-line construction of suffix trees[J]. Algorithmica, 1995, 14(3): 249-260. |
[23] |
SCHLER J, KOPPEL M, ARGAMON S, et al. Effects of age and gender on blogging[C]//Proceedings of 2006 AAAI Symposium on Computational Approaches for Analyzing Weblogs. Palo Alto, USA: AAAI Press, 2006: 1-10.
|