词嵌入和文本向量化的温和介绍

A Gentle Introduction to Word Embedding and Text Vectorization

词嵌入和文本向量化的温和介绍
图片作者 | ChatGPT

引言

“我今天感到很**忧郁**”与“我把篱笆漆成了**蓝色**”。计算机如何知道“blue”的这些用法是完全不同的?一个指情感,另一个描述颜色。人类通过上下文毫不费力地理解这种区别,但教会机器掌握这些细微差别一直是自然语言处理中最大的挑战之一。

这正是现代文本表示技术所解决的问题。当计算机处理文本时,它不能直接处理原始单词;它需要数字。*文本向量化*和*词嵌入*是将人类语言转换为捕捉意义、上下文和语义关系的数学表示的变革性技术。

机器学习模型需要这些**数值特征向量**来执行我们现在认为理所当然的任务:理解你意图的搜索引擎、检测垃圾邮件的垃圾邮件过滤器以及解释你问题的虚拟助手。随着这些技术从简单的单词计数发展到复杂的神经网络表示,它们彻底改变了机器理解人类交流的方式。

什么是文本向量化?

文本向量化是将单词、句子或整个文档转换为机器学习模型可以处理的数字的广义过程。这就像在人类语言和计算机语言之间创建一本翻译词典。

文本向量化有几种方法

独热编码

**独热编码**是最简单的形式,其中每个单词都变成一长串零,只有一个一。例如,在三词词汇表(“dog”,“cat”,“bird”)中,“dog”可能变成`[1,0,0]`,“cat”`[0,1,0]`,“bird”`[0,0,1]`。虽然简单,但这会产生非常稀疏的向量,并且无法捕捉单词之间的任何含义。

词袋模型 (BoW)

文本向量化最简单的方法之一是**词袋模型 (BoW)**。其思想是使用向量来表示文档中每个单词的*频率或存在*。想象一下,将数据集中所有独特的单词(这是你的*词汇表*)分配到向量中的一个位置。对于任何给定的文档(或句子),你将每个位置的值设置为该单词在文档中出现的次数。

**为什么是“词袋”?** 因为我们忽略了顺序和上下文——我们将文本视为一个无序的词袋,只记录每个词出现的次数。这种简单性使得BoW易于理解和实现。

**局限性:** 向量会**与词汇表一样大**——可能数万维,其中大多数对于任何给定文档都是0(这是一个非常**稀疏**的表示)。此外,BoW忽略了上下文和*含义*:它丢失了词序,将“**蛋糕食谱**”和“**食谱蛋糕**”视为相同的词袋,即使词序可能对含义很重要。

TF-IDF

**TF-IDF**(词频-逆文档频率)通过根据单词在文档中相对于文档集合的重要性来加权单词,从而改进了这一点。

BoW 简单计数的缺点是常用词(如“的”、“和”)会出现非常频繁,并且可能会主导文档之间的相似性,即使它们携带很少的独特信息。**词频-逆文档频率 (TF-IDF)** 是一种加权方案,它根据单词在所有文档中的稀有程度来调整原始词数,以反映单词的*重要性*。

在 TF-IDF 中,文档中每个词的分数随其频率(词频)的增加而增加,但会因该词在整个语料库中的总频率(逆文档频率)而**降低权重**。直觉是,如果一个词在*每个*文档中都非常常见(例如“的”、“是”),那么它就不是该文档主题的独特指标。

**效果:** TF-IDF 仍然会生成一个与词汇量长度相同的向量,但现在的值是实值权重而不是简单的计数。像“的”或“和”这样的词在 TF-IDF 中将具有接近零的值,而更独特的词会获得更高的值。

什么是词嵌入?

词嵌入是一系列向量化技术,它们从数据中学习密集、低维的表示,而不是手动分配它们。它不是使用大多为零的稀疏向量,而是创建密集向量,其中每个单词由一个包含例如 50-300 个数字的列表表示。

把它想象成给每个单词在地图上一个特殊的定位。像“快乐”和“高兴”这样的相似词会彼此靠近,而像“快乐”和“桌子”这样的不同词则会相距很远。虽然向量中的单个数字没有特定的含义,但所有数字的模式共同捕捉了语义关系。

例如,“king”可能表示为`[0.3, -0.2, 0.8, ...]`,而“queen”表示为`[0.28, -0.2, 0.75, ...]`。

词嵌入的真正强大之处在于它们允许计算机通过数学方式理解词语之间的关系。“国王”和“王后”之间的关系常常反映了“男人”和“女人”之间的关系(国王 - 男人 + 女人 ≈ 王后)。这些算术类比在许多情况下出奇地有效,尽管它们并非完美无缺。

词嵌入算法

有几种流行的算法可以生成词嵌入

**1. Word2Vec** 将词嵌入学习视为一项预测任务,具有两种主要架构

  • **连续词袋模型 (CBOW)**:模型试图从它周围的词(其上下文)预测目标词。
  • **Skip-Gram**:给定一个词,预测可能出现在它周围的词。

Word2Vec 是一个突破,因为它表明我们可以有效地从大型语料库中学习高质量的嵌入。这些嵌入以其线性关系而闻名——例如,**vec(“king”) – vec(“man”) + vec(“woman”) ≈ vec(“queen”)**。

**2. GloVe** (Global Vectors for Word Representation) 是一种**基于计数**的方法,它从全局词-词共现计数开始。它分解这个大型矩阵以生成词向量,同时保留共现概率的某些比率。

在实践中,Word2Vec 和 GloVe 嵌入在质量上非常相似,并且经常可以互换使用——它们只是来自不同的学习理念(预测性与矩阵分解)。

