词向量是自然语言处理(NLP)中的一个重要概念,它是将词语转换成计算机能理解的数值形式的方法。
图:现实世界的图书、文字会被映射成计算机世界的向量。
简单来说,词向量就是将每个词表示为一个实数向量,使得这些向量能够捕捉词语之间的含义和语义关系。
词向量发展历程
简单来说,进化历程如下:
对比如下表:
1、统计方法 与 “词袋模型”(Bag of Words)
最早的词向量是通过统计方法得来的。
比如,“词袋模型”(Bag of Words, 简称BoW)会统计每个词在文档中出现的次数,但这种方法忽略了词序和语法结构。
想象一下,你有一个实际的袋子,你可以将一篇文档中出现的所有词汇都扔进这个袋子。
图:书本的大量词汇飞向袋子。
BoW模型正是基于这样一个简单的概念:
-
忽略顺序: 就像袋子里的东西没有特定的顺序一样,BoW模型不考虑单词在文档中的顺序或语法结构,只考虑词汇是否出现,以及它们出现的频率。
-
构建词汇表: 在应用BoW模型时,首先要构建一个词汇表,这个表包含了所有文档中出现的不重复词汇。
-
文档向量: 然后,每个文档都被转换成一个向量,这个向量的维度等于词汇表的大小。向量中的每一个元素代表对应在词汇表中的词汇在文档中出现的次数或者是出现与否的指标。
BoW的缺点:
- 语境信息的缺失: 因为BoW模型忽略了单词的顺序和语境,所以它无法捕捉到词语之间的语义关系。
- 高维稀疏: BoW向量通常很稀疏,因为词汇表可能非常庞大,而每个文档中的单词却相对较少,这导致了大量的零值出现在向量中。
- 频率不代表重要性: 仅仅依靠频率,BoW模型不能区分出哪些词对于文档的意义更为重要。尽管可以用TF-IDF等方法来改善,但仍然有局限性。
尽管有这些局限,BoW模型因其实现简单和计算高效,在很多基本的文本分析任务中仍然非常有用。
2、分布式表示 和 词嵌入(word embeddings)
基于“分布假说”(词的意义由它的上下文决定),研究者们提出了更先进的词向量生成方法。
比如,词嵌入(word embeddings)技术,如Word2Vec、GloVe等,能够根据词与词之间的共现关系学习得到每个词的向量表示。这些向量能够反映出词语间的相似性和语义关系。
想象一下我们每个人都住在一个巨大的城市里,这个城市是由无数的小区(词汇)组成的。每个小区(词汇)都有其特色和邻居。
在这个城市中,有些小区非常相似,比如“苹果”小区和“香蕉”小区都属于水果区,它们离得很近;而“苹果”和“汽车”这两个小区则相距较远,因为它们之间的关系并不密切。
图:城市里跟水果相似的社区集中在一起,它们离得很近。
词嵌入的构想:
词嵌入就是用一种数学的方式,给这个巨大城市的每个小区一个具体的“地址”(也就是一串数字),这个地址能表示出每个小区与其他小区之间的关系。这个地址就是我们所说的“向量”。
怎么构建这个“地址”:
上下文环境:
在词嵌入的世界里,一个词的意义是由它的邻居(即上下文)来定义的。
例如,“bank”这个英文单词有多个含义,如果它周围经常出现“存款”、“贷款”这样的词,那它可能属于金融小区。如果它的邻居是“河”、“湖”,那它就可能是自然地理小区的一部分。
维度选择:
我们给每个小区的地址多少数字(即多少维度),决定了我们可以描述这个小区特性的细致程度。
比如,只有两个数字(二维)的地址可能只能告诉我们它是不是水果小区的,而如果我们有更多数字,我们甚至可以知道这个水果是不是甜的,是不是热带的等等。
算法训练:
有了这个想法,我们怎么给每个小区分配地址呢?这就需要一些特殊的“城市规划者”(算法),比如Word2Vec或GloVe。这些算法通过阅读大量的书籍(数据集),观察每个词出现的环境,然后给它们分配一个最佳的地址。
词嵌入的用处:
这样一来,当我们要比较两个小区(词汇)是不是相似,或者是不是有某种特定的关系,我们就可以看看它们的地址(向量)在数值上是不是接近。
例如,如果我们想找到“国王”这个词的女性形式,我们可以在词嵌入的空间里寻找一个与“国王”有相似“社区特征”但又有“女性”属性的地址。在Word2Vec模型中,这相当于找到“国王”和“男人”这两个词向量的差,然后再找一个与这个差最相近的“女性”词向量,结果很可能就是“女王”。
小结
通过这样的技术,计算机不再是简单地按字面意思处理文字,而是能够以一种近似于人类的方式去理解和操作语言。这是让计算机走进人类语言世界的一大步。
3、 深度学习方法 和 “上下文化词向量”(Contextual Word Embeddings)
进一步地,深度学习框架下的语言模型(如BERT、GPT等)能够学习到上下文相关的词向量,这些向量不仅反映了词语的固有意义,还包含了特定上下文中的语义信息。与传统的词向量(如Word2Vec或GloVe)不同,这些上下文化的词向量能够捕捉词在不同句子中的不同含义。上下文化词向量是指词的向量表示不再是静态的,而是根据词出现的具体句子动态变化的。
假设你有一个神奇的眼镜,当你戴上这副眼镜看世界时,你不仅能看到物体(这里的物体比作词语),还能看到物体之间的关系,以及它们是如何随环境(上下文)变化的。这副眼镜就像深度学习框架下的语言模型(如BERT、GPT等),而你的视野就是模型生成的词向量。
在传统的词向量模型中,比如我们手上有一堆卡片,每张卡片上写着一个词语,每个词语都有一个固定的含义,就像“苹果”可能既指水果也可能指公司,但卡片上的“苹果”始终不变。
现在,把这些卡片换成神奇眼镜下的图景。当“苹果”出现在“吃”这个词旁边时,神奇眼镜会告诉你这里的“苹果”指的是水果。而当“苹果”出现在“电脑”或“手机”旁边时,眼镜会告诉你这指的是公司。这就是上下文的力量。
图:当苹果出现在不同上下文时,代表不同的含义。
深度学习的语言模型如BERT或GPT通过巨大的文本数据学习,就像它们不停地戴着这副神奇眼镜观察世界,理解每个词在不同情境下的不同含义。这样,当模型遇到一个词时,它不再只是给你一个固定的含义,而是能够根据这个词所处的具体“环境”给出一个富含上下文信息的意义。
因此,当我们说深度学习框架下的语言模型能学习到上下文相关的词向量时,我们指的是这些模型能够捕捉到词语不仅仅是它字面上的含义,还包括它在特定语境下的含义,就像神奇眼镜能让你看到物体在不同环境下的不同样貌一样。
词向量的应用场景
词向量的场景主要是作为输入、帮助理解、生成内容...
文本分类:
在对文本进行分类(如情感分析、主题分类)时,可以使用词向量作为机器学习模型的输入特征。
信息检索:
在搜索引擎中,词向量可以帮助理解查询的意图和文档的内容,改进搜索结果的相关性。
机器翻译:
在机器翻译中,词向量帮助模型理解不同语言中词语的意义,从而提高翻译的质量。
聊天机器人:
聊天机器人利用词向量来理解用户的输入和上下文,生成更自然的回复。
语义分析:
通过比较词向量之间的距离或角度,可以判断词语之间的语义相似度或相关性。
文本生成:
生成型模型如GPT系列利用词向量来生成连贯、有意义的文本。
示例:OpenAI的词向量接口
OpenAI推荐的获取词向量接口 https://platform.openai.com/docs/guides/embeddings ,会返回1536维的向量。
这些嵌入向量是从大型模型(如GPT-3或类似的模型)中提取的,它们捕捉单词或短语的语义,并将其压缩成固定大小的向量。
参看:https://openai.com/blog/new-and-improved-embedding-model
词向量一般是通过预训练模型生成的,通常是在大量数据上训练得来的。一旦生成,这些词向量在不同的上下文中会被复用,但不会改变。这些向量捕捉了词汇的语义信息,并可以用于各种自然语言处理任务。
总结
把词向量想象成一种虚拟的“词汇DNA”。
图:词汇DNA
就像DNA可以决定生物的特征一样,词向量包含了一个词的各种语言特征,包括它与其他词的关系(如同义词、反义词)和在不同上下文中的意义变化。
当我们需要计算机理解和处理语言时,就像科学家研究生物一样,计算机通过分析这些“词汇DNA”(词向量),就能理解词语的意义,并执行各种语言处理任务。