NLP实战高手课学习笔记(10):Embedding基础

286 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第28天,点击查看活动详情

说明

本系列博客将记录自己学习的课程:NLP实战高手课,链接为:time.geekbang.org/course/intr… 本篇为20节的课程笔记,主要介绍NLP中使用的Word embedding的由来及简要介绍。

什么是 Embedding

在NLP领域,我们所处理的对象是一段段的文本序列,但是在计算机中,如何存储和表示这些文本序列就是一个关键的问题。

我们首先来看一种最简单的表示方式--One Hot表示法。

One Hot Embedding

假设我们要表示这样一句话:

“I love China”

我们最简单的想法是一个单词给它用一个序号代替,比如I用1代替,love用2代替,China用3代替。

单词向量表示
I1
love2
China3

这样表示看似非常简洁,但它只是一种映射,在表意方面甚至不如原本的自然语言符号串。

我们不能说因为1+2=3所以China=I+love,即这种表示形式没有任何含义甚至会带来错误的理解。

所以为了解决这些问题,One-hot编码的方式被提出。所谓的One-hot编码,实际上就是用一个位来单独表示一个单词,具体含义如下:

单词向量表示
I[1, 0, 0]
love[0, 1, 0]
China[0, 0, 1]

使用One-hot编码后任意两个词差异性相同。即“One-hot表达的假设是词与词没有关联”。因为任意两个向量都是等价的,我们也不用考虑该如何给词分配向量。用它可以很容易的表达词的组合(使用one-hot向量的线性组合)。

Word embeding

单纯的One-hot编码假定了各个单词之间都是互相正交独立的,而且其长度正比与词表中的单词个数,维度过高。我们知道,单词之间是存在丰富的语义联系的,有的单词之间的关系比另外单词之间的关系要更加密切。

为了反应这种特性,word embedding被提出。其核心思想是 “Words that occur in the same context tends to have similar meanings.”

单词向量表示
I[1.765, -0.764, 0.333]
love[-0.235, 1.876, -3.145]
China[2.001, 0.034, -1.333]

使用word embedding后,编码变得简洁,并且互相之间的联系可以通过计算Cosine similarity得到。

比如下图展示了一个示例

image.png

关系密切的词在向量空间(这里是一个二维向量空间)中距离很近(图片摘自 www.zhihu.com/question/26…

总结

本文介绍了One-hot embedding和Word embedding的发展,希望对您有所帮助。