NLP经典模型入门-word2vec

前言:笔者之前是cv方向,因为工作原因需要学习NLP相关的模型,因此特意梳理一下关于NLP的几个经典模型,由于有基础,这一系列不会关注基础内容或者公式推导,而是更侧重对整体原理的理解。顺便推荐两个很不错的github项目——开箱即用的中文教程以及算法更全但是有些跑不通的英文教程

一. NLP常见概念

  • 分词:将完整的句子划分成一个个word,也可以划分为char级别,例如今天/天气/非常/好或者今/天/天/气/非/常/好
  • 词表:分词后的集合构建而来,可以视作字典,其中key是所有可能的char或者word,而value则是其对应的id。一般来说,文本不像图像可以用像素值来表示,因此一般采用分词+词表映射的方式把文本转化为一串数字序列

二. word2vec模型

1. word2vec的目的

得到更好更准确的词向量。和图像的表示方法不同,NLP中一般用向量来表示不同的单词,向量一般采用one-hot的方法来初始化,但是这样会带来两个问题:

  • 有多少个单词词向量的长度就要多长,维数过高
  • one-hot是一种随机初始化的方式,并不能很好地代表向量

因此诞生了word2vec模型,本质上和先做人脸分类、再根据人脸特征距离判断是不是一个人的思路很像,word2vec也是训练分类问题,从而得到更优的词向量表示。

2. word2vec的结构

word2vec包括两种结构:CBOW模型(根据周围的词预测中心词,多对一模型)与Skip-gram模型(根据中心词预测周围词,一对多模型),两者结构如下——

img

img

需要注意的是,word2vec只有一个隐层,输出层使用softmax等loss进行监督。隐层没有激活层,因此word2vec中词向量是其它词向量的线性组合。

3. word2vec的CBOW模型例子

学习{I drink coffee everyday}一句话,其中coffee是中心词,window size设定为2

img

img

img

img

img

原文地址:https://www.cnblogs.com/lity/p/13454850.html