自然语言处理中词向量的介绍

一、词向量的介绍

我们在做nlp的时候,需要让机器识别文字,就要先将输入放入文字转换成一种编码。比如独热编码(one - hot)、分布式编码(distribution -representation)
One-hot 是采用稀疏方式存储,把每个词语表示成一个向量,而向量的维度大小就是该词表中有多少个词的数量。样本可以先经过jieba分词处理成一个个词。预处理的工作在nlp、cv神经网络操作前是很重要的一部。

One-hot 简单、高维。当然他的缺点是维度灾难。 就是当词表很大时候,有n个词,那么词语的向量就是n 维向量。
并且one-hot表示之中任意的俩个词是孤立的,无法在语义层面上去表示出俩个词的关系。【致命的缺点】

从高维的词转换成低维度。通过词嵌入。维度可以自我指定。

语言模型 。去预测给定的一句话是否是符合一句话的概率。判定的要素根据语法语义。特点是无监督。

神经网络语言模型:NNLM( Neural Network Language Model )、RNNLM、Mikolov 等人提出了 CBOW( Continuous Bagof-Words)和 Skip-gram 模型
NNML使用了马尔科夫假设。行文的上下词语对中心词汇的依赖概率。
马尔科夫假设:使用词表中前一个词或者前几个词来预测该词。减少了计算概率的复杂度。
RNNML模型。没有使用马尔科夫假设。

统计语言模型 求句子成立的概率,预测某个词出现的概率问题,根据前面的词。

One-hot 到 词嵌入的改进:
1、将vector每一个元素由整形改为浮点型,变为整个实数范围的表示;
2、将原来稀疏的巨大维度压缩嵌入到一个更小维度的空间。

词嵌入(词向量)概念:
上下文的表示以及上下文与目标词的关系建模。

词嵌入(词向量)模型 Word2vec,包含了俩个模型 skip-gram 模型、cbow(continue bag of Word ) 模型。
cbow(continue bag of Word ) 模型 是通过周围词去预测中心词的概率。
skip-gram 模型是用中心词去预测周围词。

1、先把词进行独热编码。将向量作为输入。
2、乘一个共享矩阵,做隐含层。
3、再乘一个系数矩阵,做输出。
4、Loss,反向传播。

Example:
以“我爱北京天安门”这句话为例。
假设我们现在关注的词是“爱”,C=2时它的上下文分别是“我”,“北京天安门”。
CBOW模型就是把“我” “北京天安门” 的one hot表示方式作为输入,也就是C个1xV的向量,分别跟同一个VxN的大小的系数矩阵W1相乘得到C个1xN的隐藏层hidden layer,然后C个取平均所以只算一个隐藏层。这个过程也被称为线性激活函数(这也算激活函数?分明就是没有激活函数了)。
然后再跟另一个NxV大小的系数矩阵W2相乘得到1xV的输出层,这个输出层每个元素代表的就是词库里每个词的事后概率。
输出层需要跟ground truth也就是“爱”的one hot形式做比较计算loss。
这里需要注意的就是V通常是一个很大的数比如几百万,计算起来相当费时间,除了“爱”那个位置的元素肯定要算在loss里面,word2vec就用基于huffman编码的Hierarchical softmax筛选掉了一部分不可能的词,然后又用nagetive samping再去掉了一些负样本的词所以时间复杂度就从O(V)变成了O(logV)。Skip gram训练过程类似,只不过输入输出刚好相反。

参考:https://blog.csdn.net/scotfield_msn/article/details/69075227

二、使用word2vector去完成nlp的一些task

可以考虑先复现模型 参考:https://wmathor.com/index.php/archives/1435/

1、在工程中我们直接使用别人训练好的模型,直接调用就好了。
2、自己下载语料库去训练模型。

Pytorch去复现(乞丐版)中:设词向量是二维的,建立模型后,就用二维的散点图表示出词向量。 高维的话,只能去打印。

Word2vector 功能:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值