1. 学习内容
1. 基于单词的模型的局限
2. 词级和字符级语言模型
3. n-gram思想
4. fastText
2. 基于单词的模型的局限
在使用基于单词的模型时需要处理规模庞大的词汇表。这种方式虽然效果不错,但是对于单词而言,只要稍微做些改变就是另一个单词了。有时候,这种改变对于人类而言并没有什么大影响。但是对于训练好的模型而言,这种改变会造成不存在该词的情况。专业点来说,这种局限叫做OOV(out-of-vocabulary)。
为了解决OOV的问题,人们尝试使用N-Gram思想来训练词向量。这也就是后面提到的fastText。
3. 词级和字符级语言模型
词级语言建模是指把词作为文本信息的最小单位。每个单词都用一个矢量来表示,之后就可以用神经网络等模型来进行进一步的训练。目前,比较流行的方法是使用词嵌入来得到特征向量。该方法是训练一个大型的语料库,从而得到一个word2vector模型。该模型包含一个词典,其中每个单词都是一个矢量化信息。
对于OOV问题, 一个自然的解决方案就是利用比词级更细粒度为单位来建立模型,也就是字符级模型。而N-Gram就是字符级模型的一种建模思想。
4. n-gram思想
处理更⼤词汇量的⼀种可能⽅法就是将⼤多数看不见的单词视为是新的形态(或数字)。对于字符级模型,输入的字符先被映射成字符嵌入。然后将这些字符嵌入与窗口大小不同的卷积核进行卷积操作再将输出联系起来。然后再选择最显著的特征产生段嵌入。最后将这些特征经过Highway Network和双向的GRU处理,得到最终的encoder output。
这种方法带来的问题就是粒度又变得过细了, 相比单词, 字符的输入的序列会更长,数据变得更稀疏且依赖关系更难学习,训练速度也会降低。
5. fastText
fastText是facebook开发的一个开源的词向量与文本分类工具。它主要用于解决带监督的文本分类问题。fastText结合了自然语言处理和机器学习中最成功的理念,包括了词袋以及n-gram袋表征语句,还有使用子词信息,并通过隐藏表征在类别间共享信息。
fastText的核心思想就是:将整篇文档的词及n-gram向量叠加平均得到文档向量,然后使用文档向量做softmax多分类。
fastText包含三部分:模型架构,层次SoftMax和n-gram特征。其中,架构和CBOW的架构类似;另外,fastText使用了一个分层分类器(而非扁平式架构)。为了改善运行时间,fastText 模型使用了层次 Softmax 技巧。层次 Softmax 技巧建立在哈弗曼编码的基础上,对标签进行编码,能够极大地缩小模型预测目标的数量;由于词袋模型不能考虑词之间的顺序,因此 fastText 还加入了 n-gram 特征。