基于LSTM自动编码机的短文本聚类方法
2017-10-26黄健翀邓玫玲
黄健翀 邓玫玲
摘要:一种基于文本向量化的短文本聚类方法。该方法以词向量作为基本特征,使用基于LSTM的自动编码机,对表征文本的词向量进行压缩编码,从而将文本不定长的词向量特征统一提取为统一输入长度的文本特征向量。这些文本特征向量的聚类结果即为短文本的聚类结果。对这一方法使用带标注的数据集进行了测试,使用基尼非纯度作为指标衡量该方法的聚类效果与人工聚类的拟合度;同时,使用聚类中心平均距离来衡量聚类结果中句子之间的结构相似度。结果表明,该方法更着重于匹配整体的文档结构,得到的聚类的句子间的结构相似度较高。
关键词:自然语言处理;短文本;聚类;长短期记忆网络;自动编码机
中图分类号:TP183文献标识码:A
Abstract:A short text clustering method,which is based on text vectorization,is proposed in this article.Word vectors are used as basic features in this method,and are encoded and compressed by LSTMAutoEncoder to get fixed length vectors to represent the texts.These fixed length vectors are used for the final clustering.A test with labeled dataset is applied for this method,with Gini impurity used to measure the similarity of the result of the clustering of this method and human clustering.Meanwhile,innercluster distance is used as evaluation for the structural similarity within a cluster.The result shows that,this method is focused on matching the structural information of the text,as the result got a relatively high similarity within the cluster.
Key words:natural language processing;short text;clustering;long shortterm memory network;autoencooder
1引言
在自然語言处理的应用领域中,文本聚类是一个重要的任务。通过文本聚类,可以根据文本内容的性质对海量文本进行初步的划分,为后续如数据挖掘、标签化处理、知识图谱等一系列的应用提供一定的信息。同时,文本聚类的结果对一些业务本身,诸如客服回复、病例整理等存在参考价值。在文本聚类中,以词在文档中的出现情况作为特征维度,组建特征向量并进行聚类的方法是一类较经典的方法。该类方法依赖于两个文档之间共有词的比较,需要对文档中词的出现情况进行编码,并比较两个编码后的向量。在该类方法中,较经典的文档编码方法是直接将词出现情况进行编码的词袋(Bag of words)方法[1]以及进一步衍生的以词频-逆向文档频率(Term FrequencyInverse Document Frequency,TFIDF)作为权重的编码方法。使用当文本长度较长时,文本间存在足够多的相同词汇,得到的表征文本的特征向量较稠密,能够较好地应用于文本聚类上。然而,短文本(通常在10~100词之间)聚类问题因其文本长度短,基于词出现情况生成的词袋向量非常稀疏,词和词之间的重合率较低,容易由于同义词/近义词的语义鸿沟现象产生相似度漂移,传统的聚类方式效果差强人意。
另一方面,词袋模型在操作时并没有考虑文本的结构信息(Semantic Information)。虽然改进的词袋模型使用n元(ngram)词能够保留部分结构信息,但并非完整的结构信息。
针对于短文本易受同义词影响的特性,可以使用词向量(Word vector)作为基础特征。近义词和同义词的词向量具有高相似度,可以利用这一特性,解决原先在词袋模型中,同义词无法识别的问题。使用词向量作为基础特征、LSTM整合处理的组合方法能有效地对文本内在含义进行抽取,这一点已经被最近的一些自然语言推断(Natural Language Inference)方法充分证明了 [2][3]。因此,可以使用类似的方法,将词向量按顺序输入到LSTM网络中转化为最终的文本向量,并使用经典的Kmeans方法进行聚类。在文本向量的生成过程中,为了最大限度地保留有效信息,使用自动编码机(AutoEncoder)的方式来对词向量进行转换的LSTM网络模型进行训练。
2词的分布式表示向量模型
以TFIDF作为权重的词袋模型中,特征(后续简述为TFIDF特征)中的单个词语实际上是作为一个单元来进行处理的。在词表示的级别,其表示可以视为一个仅在对应该词的维度上对应值为1的词独热编码(Onehot encoding)向量。而词袋模型则是将这些向量累加起来并乘以对应的IDF值作为权重,得到该文档向量中对应于这一个词的最终特征值。在这一过程中,词与词之间的关系并没有被考虑。表达同样意义或近似意义的词,为该特征向量上的毫无关系的两个维度。
基于“词的语义由其上下文确定” 理论(A word is characterized by the company it keeps),许多分布语言模型被提出。其中较典型的有基于矩阵的分布表示——以全局向量法(Global Vector,GloVe)[4]为代表,和基于神经网络的分布表示——以本文中使用的词向量生成工具Word2vec[5]采用的连续词袋(Continuous BagofWords)模型和跳过语法模型(Skipgram)为代表。endprint
通过分布式表示的词向量模型得到的词向量,有一个特性是可以很好地表征词和词之间的关系。典型的例子是词的关系的类比,如
υ("国王")-υ("王后")≈υ("男")-υ("女")
υ("英国")+υ("首都 ")≈υ("伦敦")(1)
对词间关系有良好表达这一特性正是对短文本的表征中所需要的。这一特性使得近义词或同义词更容易被表征为近似的向量。这一关系能够在后续的LSTM网络中被捕捉并利用。此外,分布式表示的词向量具有低维稠密的特点,在后续的使用上较高维稀疏的基于词独热编码(Onehot encoding)所生成的词袋(Bag of Words)或进一步的TFIDF特征更为方便。
3基于LSTM的自动编码机
31自动编码机(Autoencoder)
自动编码机是利用自监督学习来对输入样本进行编码的人工神经网络(Artificial Neural Network)。自动编码机的主要用于对某种特定分布的数据集进行压缩编码,以达到降低数据样本维度的目的。自动编码机通常用于进行无监督学习(原理为自监督学习)和特征学习[6][7]。自动编码机及其衍生也在生成模型中得到了应用[8]。自动编码机的结构主要分为两个部分:编码器(Encoder)与解码器(Decoder),其中编码器主要将原始数据 压缩为输出编码 ,即:
:X→Z(2)
而解码器则将输出编码 还原为接近原始数据的数据,即
Ψ:Z→X′(3)
自动编码机的原理图如下:
图1自动编码机原理简图
将数据转化为编码的过程中,数据的信息有一定损失。在编码中仅保留主要的信息。这一特性亦提供了降低随机噪声的能力。因此,在部分场景中会使用自动编码机作为降噪机制,将编码再解码后的数据作为降噪后的结果输出。
为使自动编码机能够保留原样本中的主要信息,优化目标设置为:
,φ=argmin,φ||X-φ((x))X||2(4)
即输出编码经过解码器还原后,其和原输入相差距离最小,应该能最大限度地还原原始数据。
32长短期记忆网络(Long shortterm memory Neural Network)
为处理序列型的数据,Gollerp[9]等提出了递归神经网络(Recursive Neural Network,RNN)。递归神经网络将先前时刻的输出作为输入一部分,与此刻的外部输入一起输入到神经网络中,以将先前时刻的输入信息保留并在后续中使用。为更好地处理和保留长序列的历史信息,Hochreiter[10]等提出了长短期记忆网络(Long Shortterm Memory Neural Network)。其原理如图:
在上图中,Xt为LSTM网络当前时刻的输入,ht-1为LSTM上一时刻的输出,ht为当前时刻的输出,Ct-1为LSTM上一个
时刻的细胞状态(Cell State),Ct为LSTM当前的细胞状态。关于细胞状态的意义,请详见后续的描述。
在LSTM网络中,数据分为两个支流。每个支流均由Sigmoid函数(在图中由σ表示)来决定其对后续的影响,而tanh函数为核心处理函数。先前的信息保存在细胞状态(Cell State)中,在结构图中为上路部分,如图:
该部分首先由以下结构生成限制函数以决定保留多少先前的历史信息,即生成对原先细胞状态的保留系数
在该部分中当前输入Xt和歷史输出ht经过tanh函数变换后为细胞状态的更新信息。使用一个Sigmoid函数对其进行系数变换,以决定更新信息在新的细胞状态中的权重。最终这一部分输出的系数加权后的更新信息。
系数加权后的历史信息和系数加权后的更新信息直接叠加,得到新的细胞状态,如以下:
该输出同时作为一部分的下一时刻的输入使用。从以上结构可以看出,LSTM网络可以保留历史信息,并根据历史信息处理和当前输入同时决定当前输出。该模型用于整合序列的词向量是非常合适的。使用LSTM网络,前后文的信息将得到最大保留,从而输出一个信息较全面的文本特征。
33基于LSTM的自动编码机的实现
为将文本转换为定长的稠密向量,并尽量保留原文本序列中的信息,我们采用了基于LSTM的自动编码机,其大致结构如下:
在这里,为了便于说明,我们将不同时刻的LSTM网络展开。句子经分词后,表示各个词的词向量按顺序输入到作为编码器的LSTM网络中,解码器直接获取编码器的输出进行解码,并以原来的词向量作为优化目标,使信息经过编码器和解码器后得到最大保留,以保证原句子被转换为统一的短文本向量后其信息得到了最大的保留。同时,使用LSTM网络顺序处理词向量信息最大程度地保留了原先的句子结构信息。
词向量由Word2Vec[5]工具对文本进行自监督训练后输出生成,到目前为止所有的工作都可以使用不需人工标注的数据。
4聚类方法与整体说明
使用LSTM自动编码机生成文本特征向量后,使用Kmeans聚类算法对文本进行聚类。方法整体结构如下:
先通过Word2Vec神经网络进行词嵌入(Word Embedding),使用输出的词向量作为序列输入到LSTM网络中进行以自动编码机(AutoEncoder)的方式进行自监督训练,得到的文本向量最终输入到Kmeans聚类中进行文本聚类。
本文中,Word2Vec的词向量生成使用的工具是Gensim,语料库(Corpus)使用了中文维基于2017/05/20的导出文件和内部的投诉处理数据集合并而成的语料。LSTM自动编码机的网络训练使用的是Keras神经网络工具箱。Kmeans聚类方法来自于python的机器学习库Sklearn。endprint
在實验中,我们用于聚类的数据集为内部的投诉处理数据集。该数据集根据业务标签分为了10类,为结果。本次实验的评估方式主要有以下几个方面:
1)通过特征向量降维后的可视化结果,可以比较直观地看到生成后的特征向量的分布情况。在这里我们使用Tsne来进行特征向量的降维。
2)平均聚类中心距离:
i=1n∑xjCi‖xj-i‖(5)
其中xj为属于Ci类的样本向量,ci为该类的中心向量,n为该类的大小。该指标为传统的聚类效果指标,用于衡量类中样本的集中度。该项指标越低,则表明聚类结果中句子结构越接近。
3)原标签类与聚类后标签类的基尼非纯度(Gini Impurity)
I(Ci)=1-max1≤k≤K∑Jj=1[yj=k?]J(6)
其中yj为某个样本标签,k为原数据集中的类别标签,J为Ci类中的样本总数。该指标从流行的决策树(Decision Tree)模型类的分类与回归树(Classifcation and Regression Tree,CART)算法[9]中衍生出来,主要衡量类中非主要的原标签的比例。该项指标反映了聚类结果与人工标注的相似度。
5实验结果与分析
51词向量提取
本次实验中词向量提取使用的语料来源为两部分。其一用于后续聚类的投诉数据集,该部分数据中共有有效句子460762个,词13396546个。由于该部分数据量较小,另外使用了中文维基于2017/05/20的导出文件作为辅助语料库,与该部分一起用于进行词向量的提取。中文维基导出的语料库中共有有效句子3311845个,词140948202个。最终获取词向量字典大小为100003,罕见词(出现次数<5)未收录。
生成的词向量字典中部分随机抽取的词汇及与其最相似的词的匹配示例如下:
以上结果显示了词向量的意义相似性,即生成的词向量和其含义相近的词的词向量具有较高的相似匹配度。
52LSTM自动编码机网络训练
LSTM自动编码机使用Keras神经网络工具包实现。Keras环境使用的是使用Theano后端(Backend)。
在训练过程中,自动编码机将编码器(Encoder)与解码器(Decoder)结合起来进行训练。训练完成后,将编码器(Encoder)用于对文本进行编码,并使用这些编码向量进行聚类。
53文本向量降维后的可视化
首先将TFIDF特征向量与LSTM自动编码机文本向量进行降维可视化,从这一角度来直观地了解生成的特征对聚类的影响。
以下是TFIDF的原标签分布与其聚类结果的标签分布。
其中图10中文本按照其原先标识的标签进行颜色的标识,图11中文本按照聚类后的标签进行颜色的标识。
图12为使用LSTM自动编码机,编码器输出的压缩文本向量的原标签分布情况。图13为使用这些文本向量进行聚类后的结果。可以看到在该图中文本已经形成了一定程度的集落,且与数据集提供的标签有一定程度的对应关系。在聚类后的集群中有部分体现了这样的关系。
54使用基尼(Gini)非纯度和聚类中心距离作为指标衡量
参考4,我们用于比较模型的主要标准为基尼(Gini)非纯度和聚类中心平均距离。以下为实验结果。
55总结
本文介绍了一种使用词向量作为基本特征,并使用LSTM网络将文本的词向量特征统一提取为统一的文本的特征的方法。基于这种文本特征,使用Kmeans等聚类方法对文本进行聚类。
本文使用的特征与基于TFIDF特征的方法相比,更加着重于匹配整个文档的结构,得到的聚类中的句子间的结构差异较小,这点从较小的聚类中心平均距离可以证明。
由于本次提供的原始数据集较小,在训练词向量的时候使用了额外的维基语料库作为辅助的词向量数据集,但依然未能很好地解决某些业务关键词出现次数较少而无法准确匹配其语义的现象,后续可以从以下方面进行完善:
1)依然使用词向量作为基础特征,以解决语义鸿沟现象,但需要更大的和业务相关的文本数据集;
2)增加能够捕捉业务关键词信息的方法,以应对实际场景中以业务关键词作为聚类重要依据的场景。
参考文献
[1]RAJARAMAN A,UllMAN J D.Mining of Massive Datasets [M].1 Edition,Cambridge:Cambridge University,2011:1-17 doi:10.1017/CBO9781139058452.002.
[2]MUELLER J,THYAGARAJAN A.Siamese Recurrent Architectures for Learning Sentence Similarity[C]//AAAI.2016:2786-2792.
[3]CHEN Q,ZHU X,LING Z H,et al.Enhanced LSTM for natural language inference[C]//Proc.ACL.2017.
[4]PENNINGTON J,SOCHER R,MANNING C D.Glove:Global vectors for word representation[C]//EMNLP.2014,14:1532-1543.
[5]MIKOLOV T,CHEN K,CORRADO G,et al.Efficient estimation of word representations in vector space[J].arXiv preprint arXiv:1301.3781,2013.
[6]LIOU C Y,HUANG J C,YANG W C.Modeling word perception using the Elman network[J].Neurocomputing,2008,71(16):3150-3157.
[7]LIOU C Y,CHENG W C,LIOU J W,et al.Autoencoder for words[J].Neurocomputing,2014,139:84-96.
[8]KINGMA D P,WELLING M.Autoencoding variational bayes[J].arXiv preprint arXiv:1312.6114,2013.
[9]GOLLER C,KUCHLER A.Learning taskdependent distributed representations by backpropagation through structure[C].IEEE International Conference on Neural Networks,Washington,DC,USA.1996,1:347-352.
[10]HOCHREITER S,SCHMIDHUBER J.Long shortterm memory[J].Neural computation,1997,9(8):1735-1780.
[11]BREIMAN L,FRIEDMAN J,STONE C J,et al.Classification and regression trees [M].CRC press,1984.endprint