Word2vec 基本原理

摘要:
无法保留单词顺序信息word2vecword2vec是谷歌于2013年发布的一个开源单词向量建模工具。Word2vec结构图:Word2vec采用两种模型:CBOW和Skip Gram。这两种结构如下:CBOW通过上下文预测当前单词。
  1. 词嵌入算法

    基于神经网络的表示一般称为词向量、词嵌入(word embedding)或分布式表示(distributed representation)。其核心是上下文的表示以及上下文与目标词之间的关系映射,主要通过神经网络对上下文,以及上下文和目标词之间的关系进行建模。

  2. 词向量

    最常见的方法是用 One-hot。它假设词之间的语义和语法关系是相互独立的。

    先创建一个词汇表并把每个词按顺序编号,每个词就是一个很长的向量,向量的维度等于词汇表大小,只有在对应位置上的数字为 1,其他都为 0 。

    如: PHP is the best programming language in the world.

    ​ I really enjoy the process of programming.

    对于这两句话,我们先构造一个词典

    [D={'PHP':1,quad 'is':2,quad 'the':3,quad 'best':4,quad 'programming':5, quad 'language':6, quad 'in':7, quad 'world':8, quad 'I':9, quad 'really':10, quad 'enjoy':11, quad 'process':12, quad 'of':13, quad } ]

    上面的词典包含14个单词,然后对每个单词进行 one-hot 编码

    PHP : (1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
    is :  (0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
    the : (0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
    ...
    ...
    ...
    of :  (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)
    

    得到了每个单词的embedding之后,就可以送入到机器学习或者深度学习模型中进行后续处理。

    不足:

    • 无法捕捉词与词之间得相似度,即仅从两个向量是无法看出两个词汇之间的关系,也称为 “ 语义鸿沟” 问题
    • 维度爆炸。随着词典规模的增大,维度变得越来越大,矩阵也变得超稀疏,且会耗费巨大得计算资源。
    • 无法保留词序信息
  3. word2vec

    word2vec 是 Google 在 2013 年发布的一个开源词向量建模工具。

    基本思想:通过训练将每个词映射成 K 维实数向量(K 一般为模型中的超参数),通过词之间的距离(欧氏距离等)来判断它们之间的语义相似度。

    word2vec 结构图:

    Word2vec 基本原理第1张

    word2vec 采用的模型有两种:CBOW(Continuous Bag-Of-Words) 和 Skip-Gram 两种

    两种结构如下:

    Word2vec 基本原理第2张

    • CBOW

      通过上下文来预测当前词。包含输入层、投影层、输出层(没有隐藏层)。

      • 随机生成一个所有单词的词向量矩阵,每一行对应一个单词向量
      • 对于某一个单词(中心词),从矩阵中提取其周边单词的向量
      • 求周边单词的词向量的均值向量
      • 在该均值上使用 logistic regression 进行训练,softmax 作为激活函数
      • 期望回归得到的概率向量可以与真实的概率向量(即中心词 one-hot 编码向量)相匹配
    • Skip-gram

      它与 CBOW 相反,通过中心词来预测上下文,输出层是一颗 Huffman 树。

    Huffman 树

    对于一组节点,按权值从小到大排列,每次选其中最小的两个节点组合成一个新的节点,放入节点集中,再次选择,直到节点选完。

免责声明:文章转载自《Word2vec 基本原理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android中使用dimen定义尺寸(转)BZOJ1089: [SCOI2003]严格n元树下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

文本分类(六):使用fastText对文本进行分类--小插曲

http://blog.csdn.net/lxg0807/article/details/52960072 环境说明:python2.7、linux 自己打自己脸,目前官方的包只能在linux,mac环境下使用。误导大家了,对不起。 测试facebook开源的基于深度学习的对文本分类的fastText模型 fasttext python包的安装: pip...

自然语言处理中的分词问题总结

众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。本文转载自明略研究院的技术经理牟小峰老师讲授的语言处理中的分词问题。 如何界定分词   中文分词指的是将一个汉字序列切分成一个一个单独的词。分词就是将连续的字序列按照一定的规范重新...

Web挖掘技术

  一、数据挖掘 数据挖掘是运用计算机及信息技术,从大量的、不全然的数据集中获取隐含在当中的实用知识的高级过程。Web 数据挖掘是从数据挖掘发展而来,是数据挖掘技术在Web 技术中的应用。Web 数据挖掘是一项综合技术,通过从Internet 上的资源中抽取信息来提高Web 技术的利用效率,也就是从Web 文档结构和试用的集合中发现隐含的模式。 数据挖掘...

自然语言处理入门 何晗 读书笔记 第1章 新手上路

第1章新手上路 自然语言处理是一门融合了计算机科学、人工智能以及语言学的交叉学科。这门学科研究的是如何通过机器学习等技术,让计算机学会处理人类语言,乃至实现终极目标----理解人类语言或人工智能。 自然语言处理这个术语没有被广泛的定义,注重语言学结构的学者喜欢使用计算语言学(CL),强调最终目的的学者更偏好自然语言理解(NLU)。 1.1自然语言与编程语言...

PyTorch实现Seq2Seq机器翻译

Seq2Seq简介 Seq2Seq由Encoder和Decoder组成,Encoder和Decoder又由RNN构成。Encoder负责将输入编码为一个向量。Decoder根据这个向量,和上一个时间步的预测结果作为输入,预测我们需要的内容。 Seq2Seq在训练阶段和预测阶段稍有差异。如果Decoder第一个预测预测的输出就错了,它会导致“蝴蝶效应“,影...

【自然语言处理篇】--Chatterbot聊天机器人

一、前述 ChatterBot是一个基于机器学习的聊天机器人引擎,构建在python上,主要特点是可以自可以从已有的对话中进行学(jiyi)习(pipei)。 二、具体 1、安装 是的,安装超级简单,用pip就可以啦 pip install chatterbot 2、流程 大家已经知道chatterbot的聊天逻辑和输入输出以及存储,是由各种adapter...