概述
6. Vector Semantics and Embeddings
本章主要介绍word semantics/embeddings,就是词向量。以及一些basic principles of word meaning(注:本文是笔记,不是翻译)。
6.1 Lexical Semantics(词汇语义学)
我第一次看到Lexical Semantics这个词是很懵的,翻译成中文叫词汇语义学,依旧不知道是什么意思。其实,本节主要介绍如何表示一个词的含义。词除了有其本身的含义以外,还与其他的词构成了十分复杂的关系。比如词可以反映出一些相近的意思(“猫”和“狗”可以看作是相近的),词还可以反映出一些相反的意思(比如“冷”和“热”),一些词有积极的意思(“开心”),一些词有消极的意思(“难过”)等等。简单来说,这一节主要介绍一些词的需求(近义、反义、积极、消极等),我们希望计算机所表示的词(词向量)能够在实际中反映出这些需求。
Lemmas and Senses(词根和词义)
这里介绍两个概念:以英文单词"sing"为例
Lemma(词根): sing
Wordform(词形): sang, sung
同一个词根可能有不同的含义,即多义性,例如英文单词“mouse"既有鼠标的意思也有老鼠的意思,它们在不同的上下文中所代表的含义不同,这也给NLP任务带来了困难。
Synonymy(同义词)
词语的一个关键是能反映出两个词之间的关系,比如一些意思相近的同义词:car/automobile。
如果将句子中的一个词替换为另一个词,并且不改变句子的含义那么这两个词可以称为同义词。
尽管一些词是同义词,但是可能没有两个词是意思完全一致的,或多或少有些差别。
Word Similarity(词相似度)
尽管一些词没有同义词,但是大部分的词都有与其相似的词。比如”猫“和”狗“不是同义词(synonymy),但是它们是相似的(similar),因为都是动物。词与词之间的相似度在很多NLP任务中起着非常重要的作用。
Word Relatedness(词相关性)
除了相似度(similarity),两个词的含义还可以通过其他方式相关联,即相关性(relatedness)。比如单词”coffee“和"cup",它们不是同义词,也不相似(similar),但是具有相关性(relatedness)。
这里就出现了另一个概念semantic field。它的定义是a set of words which cover a particular semantic domain and bear structured relations with each other。比如把餐厅作为一个semantic field,那么"服务员",”菜单“,”盘子“,”食物“等词就具有一定的相关性。
Semantic Frames and Roles(语义框架和角色)
另一个概念semancit frames。定义为a set of words that denote perspectives or
participants in a particular type of event。举例来说,一个买卖的商业活动。里面涉及了"buy", "sell”, 以及"pay"等词,在这个场景下就可以看作是一个semantic frames,它有它各自的角色(buyer, seller, goods, mony等)。
如果我们的计算机能够理解"buy"和"sell"这两个词,那么就会理解"Sam bought the book from Ling"和"Ling sold the book to Sam"这两句话的含义以及它们之间的关系,这在问答系统任务中有很大的作用。
Connotation(内涵)
Connotation反映了一个词的深层次含义,比如"happy",“sad”等词反应了作者或读者的情绪,情感,想法等。这在情感分析任务中起到关键作用。
在本节中主要从词义的角度介绍了一些词的特征,其中很多概念(Synonymy, Similarity, Relatedness)意思将近,容易混淆,如果有不清楚的地方还是希望读者去读一下原文。
6.2 Vector Semantics
Vector Semantics: 将一个单词表示为多维语义空间的一个点,也叫做embeddings。
词向量现在已经成为NLP中单词表示的标准方式了。
本章后面部分将会介绍两种词向量模型:TF-IDF以及word2vec。
6.3 Words and Vectors
6.3.1 Vectors and documents
本节简要地介绍了如何用向量表示document。在Information retrieval (IR)任务中,我们需要在D documents找到一个d document来匹配q document。这就需要能够用向量的方式来表示每个不同的document。
6.3.2 Words as Vectors
如何构建一个表示单词的向量呢?构建词向量的矩阵可以称为word-word matrix或者term-context matrix。具体来说,这个矩阵是一个 ∣ V ∣ × ∣ V ∣ |V| times |V| ∣V∣×∣V∣的矩阵(V是一个语料库的单词数,不是单词总数,通常在1W-5W之间),我们可以规定一个窗口大小,比如为4,对于给定的单词v,我们去寻找单词v所在的句子的前后四个单词,并将其记录在这个矩阵中,即可构建这个词向量矩阵。举例来说,假设我们想要构建"cherry", “strawberry”, "digital"以及"information"这四个词的向量,并且在一个语料库中有下面四句话:
is traditionally followed by cherry pie, a traditional dessert
often mixed, such as strawberry rhubarb pie. Apple pie
computer peripherals and personal digital assistants. These devices usually
a computer. This includes information available on the internet
这四句话截取了原文中以这四个词为中心的前后四个单词,那么我们可以构建如下的词向量:
… | traditional | pie | computer | available | device | internet | … | |
---|---|---|---|---|---|---|---|---|
cherry | … | 1 | 1 | 0 | 0 | 0 | 0 | … |
strawberry | … | 0 | 2 | 0 | 0 | 0 | 0 | … |
digital | … | 0 | 0 | 1 | 0 | 1 | 0 | … |
information | … | 0 | 0 | 1 | 1 | 0 | 1 | … |
以"cherry"为例,其所在句子的前后四个单词中出现了"traditional"和"pie",那么我们就可以在矩阵相应的位置记录加一。寻找语料库中所有存在"cherry"的句子,截取句子的前后四个单词,将出现的单词记录到矩阵中"cherry"单词所在行的相应网格中,即可得到最终的词向量矩阵。
6.4 Cosine for measuring similarity
本节主要介绍NLP领域常用的一种度量两个词向量间相似度的方法:余弦相似度。余弦相似度基于内积/点积,其定义如下:
d
o
t
p
r
o
d
u
c
t
(
v
,
w
)
=
v
⋅
w
=
∑
i
=
1
N
v
i
w
i
=
v
1
w
1
+
v
2
w
2
+
.
.
.
+
v
N
w
N
dot ; product(v, w) = v cdot w = sum_{i=1}^Nv_{i}w_{i} = v_{1}w_{1} + v_{2}w_{2} + ... + v_{N}w_{N}
dotproduct(v,w)=v⋅w=i=1∑Nviwi=v1w1+v2w2+...+vNwN
如果两个向量在相同的方向上有较大的值,那么其点积的结果也会大。但是仅仅用点积衡量两个单词向量的相似度是不合适的,因为点积偏好于长向量。这里所说的长向量不是指向量的维度大,向量的长度定义如下:
∣
V
∣
=
∑
i
=
1
N
v
i
2
|V| = sqrt{sum_{i=1}^Nv_{i}^2}
∣V∣=i=1∑Nvi2
如果一个向量长度很长,那么该向量在每个维度的值就会比较大,因此造成点积的结果偏大,这就会导致即使两个毫不相关的词,由于它们的长度都很长,从而导致了计算出的它们之间的相似度很大。通常来说,经常出现的词,其词向量会偏大,在6.3节中介绍到,一个词的词向量取决于其周围上下文的词频,如果一个单词频繁出现,那么其上下文的单词也会进而增加,从而造成词向量中某些维度的值变得较大,从而使该词向量长度较长。
一个通用的解决办法是标准化,通过对点积标准化以消除向量长度对相似度的影响,那么向量
v
v
v对
w
w
w的相似度就变为了:
c
o
s
i
n
e
(
v
,
w
)
=
v
⋅
w
∣
v
∣
∣
w
∣
=
∑
i
=
1
N
v
i
w
i
∑
i
=
1
N
v
i
2
∑
i
=
1
N
w
i
2
cosine(v, w) = frac{v cdot w}{|v||w|} = frac{sum_{i=1}^Nv_{i}w_{i}}{sqrt{sum_{i=1}^Nv_{i}^2}sqrt{sum_{i=1}^Nw_{i}^2}}
cosine(v,w)=∣v∣∣w∣v⋅w=∑i=1Nvi2∑i=1Nwi2∑i=1Nviwi
上式就是余弦相似度的定义,余弦相似度的值阈为[-1,1],但是在这里,由于词向量的每个维度都为正数,因此这里的值阈为[0,1]。
6.5 TF-IDF: Weighing terms in the vector
本节介绍TF-IDF(term frequency–inverse document frequency,词频-逆向文件频率)算法从,常用于信息检索(information retrieval)等,是一种基于统计方法的加权技术。
TF-IDF的核心思想是评估一个词对一个语料库中的某个文件的重要程度,如果一个词在语料库中出现的次数越多就越重要,同时一个词在越多的文件中出现,那么其重要性就越低。
用
t
t
t表示某个单词,用
d
d
d表示语料库中的某个文件(document),则TF可以表示为:
t
f
t
,
d
=
l
o
g
10
(
c
o
u
n
t
(
t
,
d
)
)
+
1
tf_{t,d} = log_{10}(count(t, d)) + 1
tft,d=log10(count(t,d))+1
其中
c
o
u
n
t
(
t
,
d
)
count(t, d)
count(t,d)是指单词
t
t
t在文件
d
d
d中出现的次数。IDF可以表示为:
i
d
f
t
=
l
o
g
10
(
N
d
f
t
)
idf_{t} = log_{10}(frac{N}{df_{t}})
idft=log10(dftN)
其中
N
N
N为语料库中所有的文件总数,
d
f
t
df_{t}
dft为语料库中出现单词
t
t
t的文件数量。TF-IDF则为以上两式的结合,定义如下:
w
t
,
d
=
t
f
t
,
d
×
i
d
f
t
w_{t,d} = tf_{t,d} times idf_{t}
wt,d=tft,d×idft
其中
w
t
,
d
w_{t,d}
wt,d就代表了单词
t
t
t对文件
d
d
d的重要程度。
6.6 Applications of the tf-idf vector model
TF-IDF有很多应用,书中列举了一部分,但是我觉得书中列举的应用很多并不是TF-IDF所特有的,而是词向量模型所共有的。
这里简单介绍一下利用TF-IDF来判断两个文件(document)的相似度。我们可以根据TF-IDF中的向量来计算两个文件的中心向量,再去比较两个中心的相似度来达到比较文件相似度的目的。这里的中心向量就代表了文件,假设文件
d
d
d中有
k
k
k个单词,每个单词的向量为
w
1
,
w
2
,
.
.
.
,
w
k
w_{1}, w_{2}, ... , w_{k}
w1,w2,...,wk(由TF-IDF计算得到),那么这个文件的中心向量为:
d
=
w
1
+
w
2
+
.
.
.
+
w
k
k
d = frac{w_{1} + w_{2} + ... + w_{k}}{k}
d=kw1+w2+...+wk
6.7 Optional: Pointwise Mutual Information (PMI)
6.8 Word2vec
本节介绍NLP领域经典的词向量模型word2vec,相比较于本章之前介绍的TF-IDF,word2vec模型的词向量更短(向量长度通常在50-1000之间)且密集(dense,大多数为非0值)。
最后
以上就是冷艳毛衣为你收集整理的Speech and Language Processing(6) - Vector Semantics and Embeddings笔记的全部内容,希望文章能够帮你解决Speech and Language Processing(6) - Vector Semantics and Embeddings笔记所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复