一.简介

  word2vec是Google在2003年开源的一款将词表征为实数值向量的高效算法,采用的模型有CBOW【Continuous Bag-Of-Words 连续的词袋模型】和Skip-Gram两种。

  word2vec通过训练,可以把文本内容的处理简化为k维向量空间中的向量运算,二向量空间上的相似度可以用来表示文本语义上的相似度。

二.背景知识

  1.One-hot Representation

    NLP相关的任务中最常见的第一步是创建一个词表库并把每个词顺序编号。这实际就是词表示方法中的One-hot Representation,这种方法把每个词顺序编号,每个词就是一个很长的向量,向量的维度等于词表大小,一般采用稀疏编码存储,只有对应位置上的数字为1其它都为0。

    这种表示方法最大的问题是无法捕捉词与词之间的相似度,而且还容易发生维数灾难,尤其是在Deep Learning相关的一些应用中。

  2.Distributed Representation

    Distributed Representation 通过训练将每个词映射成k维实数向量【k一般为模型的超参数】,通过词之间的距离【比如:cosine相似度、欧式距离等】来判断它们之间的语义相似度。word2vec就是采用这种词向量表示方式。

三.统计语言模型

  传统的统计语言模型是表示语言基本单位【一般为句子】的概率分布函数,这个概率分布也就是该语言的生成模型。一般语言模型可以使用各个词语条件的概率表示。

  1.上下文无关模型

    该模型仅仅考虑当前词本身的概率,不考虑词所对应的上下文环境,仅仅依赖于训练文本中的词频统计。这是一种最简单,易于实现,但没有多大实际应用价值的统计语言模型。它是n-gram模型中n=1时候的特殊情况,所以也称为Unigram Model【一元文法统计模型】。

  2.n-gram模型

    当n=1时,就是上面所说的上下文无关模型,这里n-gram一般认为是n>=2时的上下文相关模型。当n=2时,也称为Bigram语言模型。n指往前看n-1个词而不是一个词。

    一般n-gram模型优化的目标是最大log似然。

    优点:

      包含了前n-1个词所能提供的全部信息,这些信息对当前词出现具有很强的约束力,同时因为只看前n-1个词而不是全部词也使得模型的效率较高。

    缺点:

      1.n-gram语言模型无法建模更远的关系,语料的不足使得无法训练更高阶的语言模型。

      2.这种模型无法建模出词之间的相似度,有时候两个具有某种相似性的词,如果一个词经常出现在某段词之后,那么也许另一个词出现在这段词后面的概率也比较大。

      3.训练语料里面有些n元组没有出现过,其对应的条件概率就是0,导致计算一整句话的概率为0。

      解决办法:

          1.平滑法:最简单的方法是把每个n元组的出现次数加1,那么原来出现k次的某个元组就会记成k+1次,原来出现0次的n元组就会即为出现1次。这种也称为Laplace平滑。

        2.回退法:类似决策树中的后剪枝方法,即如果n元的概率不到,那就往上回退一步,用n-1元的概率乘上一个权重来模拟。

  3.n-pos模型

    严格来说n-pos只是n-gram的一种衍生模型。n-gram模型假定第t个词出现概率条件依赖它前n-1个词,而现实中很多词出现的概率是条件依赖于它前面词的语法功能的。n-pos模型就是基于这种假设的模型。

  4.基于决策树的语言模型

    统计决策树中每个节点的决策规则是一个上下文相关的问题。基于决策树的语言模型优点是分布数不是预先固定好的,而是根据训练语料库中的实际情况决定的,更为灵活。缺点是构造决策树的问题很困难,且时空开销很大。

  5.最大熵模型

    对一个随机事件的概率分布进行预测时,在满足全部已知条件下对未知的情况不做任何主观假设。从信息论的角度来说就是在只掌握关于未知分布的部分知识时,应当选取符合这些知识但又能使得熵最大的概率分布。

  6.自适应语言模型

    前面的模型概率分布都是预先从训练语料库中估算好的,属于静态语言模型。二自适应语言模型类似online learning的过程,及根据少量新数据动态调整模型,属于动态模型。