**3. FastText**,由 Facebook 开发,通过将每个单词表示为**子词(字符 n-gram)向量**的组合来扩展 Word2Vec。例如,“apple”这个词将被分解为像“<ap”、“app”、“ppl”、“ple”、“le>”这样的 n-gram(带有特殊的开始/结束标记)。

这意味着即使一个词在训练中没有出现过,它的许多字符块也可能出现过,因此模型可以为其构建嵌入。FastText 对于形态丰富的语言以及处理拼写错误或罕见词非常有用。

静态嵌入与上下文嵌入

以上所有算法都生成**静态词嵌入**——每个词都有一个固定的向量,无论上下文如何。因此,“bank”这个词无论我们谈论的是河岸还是金融银行,都将具有相同的嵌入。像 **Word2Vec** 和 **GloVe** 这样的经典嵌入是“静态的”,无论上下文如何,都给每个词一个向量。现代 NLP 模型使用“上下文”嵌入,其中词的表示根据周围的词而变化——因此“bank”在“河岸”和“银行账户”中具有不同的向量。

上下文嵌入:语境中的词

为了解决静态嵌入的局限性,研究人员开发了**语境化词嵌入**——根据**词的上下文而变化的向量表示**。2018 年,ELMo 和 BERT 等突破性进展表明,我们可以拥有这样的表示:“bank”在“在银行存钱”中与“bank”在“河岸边的鸭子”中是不同的。

在上下文嵌入模型中,单词不再在固定的向量字典中查找。相反,向量是**由语言模型即时计算**的,该模型读取整个句子(或周围文本)。

导致这一变化的两个著名模型是

**1. ELMo**(基于语言模型的嵌入)使用双向 LSTM 作为语言模型进行训练。一个词的嵌入本质上是整个句子的函数。如果“stick”出现在“stick to the plan”和“carved a wooden stick”中,ELMo 会根据上下文为每个“stick”生成不同的向量。

**2. BERT**(来自Transformer的双向编码器表示)使用Transformer架构创建真正双向的上下文感知表示。BERT 会理解在“他去银行存钱”和“他坐在河岸边”中,“银行”的两个实例应该有非常不同的向量。

除了单个词向量,BERT 还为整个序列生成嵌入,通常用于句子或段落分类任务。

何时使用每种方法

  • **词袋模型 / TF-IDF**:最适合计算效率重要的文档分类任务
  • **静态词嵌入**:当你需要语义理解但计算资源有限时是理想选择
  • **上下文嵌入**:当准确性至关重要且你拥有足够的计算能力时选择

局限性和挑战

在为特定 NLP 任务选择正确的技术时,了解每种方法的局限性至关重要。没有一种方法是适用于所有应用程序的完美之选

传统方法(独热编码和词袋模型)

  • **维度和稀疏性**:随着词汇量的增长,向量变得非常大,大部分为零,导致计算效率低下
  • **语义缺失**:无法捕捉词语之间的意义关系,或理解“优秀”和“伟大”是相似的
  • **结构丢失**:通过丢弃词序,重要的语法和上下文信息丢失

TF-IDF

  • **词语独立性**:仍然将词语视为独立的单元,忽略了语义相似词之间的关系
  • **固定重要性**:词语的重要性在语料库中只计算一次,不适应不同的上下文或含义
  • **文档聚焦**:更适合比较整个文档,而不是理解词级含义

静态词嵌入(Word2Vec、GloVe、FastText)

  • **单一表示问题**:具有多种含义的词(如“bank”)会得到一个单一向量,平均所有用法
  • **训练要求**:高质量的嵌入需要大量的文本和仔细的参数调整
  • **偏见继承**:嵌入可以学习和放大训练数据中存在的偏见
  • **组合挑战**:组合词向量(如平均)来表示短语或句子会丢失结构信息

上下文嵌入 (ELMo, BERT)

  • **资源密集型**:训练和部署这些模型需要大量的计算能力和内存
  • **可解释性问题**:复杂的神经网络架构使得难以理解为什么会生成特定的表示
  • **扩展挑战**:拥有数十亿参数的模型在资源受限的环境中部署面临挑战
  • **领域特异性**:可能需要微调才能在专业领域或语言上表现良好

尽管存在这些局限性,每种方法在不同场景中都已证明其价值。该领域仍在不断发展,研究人员正在开发解决这些挑战同时保留每种方法优点的技术。

实际应用

词嵌入和文本向量化技术革新了许多NLP任务

  • **文本分类**:从垃圾邮件检测到情感分析
  • **信息检索**:通过理解查询意图来改进搜索引擎
  • **机器翻译**:帮助系统理解跨语言的含义
  • **问答系统**:使自然语言问题的回答更加准确
  • **文本生成**:创建连贯且符合上下文的内容

实施资源

如果您有兴趣在自己的项目中实施词嵌入,这里有一些优秀的实用教程

了解基础知识

创建自己的嵌入

深度学习应用

实用应用

这些教程提供了代码示例和分步指导,帮助您从理论走向实践。它们涵盖了从理解基本概念到使用嵌入实现高级深度学习模型的所有内容。

结论

从简单的独热编码到复杂的上下文嵌入的转变代表了计算机理解文本方式的显著演变。每一次进步都使我们更接近捕捉人类语言的微妙之处和丰富性。

对于NLP初学者来说,理解这些文本表示方法提供了坚实的基础。虽然像BERT这样的上下文模型代表了当今的最新技术,但像TF-IDF这样的更简单技术因其可解释性和计算效率,在许多应用中仍有一席之地。

随着你深入NLP领域,你会发现选择正确的表示方法取决于你的特定任务、计算资源以及所需的语言复杂程度。

暂无评论。

留下评论

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。