一. 摘要
本次内容将分享文本向量化的一些办法。文本向量化的办法有很多,次要可分为以下两个大类:基于统计的办法、基于神经网络的办法。在自然语言解决的畛域中,文本向量化是文本示意的一种重要形式。文本向量化的次要目标是将文本示意成一系列可能表白文本语义的向量。无论是中文还是英文,词语都是表白文本处理的最根本单元。以后阶段,对文本向量化大部分的钻研都是通过词向量化实现的。
二. 向量化算法 word2vec
词袋 (Bag of Word) 模型是最早的以语言为根本处理单元的文本向量化办法。上面咱们将通过示例展现该办法的原理。
例子:句子 1:“我喜爱坐高铁回家”。;句子 2:“中国高铁十分快”。
句子 1 分词:“我、喜爱、坐、高铁、回家”;
句子 2 分词:“中国、高铁、十分、块”。
根据上述两句呈现的词语,构建一个字典:{“我”:1,“喜爱”:2,“坐”:3,“高铁”:4,“回家”:5,“中国”:6,“十分”:7,“快”:8}
该字典中蕴含 8 个词,每个词都有惟一索引,并且它们呈现的程序是没有关联的,依据这个字典,咱们将上述两句从新表白为两个向量:
[1,1,1,1,1,0,0,0]
[0,0,0,1,0,1,1,1]
这两个向量共蕴含 8 个元素,其中第 i 个元素示意字典中第 i 个词语在句子中呈现的次数,因而 BOW 模型认为是一种统计直方图。在文本检索和解决中,能够通过该模型很不便的计算词频。该办法尽管简略,但却存在着三个大问题:
维度劫难:很显著,如果上述的字典中蕴含了 9999 个词语,那么每一个文本都须要用 9999 维的向量能力示意,如此高维度的向量很须要很大的计算力。
无奈利用词语的程序信息。
存在语义鸿沟的问题。
互联网的高速倒退,随之产生的是大量无标注的数据,所以目前的次要方向是利用无标注数据挖掘出有价值的信息。词向量 (word2vec) 技术就是利用神经网络从大量的无标注文本中提取有用的信息。
能够说词语是表白语义的根本单元。因为词袋模型只是将词语符号化,所以在词袋模型中是无奈蕴含任何语义信息的。所以如何通过“词示意”蕴含语义信息是该畛域的次要门槛。目前有散布假说的提出,为解决上述问题提供了实践根底。该假说的次要思维是:上下文类似的词,其蕴含的语义也类似。利用上下文散布示意语义的办法就是词空间模型
三. 神经网络语言模型
神经网络模型逐步在各个领域中失去蓬勃发展,应用神经网络结构词示意的最大长处是能够灵便的对上下文进行建模。神经网络词向量模型就是依据上下文与指标词之间的关系进行建模。
本次次要介绍一下神经网络语言模型(Neural Network Language Model,NNLM),可求解二元语言模型。NNLM 模型间接通过一个神经网络构造对 n 元条件概率进行预计。NNLM 模型的根本构造如下图 1 中所示:
image.png
图 1:NNLM 模型构造
对于图 1 中的流程大抵可形容为:首先从语料库中收集一系列长度为 n 的文本序列 Wi-(n-1),…,Wi-1,Wi,并且假如这些长度为 n 的文本序列组成的汇合为 D,那么此时的 NNLM 指标函数可示意为:
image.png
对于上述的表达式能够了解为:在输出词序列为 Wi-(n-1),…,Wi- 1 的状况下,计算指标词 Wi 的概率。
在图 1 所示的神经网络语言模型是十分经典的三层前馈神经网络构造,其中包含三层:输出层、暗藏层和输入层。这里为了解决词袋模型数据稠密的问题,输出层的输出为低维度的、严密的词向量,输出层的操作就是将词序列 Wi-(n-1),…,Wi- 1 中的每个词向量按程序拼接。可示意为:
image.png
在输出层失去了通过计算的 x 之后,将 x 输出暗藏层失去 h,再将 h 接入输入层就能够失去输入变量 y,暗藏层变量 h 和输入变量 y 的计算表达式为:
image.png
在下面表达式中 H 为输出层到暗藏层的权重矩阵,其维度为 |h|×(n-1)|e|;U 为暗藏层到输入层的权重矩阵,其维度为 |V|×|h|,|V| 示意的是词表的大小;b 则是模型中的偏置项。NNLM 模型中计算量最大的操作就是从暗藏层到输入层的矩阵运算 Uh。输入的变量 y 则是一个 |V| 维的向量,该向量的每一重量顺次对应下一个词表中某一个词的可能性。用 y(w)示意由 NNLM 模型计算失去的指标词 w 的输出量,并且为了保障输入 y(w)的值为概率值,所以还须要对输入层进行归一化解决。个别的解决办法是在输入层之后退出 softmax 函数,就能够将 y 转成对应的概率值,具体表达式如下:
image.png
因为 NNLM 模型应用的是低维紧凑的词向量对上下文进行示意,这很好的解决了词袋模型带来的数据稠密、语义鸿沟的问题。因而,NNLM 模型是一种很好的 n 元语言模型,并且在另一个方面,在类似的上下文语境中,NNLM 模型能够预测出类似的指标词,这是传统的模型所不具备的。例如,在预料中有 A =“詹姆斯率领湖人队博得了总冠军”呈现过 999 次,而 B =“浓眉哥率领湖人队博得了总冠军”只呈现了 9 次。那么如果是依据频率来计算概率的话,P(A)必定会远远大于 P(B)的概率。然而比照看语料 A 和语料 B 惟一的区别在于詹姆斯和浓眉哥,这两个词无论是语义和所处的语法地位都是十分类似的,所以 P(A)远大于 P(B)就是不合理的。这里如果是采纳 NNLM 模型来计算的话,失去 P(A)和 P(B)的概率后果应该是大抵相当的,次要起因是 NNLM 模型采纳低维的向量示意词语,假设类似度词的词向量也大抵类似。
因为输入的 y(w)代表上文中呈现词序列 Wi-(n-1),…,Wi- 1 的状况下,下一个词 wi 的概率。那么在语料库 D 中最大化 y(wi)的值,就是 NNLM 模型的指标函数。
image.png
个别能够应用随机梯度降落的优化算法对 NNLM 模型进行训练。在训练每一个 batch 时,会随机的从语料库 D 中抽取若干的样本进行训练,随机梯度降落的数学表达式为:
image.png
其上述表达式中,α 符号示意为学习率参数,Θ 符号示意为模型中波及到的所有参数,包含 NNLM 模型中的权重、偏置以及输出的词向量。
四. 总结
本次的分享首先举例说明了应用一般词袋模型进行词向量操作的局限性,词向量办法面对的次要难题就是解决维度过高、语义鸿沟等问题。前面便次要接介绍了基于神经网络的词向量模型,通过根底的输出层、暗藏层、输入层的分局部介绍,形容了神经网络词向量模型。
以上是集体的一些见解,了解无限,欢送大家斧正探讨!