8.1 文本的向量化与不同表征

8.1 文本的向量化与不同表征

文本数据一般属于非结构化的数据,若要让计算机对其进行一系列操作,需要将其转化为数值向量。将文本转换为高维空间的数值向量的这一过程被称为文本的向量化(Text Vectorization)。典型的文本向量化方法有两种:一种是传统的词袋模型表征;另一种是近年来较为流行的词嵌入分布式表征。

传统的词向量化是基于词袋模型的方法。词袋模型是在自然语言处理和信息检索下被简化的表达模型,顾名思义,也就是将文本材料中的词语装到一个“袋子”中进行表示。在词袋模型中,词与词之间相互独立,且该模型忽略了文本中的语法和语序。词袋模型会将文本中所有的词记录下来。例如,对于一个行是文档、列是单词的矩阵,其中的数值或者是单词在这个文档中出现的频次,或者是考虑词频和逆文档频率结合后的词频,数据映射如图8-1所示。

图8-1 数据映射

如果文本数量比较大,文本的重复性又比较弱,那么将会得到一个巨大的稀疏矩阵,从而导致存储效率和运算效率都很低。由于词袋模型忽略了文本中的语法和语序,对单词出现的顺序没有任何记录,因此“R比Python效率高”和“Python比R效率高”这两个短语,在词袋模型中被认为具有完全一样的意思。

在上面讨论的基础上,有学者提出了词嵌入(Word Embedding)模型。词嵌入是文本向量化的一种,从概念上而言,它是指把一个维数为所有词的数量的高维空间嵌入一个维数低得多的连续向量空间中的过程,每个单词或词组被映射为实数域上的向量。维度的确定需要根据词在句子中的位置和句子在文本中的位置。通过这种方式,向量化后的矩阵维度被控制在一个较低的范围内。通过这种方式还可以确定不同词在句子中的距离关系,从而计算不同词之间的相互关系。利用词嵌入模型,我们不仅可以找到意思相近的关键词,还可以找到一些词的反义词,同时,还能够计算词与词之间的距离。如果能够得到词向量,就可以轻易地进行这种计算,然后进行文本的理解。

one-hot表示法是一种常见的文本向量化方法,目前常用的词嵌入方法有两种:word2vec和Glo Ve,其中word2vec的应用更为广泛,word2vec的基本思想是:先用向量代表各个词,然后通过神经网络模型在大量文本语料库上学习向量的参数。两者训练出来的文件都以文本格式呈现,区别在于word2vec包含向量的数量及其维度。word2vec和Glo Ve的训练结果如图8-2所示。

图8-2 word2vec和Glo Ve的训练结果

在R语言中,目前还没有成熟的封装包可以支持word2vec词向量化,这里以Python中的第三方包gensim为例进行介绍,使用gensim包之前,需要事先安装配置Python环境。若使用Glo Ve实现词向量化,可以借助于R中的text2vec包来完成。