[阅读笔记]Dependency-Based Word Embeddings(基于依存的词向量) _Omer Levy and Yoav Goldberg
一、背景知识
1. 什么是Word Embeddings
定义
Word Embeddings:词向量/词嵌入
我们知道计算机不认识字符串,所以我们需要将文字转换为数字。Word Embedding就是来完成这样的工作。Word Embeddings are the texts converted into numbers and there may be different numerical representations of the same text.
有一个定义:A Word Embedding format generally tries to map a word using a dictionary to a vector。
解释
所以Word Embedding是什么呢???
参考这篇博文An Intuitive Understanding of Word Embeddings: From Count Vectors to Word2Vec (对词嵌入的直观理解:从计数向量到Word2Vec)可以获得一个比较好的了解。
下面就来看看这个博文是怎么说的。
引入
首先举了三个例子:
①在搜索引擎上输入一个关键词会得到成百上千的相关结果
②通过对推文的分析可以预测出总统竞选的结果
③谷歌翻译可以把你输入的英文翻译成中文
上述三个例子的共同点是什么呢?
-------文本处理!以上三个场景都需要处理大量的文本来执行不同范围的任务,比如在谷歌搜索示例中执行聚类,在第二个场景中执行分类,在第三个场景中执行机器翻译。
思考:
- 通常计算机在处理字符串或文本时效率很低,我们如何让今天的计算机对文本数据执行聚类、分类等??
- 计算机可以匹配两个字符串并告诉您它们是否相同。但当你搜索梅西时,我们如何让电脑告诉你关于足球或罗纳尔多的信息呢?如何让计算机明白“苹果是一种美味的水果”中的“苹果”是一种可以吃的水果,而不是一个公司?
上述问题的答案在于为单词创建一种表示,这种表示能够捕捉单词的含义、语义关系以及它们所使用的不同类型的上下文。
下面,我们将正式了解什么是Word Embeddings以及它们的不同类型
- What are Word Embeddings?
- Different types of Word Embeddings
2.1 Frequency based Embedding(基于频率的词嵌入)
2.1.1 Count Vectors(数向量)
2.1.2 TF-IDF
2.1.3 Co-Occurrence Matrix(共现矩阵)
2.2 Prediction based Embedding(基于预测的词嵌入)
2.2.1 CBOW
2.2.2 Skip-Gram - Word Embeddings use case scenarios(what all can be done using word embeddings? eg: similarity, odd one out etc.) 略
- Using pre-trained Word Vectors 略
- Training your own Word Vectors 略
- End Notes 略
1. What are Word Embeddings?
词嵌入是将文本转换为数字,同一文本可能有不同的数字表示。但是在我们深入研究Word Embeddings的细节之前,我们应该问一个问题:为什么我们需要Word Embeddings?
事实证明,许多机器学习算法和几乎所有的深度学习架构都无法处理原始形式的字符串或纯文本。它们需要数字作为输入来执行任何类型的工作,从广义上讲,可以是分类、回归等等。由于文本格式中存在大量的数据,从文本格式中提取知识并构建应用程序是非常必要的。文本应用程序的一些现实世界的应用程序是-情绪分析的评论等亚马逊,文件或新闻分类或聚类的谷歌等。
单词嵌入格式通常尝试使用字典将单词映射到向量。让我们把这个句子分解成更细的细节,以便有一个清晰的观点。举个例子:” Word Embeddings are Word converted into numbers ”
A word in this sentence may be “Embeddings” or “numbers ” etc.
A dictionary may be the list of all unique words in the sentence. So, a dictionary may look like --[‘Word’,’Embeddings’,’are’,’Converted’,’into’,’numbers’]
采用one-hot编码的话,词向量的维度是整个词汇表的大小,其中1表示单词存在的位置,其他位置为0。根据上述字典,numbers 在这种格式下的向量表示为[0,0,0,0,0,1],Converted的向量表示为[0,0,0,1,0,0]。
这种方法的缺点也就很明显啦①当词汇表很大的时候,表示单词的维度就会很大。若是百万级别的词汇表,单词的维度也就是百万。 ②向量中只有一个位置是1,其余全部是0,表达效率不高。③体现不出语义关系
这是用向量形式表示单词的一种非常简单的方法。让我们来看看不同类型的词嵌入或词向量,以及它们相对于其他类型的优缺点。
2. Different types of Word Embeddings
2.1 Frequency based Embedding
2.1.1 Count Vector
语料库C有D个文档{d1,d2,…dD},N个唯一的(不重复的)标签(token),这N个标签会形成我们的字典, Count Vector矩阵M大小为DXN。矩阵M的每一行是文档di中标签(token)出现的次数。举个例子:
D1: He is a lazy boy. She is also lazy.
D2: Neeraj is a lazy person.
The dictionary created may be a list of unique tokens(words) in the corpus =[‘He’,’She’,’lazy’,’boy’,’Neeraj’,’person’]
The count matrix M of size 2 X 6 will be represented as –
He | She | lazy | boy | Neeraj | person | |
---|---|---|---|---|---|---|
D1 | 1 | 1 | 2 | 1 | 0 | 0 |
D2 | 0 | 0 | 1 | 0 | 1 | 1 |
现在,列也可以理解为矩阵M中对应单词的单词向量。例如,上面矩阵中表示“lazy”的单词向量是[2,1]。这里,行对应于语料库中的文档,列对应于字典中的标记。上面矩阵的第二行可以理解为- D2包含“lazy”:一次,“Neeraj”:一次和“person”一次。
对矩阵M的表示可能会有些不一样:
- 编写字典的方式。
为什么?因为在现实世界的应用程序中,我们可能有一个包含数百万个文档的语料库。通过数百万份文档,我们可以提取出数亿个独特的单词。所以基本上,像上面那样准备的矩阵对于任何计算都是非常稀疏和低效的。因此,使用每个唯一的单词作为字典元素的另一种方法是,根据频率选择前10,000个单词,然后准备一个字典。 - 每个单词的计数方式。
我们可以将频率(单词在文档中出现的次数)或出现(单词在文档中出现了吗?)作为计数矩阵M中的条目,但是通常情况下,频率方法优于后者。
2.1.2 TF-IDF vectorization
这是另一种基于频率法的方法,但它与向量化计数(coun