向量距离计算 java_Word Embedding 和词向量

一、Word Embedding
在NLP任务中,我们将自然语言交给算法来处理,但计算机无法直接理解人类的语言,因此首先要做的是事情就是将语言数学化,即将文本数据转换为数值型数据,由此引出 Word Embedding 的概念。
如果将 Word 看成文本的最小单元,可以将词嵌入 (Word Embedding) 理解为一种映射,其过程是:将文本空间中的某个 Word,通过一定的方法,映射到(或者说嵌入 embedding)到一个数值空间, Word 在数值空间的表示即 word representation。
如果该数值空间是一个向量空间,每个 Word 对应一个一维向量,那么这个一维向量被称为词向量。
Word embedding 将「不可计算」「非结构化」的词转化为「可计算」「结构化」的向量。这一步解决的是”将现实问题转化为数学问题“,是人工智能非常关键的一步。
注意:词向量只是针对“词”来提的,事实上,我们也可以针对更细粒度或更粗粒度来进行推广,如字向量,句子向量和文档向量, 它们能为字、句子、文档等单元提供更好的表示。
二、词向量
如何将词映射为向量?
(1)One-hot 表示
最简单的一种词向量是 one-hot representation,即用一个长度为
的向量来表示一个词,
为词典
的大小。该一维向量的分量只有一个1,其余全为0。1对应的位置是该词在词典
中的索引。
- 实例
假设有句子:apple on a apple tree。我们基于这个句子构建一个字典 [“apple”, “on”, “a”, “tree”]。用 one-hot 编码每个单词,则有 apple 对应的 vector 就是 [1, 0, 0, 0],a 对应的 vector 就是 [0, 0, 1, 0]。
- 缺点
词的 one-hot 表示有一些缺点:
-
维数灾难:one-hot 表示的空间复杂度是
,当
很大,即当词典
很大时,需要很多空间来存储。
-
表征能力差:one-hot 表示只能唯一区别每个词,但不包含语义信息,更不能刻画词跟词之间的相似性。
(2)Distributed 表示
另一种词向量是 Distributed representation,它最早是 Hinton 于1986年在 nature 上提出的:《Learning representations by backpropagating errors》,可以克服 one-hot representation 的上述缺点。它的基本想法是:通过训练将每个单词映射为一个固定长度的短向量(短是相对 one-hot 表示而言的)。这些向量构成一个词向量空间,每个向量可视为该空间中的一个点,在这个空间上引入"距离",根据词之间的距离来判断他们的相似性(词法、语义上的)。
Distributed representation 的形式化表示:为词典
的任意词
指定一个长度为
的实值向量
,
就是
的词向量。
引用:为什么叫做 Distributed Representation?
我是这样理解的:one hot 表示中,词向量只有一个非零分量,信息全都集中在这个非零分量上了,非常集中。而 Distributed representation 则有大量非零分量,相当于把词的信息分布到各个分量中去,相对分散,类似分布式并行。
如何获取词向量?
将词映射到一个低维向量后,无疑能节省存储空间和运算时间。但向量之间的距离却未必能衡量词的相似性,如何保证产生的词向量能衡量词相似性呢?
Harris 在 1954 年提出的分布假说(distributional hypothesis):上下文相似的词,其语义也相似。这启示我们可以用单词的上下文去刻画单词:当单词上下文相似时,单词相似,词向量距离近;当上下文不相似时,单词不相似,词向量距离远。也就是构造词向量时,要用到单词及其上下文信息。
用单词及其上下文来估计词向量的模型有 LSA (LatentSemantic Analysis/潜在语义分析模型) 和 LDA (Latent Dirichlet Allocation/潜在狄利克雷分配模型)。此外,神经概率语言模型也用到了单词及其上下文,词向量是它的副产品(该模型的目标是生成语言模型),但它产生的词向量也包含了语义信息。Word2vec 则是对神经概率语言模型的改进,其目标就是为了产生含语义信息的词向量。
(3)词向量的应用
词向量有什么用处?
一份好的词向量携带了语义信息且维度经过压缩便于运算,有很多用武之地,例如:
- 计算相似度,比如man和woman的相似度比man和apple的相似度高;
- 在一组单词中找出与众不同的一个,例如在如下词汇列表中:[dog, cat, chicken, boy],利用词向量可以识别出boy和其他三个词不是一类;
- 直接进行词的运算,例如经典的:woman+king-man =queen;
- 由于携带了语义信息,还可以计算一段文字出现的可能性,也就是说,这段文字是否通顺。
参考
word2vec 中的数学原理详解 https://www.cnblogs.com/peghoty/p/3857839.html
Word Embedding 知识总结 _
