基于连续词包模型的一种改进的文本主题聚类算法

2018-09-13 11:22秦泽浩
电脑知识与技术 2018年17期
关键词:分词语料库文档

秦泽浩

摘要:本文针对知乎网上问答文章的特点和信息处理方式,分析了使用连续词包模型对这种文本进行主题聚类的一般方式和步骤。包括文本预处理、文本处理的模型选择和聚类分析算法的设计。在本文预处理阶段,讨论了对于中文的分词和去噪等;在文本处理的模型选择阶段,本文着重讨论了N-gram语言模型;在文本聚类阶段,分析并描述了一种文本聚类算法。通过上述讨论分析确定了本文最终应用的方法。

关键词:连续词包(Continuous Bag of Words);文本主题聚类算法;改进 K-means

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)17-0226-03

计算机网络技术的迅猛发展为数据存储、管理和挖掘带来了巨大挑战。云计算的出现更是形成了错综复杂、形式各异的数据源,将计算机应用技术带进了大数据处理时代。借助分布式计算技术来实现大规模并行计算来提高数据处理技术和能是当前计算机网络发展的主流趋势。

针对新兴媒体的舆情云计算监测系统的研发项目着眼于对新兴媒体进行数据挖掘分析,即时对社会热点进行抓取,对群体意见进行分析总结。研究采用云计算技术,通过按需开发个性化爬虫的手段捕捉舆情信息,及时发现危害社会稳定的言论和群体负面情绪并上报,对备受群众关注的热点话题 进行时事追踪反馈,而对无价值的小众讨论则将其忽视,以期为政府和企业管理者的决策提供准确且及时的综合信息和技术服务,为提升政府的管理、服务水平提供有效策略支持。

本研究对基于连续词包(Continuous Bag of Words)模型的文本主题聚类算法与K-means聚类方法进行结合。研究建立的“词包模型”将语言中的语法关系做了简化,也就是将中文词语看成一系列独立词,只关注文本中词汇的统计性特征,在此基础上运用深度神经网络算法将其转化为N维向量,结合传统三层神经网络算法做进一步的处理,将网络从三层分化为多层,在对向量的聚类分析中,使用改进的K-means算法进行了计算。本文运用改进的计算方法对爬虫子项目的语料库进行了聚类分析,得到了较好的验证效果,并建立了稳定的聚类模型。

1 理论基础与算法设计

1.1 词包模型的基本概念

词包模型是一种在信息检索领域中对于文档的表示方法。它使用“词包”的概念来表示文档,文件中出现的词汇被想象成是放在“词包”里零散而独立的对象。词包模型的重点在于其对词包中各个词汇的看法。在词包模型中,每个词汇都是独立的单位,不考虑其相依性。所谓“词包”,事实上就是将一篇文档的词汇单列出来形成一个集合,但是这个集合无法表达关于一个词在文档中的词频的信息,这是因为这个集合不考虑任何语法以及单词的顺序。

1.2 对词包模型的改进——连续词包模型

连续词包模型是利用词包模型训练神经网络的一种训练方法,它将一篇文档的上下文看成是由词包中的词构成的一个有序的高维输入,亦即将词包模型进行叠加,每一个输入层代表一个单词,达成输入更多上下文信息的目的。连续词包模型的训练输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这特定的一个词的词向量。比如下面这句话:

“这样 词 与 词 之间 就 可以 定量 的 去 度量 他们 之间 的 关系”

对于这句话来说,想要输出“度量”这个词,我们可以将上下文大小取值为4,即将上下文定义为:

“可以 定量 的 去 度量 他们 之间 的 关系”

特定的这个词是"度量",也就是我们需要的输出词向量,上下文对应的词有8个,前后各4个,这8个词是我们模型的输入。由于我们使用的是词包模型,因此这8个词都是平等的,也就是不考虑他们和我们关注的词之间的距离大小,只要在我们上下文之内即可。

在本例中,我们的输入是8个词向量,输出是所有词的softmax概率(训练的目标是期望训练样本特定词对应的softmax概率最大),对应的CBOW神经网络模型输入层有8个神经元,输出层有词汇表大小个神经元。隐藏层的神经元个数我们可以自己指定。通过DNN的反向传播算法,我们可以求出DNN模型的参数,同时得到所有的词对应的词向量。这样当我们有新的需求,要求出某8个词对应的最可能的输出中心词时,我们可以通过一次DNN前向传播算法并通过softmax激活函数找到概率最大的词对应的神经元即可。

1.3 设计中的要素

本研究对于在连续词包(Continuous Bag of Words)模型基础上对文本主题进行聚类提出了一整套分析流程。这套流程在中文分词设计、文本去噪、语言模型、神经网络算法、.K-means聚类等分析的运用上做了创新性的改进,对于测试数据得到了一个稳定的模型。

1.3.1 中文分词设计

中文的特征是词语之间没有明显的间隔,因此,针对中文文档的分析,采用詞语级别拆分的方法进行智能识别。这种算法对前缀词典进行高效扫描,根据句子中汉字所有可能成词情况生成有向无环图 (DAG),采用动态规划查找最大概率路径, 找出基于词频的最大切分组合。进而在词典中进行比对,对于词典中不存在的词,再采用基于汉字成词能力的HMM模型和Viterbi算法进行智能识别。通过这样的分词处理,原始文本辉被处理成一系列由空格隔开的单个词。接下来再使用神经网络算法来构建语言模型,在构建语言模型的过程中得到词向量。

1.3.2 文本的去噪

在完成文本分词之后,分词得出的结果包含大量重复的虚词及标点符号。对于文本主题来讲,这些信息与文章的主题无关,在主题聚类中是不必要的,应当予以去除。

