NLP系列文章(三)——文本向量的表示方法

基于词向量的表示方法

虽然one-hot和TF-IDF的表示方式也成为词向量,但是我们这里讨论的基于词向量的表示方式是围绕分布式词表征进行的。也就是利用Word2Vec、GloVe和fastText等词向量对文本进行表示,词向量可以根据任务或者资源的不同随意选择,文本表示的方法是通用的。

首先我们根据语料库训练词向量,也就是针对文本中的每个词汇,我们均有它的向量表示。当要获得每个文本的向量表示,可以将文本中出现的词汇进行求和、求平均以及加权求和等方式获取最后的结果。

求和与求平均的方式相对简单,此处不再赘述。如何进行加权求和可以针对任务的需求进行。常见的方式为TF-IDF加权的文本表示。

S e n t e n c e V e c t o r ( s ) = i n ( T F I D F ( w o r d i ) × W o r d 2 V e c ( w o r d i ) ) w o r d i s SentenceVector(s) = \sum_i^n (TF - IDF(word_i) \times Word2Vec(word_i)) \\其中 word_i \in s

上述为对TF-IDF加权的Word2Vec的表示,其中s是需要表示为向量的文本, w o r d i word_i 是每个文本中的句子。 T F I D F ( w o r d i ) TF-IDF(word_i) 代表针对 w o r d i word_i 求对应的TF-IDF值, W o r d 2 V e c ( w o r d i ) Word2Vec(word_i) 代表对应词汇的词向量。

一般情况下,加权之后的文本向量要优于直接求和或求平均的方式,此外,类似的加权方式还有SIF算法,当然也可以用Doc2Vec的方式直接求取对应文本的文档向量。

基于词向量的文本表示方式,由于向量的维度是可控的,所以不会造成维度灾难和数据稀疏的问题,同时也能较好的反应出文本的语义,现在被广泛的使用。

有监督文本表示方法

无监督的文本表示方法和有监督的文本表示方法的最主要区别在于,是否需要训练模型以及优化目标来实现某项任务。很明显无监督的方式是拿来训练好的词向量进行进一步的处理,并没有搭建任何的模型。

有监督的文本表示可以从某一项任务中模型的隐层向量提取出来认为是对应文本的表示向量。例如文本分类模型TextCNN,根据模型不断的迭代,最终收敛到较好的效果,可以将模型的池化层拼接后的结果输出作为文本的表示向量。基于翻译任务的Seq2Seq模型,亦可以将RNN最后一个时间步的输出作为表征文本的向量。根据这种思想可以将很多模型中的隐层输出的向量视为文本向量。

近年来,较为流行的BERT、GPT和ALBERT等模型均是依据依据训练神经语言模型来得到句向量的表示。经过大量的训练数据以及较长时间的训练,这种向量尽可能的表征了文本自身的语义特征。

无论是无监督的方式还是有监督的方式,均没有哪种方式比另一种绝对性的好。在使用文本的表示方式的时候,需要根据上下游任务的特点,还有现有的资源以及数据的规模等多种特性来使用一种较为合适的文本表示方式。

猜你喜欢

转载自blog.csdn.net/qq_19672707/article/details/105636969