快速熟悉one-hot,N-gram,word2vec模型

在自然语言处理领域,最开始的学习肯定绕不开one-hot,N-gram,word2vec。下文会快速,简要的介绍这两种技术,至于更多的技术细节,可以参考文章最后的参考文献。在阅读了本篇文章后,读者应该能够达到如下几个目的:

1.明白one-hot,N-gram,word2vec的作用
2.明白one-hot,N-gram,word2vec的数学/网络架构


1.词向量

词向量就是用来将语言中的词进行数学化的一种方式,顾名思义,词向量
就是把一个词表示成一个向量。这样做的初衷就是机器只认识0 1 符号,换句话说,在自然语言处理中,要想让机器识别语言,就需要将自然语言抽象表示成可被机器理解的方式。所以,词向量是自然语言到机器语言的转换。

词向量最初是用one-hot represention表征的,也就是向量中每一个元素都关联着词库中的一个单词,指定词的向量表示为:其在向量中对应的元素设置为1,其他的元素设置为0。采用这种表示无法对词向量做比较,后来就出现了分布式表征。

在word2vec中就是采用分布式表征,在向量维数比较大的情况下,每一个词都可以用元素的分布式权重来表示,因此,向量的每一维都表示一个特征向量,作用于所有的单词,而不是简单的元素和值之间的一一映射。这种方式抽象的表示了一个词的“意义”。
向量的长度为词典的大小,向量的分量只有一个 1,其他全为 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,2,3,…来表示词语进行计算,这样“话筒”就为3,“麦克”为8.

缺点:1.容易受维数灾难的困扰,尤其是将其用于 Deep Learning 的一些算法时;2.任何两个词都是孤立的,存在语义鸿沟词(任意两个词之间都是孤立的,不能体现词和词之间的关系)。

也正是这些原因,Hinton在 1986 年提出了Distributional Representation,可以克服 one-hot representation的缺点。解决“词汇鸿沟”问题,可以通过计算向量之间的距离(欧式距离、余弦距离等)来体现词与词的相似性

其基本想法是直接用一个普通的向量表示一个词,这种向量一般长成这个样子:[0.792, −0.177, −0.107, 0.109, −0.542, …],常见维度50或100。

优点:解决“词汇鸿沟”问题

缺点:训练有难度。没有直接的模型可训练得到。所以采用通过训练语言模型的同时,得到词向量 。

当然一个词怎么表示成这么样的一个向量是要经过一番训练的,训练方法较多,word2vec是其中一种。值得注意的是,每个词在不同的语料库和不同的训练方法下,得到的词向量可能是不一样的。


2.N-gram

N-gram就是最简单的一种语言模型。在一些NLP任务中,我们需要判断一句话出现的概率是多少,即这句话是不是符合人的说话习惯,这时就可以利用到N-gram。另外,N-gram可以用于实现汉字转换,关于这点,读者可以查询资料。

N-gram的数学模型非常简单,就是一条数学表达式:

p(s)=p(w1,w2,wT)=p(w1)p(w2|w1)p(w3|w1,w2)p(wt|w1,w2,wT1) p ( s ) = 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(大家,喜欢,吃,苹果)=p(大家)p(喜欢|大家)p(吃|大家,喜欢)p(苹果|大家,喜欢,吃)

p(大家)表示“大家”这个词在语料库里面出现的概率;

p(喜欢|大家)表示“喜欢”这个词出现在“大家”后面的概率;

p(吃|大家,喜欢)表示“吃”这个词出现在“大家喜欢”后面的概率;

p(苹果|大家,喜欢,吃)表示“苹果”这个词出现在“大家喜欢吃”后面的概率。

把这些概率连乘起来,得到的就是这句话平时出现的概率。

如果这个概率特别低,说明这句话不常出现,那么就不算是一句自然语言,因为在语料库里面很少出现。如果出现的概率高,就说明是一句自然语言

为了表示简单,上面的公式用下面的方式表示

  • 9
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值