Embedding同质,vec


word2vec词向量加权的方法有哪些?
【Embedding同质,vec】

Embedding同质,vec


一、理论概述(主要来源于http://licstar.net/archives/328这篇博客)1.词向量是什么自然语言理解的问题要转化为机器学习的问题 , 第一步肯定是要找一种方法把这些符号数学化 。NLP 中最直观 , 也是到目前为止最常用的词表示方法是 One-hot Representation , 这种方法把每个词表示为一个很长的向量 。
这个向量的维度是词表大小 , 其中绝大多数元素为 0 , 只有一个维度的值为 1 , 这个维度就代表了当前的词 。举个栗子 , “话筒”表示为 [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 ...]“麦克”表示为 [0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 ...]每个词都是茫茫 0 海中的一个 1 。
这种 One-hot Representation 如果采用稀疏方式存储 , 会是非常的简洁:也就是给每个词分配一个数字 ID 。比如刚才的例子中 , 话筒记为 3 , 麦克记为 8(假设从 0 开始记) 。如果要编程实现的话 , 用 Hash 表给每个词分配一个编号就可以了 。这么简洁的表示方法配合上最大熵、SVM、CRF 等等算法已经很好地完成了 NLP 领域的各种主流任务 。
当然这种表示方法也存在一个重要的问题就是“词汇鸿沟”现象:任意两个词之间都是孤立的 。光从这两个向量中看不出两个词是否有关系 , 哪怕是话筒和麦克这样的同义词也不能幸免于难 。Deep Learning 中一般用到的词向量并不是刚才提到的用 One-hot Representation 表示的那种很长很长的词向量 , 而是用 Distributed Representation(不知道这个应该怎么翻译 , 因为还存在一种叫“Distributional Representation”(类似 , LDA中用topic表示词语的词向量的表示方法)表示的一种低维实数向量 。
这种向量一般是这个样子:[0.792, ?0.177, ?0.107, 0.109, ?0.542, ...] 。维度以 50 维和 100 维比较常见 。2.词向量的来历Distributed representation 最早是 Hinton 在 1986 年的论文《Learning distributed representations of concepts》中提出的 。
虽然这篇文章没有说要将词做 Distributed representation但至少这种先进的思想在那个时候就在人们的心中埋下了火种 , 到 2000 年之后开始逐渐被人重视 。3. 词向量的训练要介绍词向量是怎么训练得到的 , 就不得不提到语言模型 。到目前为止我了解到的所有训练方法都是在训练语言模型的同时 , 顺便得到词向量的 。
这也比较容易理解 , 要从一段无标注的自然文本中学习出一些东西 , 无非就是统计出词频、词的共现、词的搭配之类的信息 。而要从自然文本中统计并建立一个语言模型 , 无疑是要求最为精确的一个任务(也不排除以后有人创造出更好更有用的方法) 。既然构建语言模型这一任务要求这么高 , 其中必然也需要对语言进行更精细的统计和分析 , 同时也会需要更好的模型 , 更大的数据来支撑 。
目前最好的词向量都来自于此 , 也就不难理解了 。词向量的训练最经典的有 3 个工作 , C

    推荐阅读