一.简介

  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. 前端解析 excel docx

    在研究中... https://www.npmjs.com/package/xlsx https://www.jianshu.com/p/68a420a68ded https://www.jiansh ...

  2. continue & tag in GO

    Go语言中 continue 语句可以结束当前循环,开始下一次的循环迭代过程,仅限在 for 循环内使用,在 continue 语句后添加标签时,表示开始标签对应的循环,例如: package mai ...

  3. (转载)极大似然估计&最大后验概率估计

    前言 不知看过多少次极大似然估计与最大后验概率估计的区别,但还是傻傻分不清楚.或是当时道行太浅,或是当时积累不够. 这次重游机器学习之路,看到李航老师<统计学习方法>中第一章关于经验风险最 ...

  4. 经典面试题之——如何自由转换两个没有继承关系的字段及类型相同的实体模型,AutoMapper?

    相信很多童鞋们都被问到过这个问题,不管是在面试的时候被问过,还是笔试题里考过,甚至有些童鞋们找我要学习资料的时候我也考过这个问题,包括博主我自己,也曾被问过,而且博主现在有时作为公司的面试官,也喜欢问 ...

  5. Pi1-加电

    作为理工男,怎么能不折腾?终于等到我4G版的树莓派4. 1.制作系统.新手当然上官网下载官方系统,img文件,写入tf卡.mac下的步骤请见<mac下制作树莓派系统盘>,一步步来就行.思路 ...

  6. 今天七夕节,外面下着大雨,用Python的tkinter做一个下爱心雨的特效,发给妹子

    今天七夕,还下着雨,刚好想做一个下着爱心雨的特效 准备图片素材 1.美图秀秀找一个爱心图,大小就50*50就可以,生成的是一个png格式文件 2.由于canvas.create_image只支持gif ...

  7. java.lang.IllegalArgumentException,java.util.zip.ZipException 解决办法

    控制台错误信息: 严重: A child container failed during start java.util.concurrent.ExecutionException: org.apac ...

  8. openjudge4979 - 海贼王之伟大航路 题解

    原题链接 题目简要分析 N个点,从1号点到N号点求最短路径,且每个点都要遍历到.现在要你求出最优方案. 这道题看到后,首先的想法莫过于搜索.暴力了.这显然不太可能.而进一步思考,使用Floyed和Di ...

  9. 【leetcode】590. N-ary Tree Postorder Traversal

    Recurisve: /* // Definition for a Node. class Node { public: int val; vector<Node*> children; ...

  10. mysql测试,配置环境 mysql' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

    参考链接:https://www.cnblogs.com/ios9/p/9713388.html 1.设置一下环境变量:        右击我的电脑——>属性——>高级系统设置——> ...