关于自然语言处理-词嵌入

常规的机器学习Machine Learning升级发展到了一定的阶段后,深度学习慢慢发展起来,

对于数据特征表示问题。机器学习通过人工设计大量的特征解决数据的有效表示问题。而对于深度学习,一步到位,hyper-parameter自动帮你选择寻找关键的特征参数。

对于情感分析,自然语言处理之类的问题,我们要先把语言表示这一关过了——如何让语言表示成为深度学习能够处理的数据类型。

NLP词的表示分为独热表示one-hot、分布式表示distributed。

  1. 独热表示one-hot

NLP 中最直观的方法,这种方法把每个词表示为一个很长的向量。这个向量的维度是词表大小,这里简单举个栗子说明:

“话筒”表示为 [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。缺点:1、向量的维度会随着句子的词的数量类型增大而增大;2、任意两个词之间都是孤立的,根本无法表示出在语义层面上词语词之间的相关信息,而这一点是致命的。

  1. 分布式表示distributed

根据建模的不同,主要可以分为三类:基于矩阵的分布表示基于聚类的分布表示基于神经网络的分布(词嵌入)表示。它们的核心思想也都由两部分组成:一、选择一种方式描述上下文;二、选择一种模型刻画某个词与其上下文之间的关系。

基于神经网络的分布表示一般称为词向量、词嵌入( word embedding)或分布式表示( distributed representation)。这正是我们的主角today。核心依然是上下文的表示以及上下文与目标词之间的关系的建模

1.将vector每一个元素由整形改为浮点型,变为整个实数范围的表示;

2.将原来稀疏的巨大维度压缩嵌入到一个更小维度的空间。

词嵌入与word2vec有什么联系?

通过神经网络训练语言模型可以得到词向量,那么,究竟有哪些类型的神经网络语言模型呢?个人所知,大致有这么些个:

a) Neural Network Language Model ,NNLM

b) Log-Bilinear Language Model, LBL

c) Recurrent Neural Network based Language Model,RNNLM

d) Collobert 和 Weston 在2008 年提出的 C&W 模型

e) Mikolov 等人提出了 CBOW( Continuous Bagof-Words)和 Skip-gram 模型

上面提到的5个神经网络语言模型,只是个在逻辑概念上的东西,那么具体我们得通过设计将其实现出来,而实现CBOW( Continuous Bagof-Words)和 Skip-gram 语言模型的工具word2vec。word2vec的作者提出了一种更快更好的工具word2vec来训练语言模型得到词向量,分别是:连续词袋模型Continous Bag of Words Model(CBOW)和Skip-Gram Model。

词向量既能够降低维度,又能够capture到当前词在本句子中上下文的信息(表现为前后距离关系),那么我们对其用来表示语言句子词语作为NN的输入是非常自信与满意的。

另外一点很实用的建议,在你做某一项具体的NLP任务时如你要用到词向量,那么我建议你:要么1、选择使用别人训练好的词向量,注意,得使用相同语料内容领域的词向量;要么2、自己训练自己的词向量。我建议是前者,因为……坑太多了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值