NLP - 文本向量化


本质

便于计算机理解,将文本转化为数值。
当前阶段,对文本的向量化 大部分研究都是通过 词向量 来实现的。

  • 词向量:词袋模型,word2vec
  • 文章/句子作为向量:doc2vec, str2vec

词袋模型

词袋(Bag Of Word)模型是最早的 以词语为基本处理员 的文本向量化方法。


原理

示例:
存在以下两个文本文档

1:Bob likes to play basketball, Jim likes too.
2:Bob also likes to play football games.

构建如下词典(dictionary):

Dictionary = {1:”Bob”, 2. “like”, 3. “to”, 4. “play”, 5. “basketball”, 6. “also”, 7. “football”, 8. “games”, 9. “Jim”, 10. “too”}。

这个词典一共包含10个不同的单词,上面两个文档每一个都可以用一个10维向量表示(用整数数字0~n(n为正整数)表示某个单词在文档中出现的次数):

1:[1, 2, 1, 1, 1, 0, 0, 0, 1, 1]
2:[1, 1, 1, 1 ,0, 1, 1, 1, 0, 0]

特点

  • 原文本中单词的出现顺序,在该向量中没有体现。
  • 主要体现单词的频率

优点

  • 简单易行

缺点

  • 维度灾难
  • 没有词序信息
  • 没有语义信息(只是将词语符号化)

词空间模型

分布假说(the Distributional Hypothesis):上下文相似的词,其语义也相似。
比如:我喜欢吃 苹果我喜欢吃 梨子,那么苹果和梨子 语义相似。

基于分布假说来表示词义,就是 词空间模型(word space model)。

神经网络的崛起,让基于上下文建模变得容易。
神经网络构建词向量,主要是根据上下文与目标词之间的关系进行建模。


NNLM 模型

NNLM:Neural Network Language Models,神经网络语言模型

与传统估算方法不同,NNLM 模型通过一个神经网络结构对 n元条件概率 进行估计。

在这里插入图片描述


实现:

从语料库中搜集一系列长度为n 的文本序列,假设这些长度为 n 的文本序列组成的集合为 D,那么 NNLM 的目标函数为 ∑ D P ( w i ) ∣ w i − ( n − 1 ) , . . . w i − 1 \sum_D P(w_i) | w_{i-(n-1)},...w_{i-1} DP(wi)wi(n1),...wi1
含义为在输入词序列为 w i − ( n − 1 ) , . . . w i − 1 w_{i-(n-1)},...w_{i-1} wi(n1),...wi1 的情况下,目标词 w i w_i wi 的概率。


网络结构

典型的三层前馈神经网络结构,包含:输入层,隐藏层和输出层。
为解决词袋模型数据稀疏的问题,输入层就是将次序列中每个词向量,按照顺序拼接。


优点

  • 解决了词袋模型的 数据系数、无语义的问题;是一种更好的 n 元 语言模型
  • 在相似的上下文语境中,NNLM 可以预测出 目标词;传统模型无法做到这一点。

RNNLM

RNNLM直接对 P ( w i ∣ w 1 , w 2 , . . . , w i − 1 ) P(w_i|w_1,w_2,...,w_{i-1}) P(wiw1,w2,...,wi1) 进行建模,而不使用公式对其进行简化。因此,RNNLM可以利用所有的上下文信息,预测下一个词。


模型结构
在这里插入图片描述


RNNLM的核心在于其隐藏层的算法:

h ( i ) = ϕ ( e ( w i ) + W h ( i − 1 ) ) h(i) = \phi(e(w_i) + Wh(i-1)) h(i)=ϕ(e(wi)+Wh(i1))

其中,h(i)表示文中第i个词 w i w_i wi 所对应的隐藏层,该隐藏层由当前此的词向量 e ( w i ) e(w_i) e(wi) 以及上一个词对应的隐藏层 h ( i − 1 ) h(i-1) h(i1) 结合得到。


C&W 模型

C&W:Collobert 和 Weston

C&W 核心:如果n元短语在语料库中出现过,那么模型会给该短语打高分,没出现过打低分。


C&W & NNLM

NNLM 构建的是语言概率模型
C&W 则是以生成词向量为目标的模型。


  • 计算方式
    NNLM 中最费时的是 隐藏层到输入层的权重计算。
    C&W 没有采用语言模型的方式去求解词语上下文的条件概率,而是直接对 n 元短语打分。这是一种更为快捷的获取词向量的方式。

在这里插入图片描述
语言模型的目标是求解 P ( w I ∣ w 1 , w 2 , . . . , w i − 1 ) P(w_I | w_1, w_2, ..., w_{i-1}) P(wIw1,w2,...,wi1)


CBOW 和 Skip-gram 模型

由来:他们设计两个模型的目的是希望 用更高效的方法获取词向量。因此,他们根据前人在NNLM、RNNLM和C&W模型的经验,简化现有模型,保留核心部分,得到了这两个模型。

CBOW:根据上下文预测当前词
Skip-gram:通过当前词预测上下文

在这里插入图片描述


CBOW 模型

该模型一方面根据C&W模型的经验,使用一段文本中的中间词作为目标词;另一方面,又以NNLM作为蓝本,并在其基础上做了两个简化。

  • 没有隐藏层。
    去掉隐藏层之后,模型从神经网络直接转化为 log线性结构,与logistic回归一致。
    log线性结构比三层神经网络少了一个矩阵运算,大幅度地提升了模型的训练速度。
  • 去除了上下文各词的词序信息,使用上下文各词向量的平均值,代替NNLM使用的上文各词词向量的拼接。
  • 根据上下文来预测当前词语的概率,且上下文所有词 对当前词出现的概率的影响是一样的,因此叫做 continuous bag-of-words 模型。
    如在袋子里取词,取出数量足够的词就可以了;先后顺序不重要。

在这里插入图片描述


改进:负采样

非目标词作为 w,即为负样本。
比如句子为 “我想吃xx”,xx 原为苹果;负样本可以为“我想吃手机”。


doc2vec / str2vec

由来(时序)

word2vec 基于分布假说理论 可以很好地提取词语的语义信息;
用处:计算词语、句子或其他长文本的相似度。
一般做法是:

  1. 对文本分词
  2. 提取关键词
  3. 用词向量表示这些关键词
  4. 对关键词向量求平均或者将其拼接
  5. 利用词向量计算文本间的相似度

这种方法丢失了文本的语序信息。

语序包含重要信息,比如 “小王送了小红一个苹果” 和 “小红送了小王一个苹果” 是两件事。

为了利用文本语序信息,研究者在 word2vec 的基础上提出了 文本向量化(doc2vec,又称 str2vec 或 para2vec)


doc2vec 由谷歌工程师 Quoc Le 和 Tomoas Miko 在 word2vec 的基础上拓展。

doc2vec 技术存在两种模型 DM(Distributed Memeory) 和 DBOW(Distributed Bag of Words),分别对应 word2vec 中的 CBOW 和 Skip-gram 模型。

与 CBOW 模型类似,DM模型视图预测给定上下文中某单词出现的概率,只不过 DM 模型的上下文 不仅包含单词,还包括相应的段落。
DBOW 在在仅给定段落响亮的情况下,预测段落中 一组随机单词的概率。


资料

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值