我们设计了一种对汉语中虚词的处理方式。对于每次聚类中出现的大频率词,统计它在文章每句话当中的分布,若分布得非常均匀,就当作虚词去掉。另外,标点符号直接予以去除。

1.3.3 语言模型

其中[wn]代表语言模型中的某个词。语言模型在自然语言处理的各种应用中都很常见,如词性标注,信息检索,语音识别,句法分析和机器翻译。由于字词与句子的各种组合的长度是任意的,因此在训练过的语言模型中容易出现以前没有出现过的字符串(数据稀疏的问题),因此,在语料库中常常会出现零概率问题,即语言模型中有的字符串不存在于字典中。基于此,本研究采用N-gram来避免零概率问题,这个方法是近似平滑的,可以构建为基础的模型。在模型中,每个词的概率与它前边的N个词有关:

1.3.4 神经网络算法

本文采用的神经网络算法由Bengio在2003年提出。Bengio用了一个三层的神经网络来构建语言模型。另外,他还假设这种语言遵循N-gram语言模型。

在这个模型中,设[M]表示词向量的维度,整个模型中使用的词向量全部存储与矩阵C,矩阵C中的每一行都是一个词的词向量,用[C(w)]表示。

网络的输入层接受[N]个[C(w)]的輸入,这些输入首尾相接,形成一个[(N-1)×M]维的向量,这个向量记为[x]。和普通的神经网络一样,隐藏层直接使用[d+Hx]计算得出。其中[d]为一个偏置项,每次计算的时候随机生成。使用[tanh]作为激活函数。输出层节点[yi]表示下一个词为[i]的未归一化[log]概率。最后使用softmax激活函数将[y]归一化为概率,最终[y]的计算公式为:

1.3.5 K-means聚类

对于K-means聚类,算法设计为将n个对象聚为k类,以便令获得的聚类结果中同一类的对象相似度尽可能高,而不同类的对象相似度尽可能低,聚类相似度将利用各类中的对象的均值所获得的虚拟的“平均对象”来进行计算。

算法输入:聚类组数k,数据对象n个

算法基本步骤:

1)随机选择k个组中的初始聚类中心;

2)遍历各个类中的对象,计算他们与“平均对象”的距离,并根据最小距离原则重新分类;

3)重新计算“平均对象”;

4)计算标准测度函数,如果标准测度函数满足收敛条件则算法终止,否则就回到步骤2。

算法改进:

本研究中不为K-means算法规定聚类个数k,但是会在初始时传入一个建议值,并且引入两个新的参数δ与ε。若发现两个聚类的“平均对象”距离近于δ,则将这两个类合并成一个类。每次完成聚类后会测试每个类的内聚描述量,若内聚描述量大于ε,则将组内对象随机分成两类。

2 实验过程及结果分析

遵循以上过程,本文对改进算法的效果进行了验证。语料库使用了项目前述的爬虫子项目所得的知乎语料库,这个语料库中主要是知乎网中的问答内容,使用JSON的方式进行存储。总数据量为35GB,本文使用了其中的50%数据作为训练集,50%的数据作为测试集,将数据格式化之后进行清洗,只保留答案和问题描述中的文字内容,再应用上文中提到的分词方法作分词。

之后应用gensim包中的word2vec工具包进行文本的向量化并写入文件。gensim包中的word2vec工具包来源于Google在2013年的一项研究。它完成了上文中提到的连续词包模型,能够将输入文本中的词转化为一组词向量。最后使用K-means对词向量进行聚类,即可得到文档的中心词汇,也就是文档的主题。并且最后生成相同主题的文档列表。最终,在已获得的知乎数据中,关注度最多的是表1所示这10个主题:

由于是非监督学习,无法使用正确率或是F检验等方式检查模型的优劣程度。但我们依然可以通过计算样本空间中各个样本与聚类中心的平均距离来描述这个模型的内聚程度。在本研究中,样本空间中样本和聚类中心的距离取值范围为(0, 1),0代表完全相关,1代表完全无关。本次测试的δ=0.1,ε=0.05。

由此可见,模型较为稳定,内聚程度较高。

3 结论

在语料库很大的时候,必须要从语料库中提炼出多个中心主题,才能针对不同主题对数据进行处理。基于统计的语料库主题分类对本研究后续的数据处理有着重要的意义。机器自动生成的主题可以取代文档中标记的主题;在分类基础上建立的主题云可以应用于更精确的情感分析。本文使用gensim的word2vec工具包,在自制的语料库中实现了主题聚类,并且取得了一个较为稳定并且内聚程度较高的模型。

参考文献:

[1] Wikipedia. Bag-of-words model [OL]. [2018.02.18].https://en.wikipedia.org/wiki/Bag-of-words_model.

[2] 維基百科. 语言模型[OL]. [2015.03.27].https://zh.wikipedia.org/wiki/%E8%AA%9E%E8%A8%80%E6%A8%A1%E5% 9E%8B.

[3] 张小欢.中文分词系统的设计和实现[D].电子科技大学,2010.

[4] Yoshua B, Rejean D, Pascal Christian J. A Neural Probabilistic Language Model[J]. Journal of Machine Learning Research, 2003, 3(0): 1137-1155.

猜你喜欢
分词语料库文档
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
分词在英语教学中的妙用
《语料库翻译文体学》评介
基于RI码计算的Word复制文档鉴别
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
基于JAVAEE的维吾尔中介语语料库开发与实现
论英语不定式和-ing分词的语义传承
语料库语言学未来发展趋势