关于NLP

转自博主 http://licstar.net/archives/328

1.词向量

  • One-hot Representation:每个词表示为一个很长的向量。这个向量的维度是词表大小,其中绝大多数元素为 0,只有一个维度的值为 1,这个维度就代表了当前的词。例如:
    “话筒”表示为 [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 …]
    “麦克”表示为 [0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 …]
    每个词都是茫茫 0 海中的一个 1。

这种 One-hot Representation 如果采用稀疏方式存储,会是非常的简洁:也就是给每个词分配一个数字 ID。比如刚才的例子中,话筒记为 3,麦克记为 8(假设从 0 开始记)。如果要编程实现的话,用 Hash 表给每个词分配一个编号就可以了。这么简洁的表示方法配合上最大熵、SVM、CRF 等等算法已经很好地完成了 NLP 领域的各种主流任务。

然而这种表示方法也存在一个重要的问题就是“词汇鸿沟”现象:任意两个词之间都是孤立的。光从这两个向量中看不出两个词是否有关系,哪怕是话筒和麦克这样的同义词也不能幸免于难。

  • Distributed Representation:将庞大的词汇表,从一个高维空间映射到一个低维空间中,而又尽量保存不同词之间差异性

这种向量一般长成这个样子:[0.792, −0.177, −0.107, 0.109, −0.542, …]。

Distributed representation 最大的贡献就是让相关或者相似的词,在距离上更接近了。向量的距离可以用最传统的欧氏距离来衡量,也可以用 cos 夹角来衡量。用这种方式表示的向量,“麦克”和“话筒”的距离会远远小于“麦克”和“天气”。可能理想情况下“麦克”和“话筒”的表示应该是完全一样的,但是由于有些人会把英文名“迈克”也写成“麦克”,导致“麦克”一词带上了一些人名的语义,因此不会和“话筒”完全一致。

2. 词向量的训练

要介绍词向量是怎么训练得到的,就不得不提到语言模型。到目前为止所有训练方法都是在训练语言模型的同时,顺便得到词向量的。

2.0语言模型

语言模型形式化的描述就是给定一个字符串,看它是自然语言的概率
P ( w 1 , w 2 , … , w t ) P(w_1, w_2, …, w_t) P(w1,w2,,wt)。w1到 wt依次表示这句话中的各个词。
有个很简单的推论是:
P ( w 1 , w 2 , … , w t ) = P ( w 1 ) × P ( w 2 ∣ w 1 ) × P ( w 3 ∣ w 1 , w 2 ) × … × P ( w t ∣ w 1 , w 2 , … , w t − 1 ) P(w_1, w_2, …, w_t) = P(w_1) \times P(w_2 | w_1) \times P(w_3 | w_1, w_2) \times … \times P(w_t | w_1, w_2, …, w_{t-1}) P(w1,w2,,wt)=P(w1)×P(w2w1)×P(w3w1,w2)××P(wtw1,w2,,wt1)。常用的语言模型都是在近似地求 P ( w t ∣ w 1 , w 2 , … , w t − 1 ) P(w_t | w_1, w_2, …, w_{t-1}) P(wtw1,w2,,wt1)。如:n-gram模型是一种近似策略,作了一个马尔可夫假设:认为目标词wt的条件概率只与其之前的n−1个词有关。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值