携手创作,共同成长!这是我参与「掘金日新计划 · 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代替。
| 单词 | 向量表示 |
|---|---|
| I | 1 |
| love | 2 |
| China | 3 |
这样表示看似非常简洁,但它只是一种映射,在表意方面甚至不如原本的自然语言符号串。
我们不能说因为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得到。
比如下图展示了一个示例
关系密切的词在向量空间(这里是一个二维向量空间)中距离很近(图片摘自 www.zhihu.com/question/26…
总结
本文介绍了One-hot embedding和Word embedding的发展,希望对您有所帮助。