Word2Vec算法简介的更多相关文章

  1. webrtc 的回声抵消(aec、aecm)算法简介(转)

    webrtc 的回声抵消(aec.aecm)算法简介        webrtc 的回声抵消(aec.aecm)算法主要包括以下几个重要模块:1.回声时延估计 2.NLMS(归一化最小均方自适应算法) ...

  2. AES算法简介

    AES算法简介 一. AES的结构 1.总体结构 明文分组的长度为128位即16字节,密钥长度可以为16,24或者32字节(128,192,256位).根据密钥的长度,算法被称为AES-128,AES ...

  3. 排列熵算法简介及c#实现

    一.   排列熵算法简介: 排列熵算法(Permutation Entroy)为度量时间序列复杂性的一种方法,算法描述如下: 设一维时间序列: 采用相空间重构延迟坐标法对X中任一元素x(i)进行相空间 ...

  4. <算法图解>读书笔记:第1章 算法简介

    阅读书籍:[美]Aditya Bhargava◎著 袁国忠◎译.人民邮电出版社.<算法图解> 第1章 算法简介 1.2 二分查找 一般而言,对于包含n个元素的列表,用二分查找最多需要\(l ...

  5. LARS 最小角回归算法简介

    最近开始看Elements of Statistical Learning, 今天的内容是线性模型(第三章..这本书东西非常多,不知道何年何月才能读完了),主要是在看变量选择.感觉变量选择这一块领域非 ...

  6. AI - 机器学习常见算法简介(Common Algorithms)

    机器学习常见算法简介 - 原文链接:http://usblogs.pwc.com/emerging-technology/machine-learning-methods-infographic/ 应 ...

  7. STL所有算法简介 (转) http://www.cnblogs.com/yuehui/archive/2012/06/19/2554300.html

    STL所有算法简介 STL中的所有算法(70个) 参考自:http://www.cppblog.com/mzty/archive/2007/03/14/19819.htmlhttp://hi.baid ...

  8. PageRank 算法简介

    有两篇文章一篇讲解(下面copy)< PageRank算法简介及Map-Reduce实现>来源:http://www.cnblogs.com/fengfenggirl/p/pagerank ...

  9. Gradient Boosting算法简介

    最近项目中涉及基于Gradient Boosting Regression 算法拟合时间序列曲线的内容,利用python机器学习包 scikit-learn 中的GradientBoostingReg ...

随机推荐

  1. config:fail,Error: 系统错误,错误码:63002,invalid signature [20191104 17:18:1

    需要检查下后端有没有缓存到redis.这个很重要不然也会报这个错

  2. mysql时间和本地时间相差13个小时的问题

    首先需要查看mysql的当前时区,用time_zone参数 mysql> show variables like '%time_zone%'; +------------------+----- ...

  3. 将旧版本jQuery升级到新版本的jQuery

    需要将项目中的旧版本jQuery升级到新版本的jQuery,为解决兼容性问题得下载一个js兼容包.例子:升级的项目中jQuery1.x到jquery3.x,需要一个jquery-migrate-3.1 ...

  4. docker run启动的容器挂掉了,数据怎么办

    情景描述 在某个系统中,功能性的服务使用 docker stack deploy xxx 启动,某个国产数据库的服务单独使用 docker run xxx 启动,数据库服务没有将存储的位置挂载出来: ...

  5. WebGL学习笔记(十二):加载模型文件

    目前为止,我们用到的模型顶点uv信息等,都是直接定义在代码中的,实际使用中,这些数据应该是由3D编辑器编辑好后按照一定的格式存储在文件中的,我们需要从文件中提取出对应的数据之后,组合成我们可以使用的信 ...

  6. java读取IFC文件

    The IFC JAVA Toolbox can read IFC STEP files and IFCZIP files from any data source that implementsja ...

  7. cisco 交换机设置时区、时间、同步日志本地时间

    Core-Switch-1#show clockCore-Switch-1#show ntp statusCore-Switch-1#conf tCore-Switch-1(config)# cloc ...

  8. Centos7安装部署Rabbitmq教程

    依赖关系: 版本依赖一定要提前看清楚. RabbitMQ相关版本依赖关系查看 https://www.rabbitmq.com/which-erlang.html 可以看到要求版本Erlang21.3 ...

  9. Django框架深入了解_01(Django请求生命周期、开发模式、cbv源码分析、restful规范、跨域、drf的安装及源码初识)

    一.Django请求生命周期: 前端发出请求到后端,通过Django处理.响应返回给前端相关结果的过程 先进入实现了wsgi协议的web服务器--->进入django中间件--->路由f分 ...

  10. Win10 专业版 Hyper-V 主机计算服务无法启动

    Windows 10升级1809版本后,发现Hyper-V不能用了,管理器里是一片空白,看服务Hyper-V 主机计算服务没有启动,手动启动的话失败,报错,代码1053. 自己尝试修复,也百度了很久, ...