什么是词嵌入?
词嵌入定义
词嵌入是一种用于自然语言处理 (NLP)的技术,它将词表示为数字,以便计算机可以处理它们。它是一种流行的文本学习数字表示方法。
因为机器需要帮助来处理单词,所以每个单词都需要分配一个数字格式,以便可以对其进行处理。这可以通过几种不同的方法来完成
- 独热编码为文本主体中的每个单词提供唯一的编号。此编号将转换为表示该单词的二进制向量(使用 0 和 1)。
- 基于计数的表示计算单词在文本主体中出现的次数,并为其分配相应的向量。
- SLIM 组合利用这两种方法,以便计算机可以理解单词的含义以及它们在文本中出现的频率。
词嵌入创建了一个高维空间,其中每个单词都被分配了一个密集的数字向量(下面会详细介绍)。然后,计算机可以使用这些向量来理解单词之间的关系并进行预测。
词嵌入如何在自然语言处理中发挥作用?
词嵌入在自然语言处理中通过将词表示为高维空间中的实数密集向量来发挥作用,该空间可能高达 1000 维。向量化是将单词转换为数值向量的过程。密集向量是指大多数条目不为零的向量。它与稀疏向量(例如独热编码)相反,后者具有许多零条目。这个高维空间称为嵌入空间。
具有相似含义或在相似上下文中使用的单词被分配了相似的向量,这意味着它们在嵌入空间中彼此靠近。例如,“茶”和“咖啡”是相似的词,它们在空间中彼此靠近,而“茶”和“海”则相距较远,因为它们具有不同的含义,并且不经常一起使用,即使它们的拼写相似。
虽然在自然语言处理中创建词嵌入的方法有很多种,但它们都涉及对称为语料库的大量文本数据进行训练。语料库可以有所不同;维基百科和谷歌新闻是用于预训练嵌入语料库的两个常见示例。
语料库也可以是自定义嵌入层,它是专门为其他预训练语料库无法提供足够数据的情况而设计的。在训练过程中,模型会根据数据中单词的使用模式学习将每个单词与唯一的向量相关联。这些模型可用于将任何新文本数据中的单词转换为密集向量。
词嵌入是如何生成的?
可以使用多种技术生成词嵌入。选择技术取决于任务的具体要求。您必须考虑数据集的大小、数据的域和语言的复杂性。以下是一些更流行的词嵌入技术的工作原理
- Word2vec是一种基于两层神经网络的算法,它输入文本语料库并输出一组向量(因此得名)。一个常用的 Word2vec 示例是“国王 - 男人 + 女人 = 女王”。通过推断“国王”和“男人”之间以及“男人”和“女人”之间的关系,该算法可以识别出“女王”是与“国王”相对应的适当词。Word2vec 使用 Skip-Gram 或连续词袋 (CBOW) 算法进行训练。Skip-Gram 尝试从目标词预测上下文词。连续词袋的功能相反,它使用周围词的上下文来预测目标词。
- GloVe(全局向量)基于这样一种理念:一个词的含义可以从它与文本语料库中其他词的共现中推断出来。该算法创建一个共现矩阵,用于捕捉语料库中单词一起出现的频率。
- fasText 是 Word2vec 模型的扩展,它基于将单词表示为字符 n-gram(即子词单元)的词袋,而不是仅仅作为单个单词。fasText 使用类似于 Skip-Gram 的模型,捕捉有关单词内部结构的信息,帮助其处理新的和不熟悉的词汇。
- ELMo(来自语言模型的嵌入)不同于上述词嵌入,因为它使用深度神经网络来分析单词出现的整个上下文。这使得它能够捕捉到其他嵌入技术可能无法捕捉到的微妙的含义差异。
- TF-IDF(词频-逆文档频率)是一个数学值,通过将词频 (TF) 与逆文档频率 (IDF) 相乘来确定。TF 指的是目标词在文档中出现的次数与文档中总词数的比率。IDF 是总文档数与包含目标词的文档数之比的对数。
词嵌入的优势是什么?
与传统的自然语言处理中表示词语的方法相比,词嵌入具有几个优势。词嵌入已成为自然语言处理中的标准方法,有许多预先训练好的嵌入可用于各种应用。这种广泛的可用性使研究人员和开发人员更容易将它们纳入他们的模型中,而无需从头开始训练它们。
词嵌入已被用于改进语言建模,即预测文本序列中下一个词的任务。通过将词语表示为向量,模型可以更好地捕捉词语出现的上下文,并做出更准确的预测。
构建词嵌入比传统的工程技术更快,因为在大型文本数据语料库上训练神经网络的过程是无监督的,节省了时间和精力。一旦嵌入被训练好,它就可以作为各种自然语言处理任务的输入特征,而不需要额外的特征工程。
词嵌入的维数通常比独热编码向量低得多。这意味着它们需要更少的内存和计算资源来存储和操作。因为词嵌入是词语的密集向量表示,所以它比稀疏向量技术更有效地表示词语。这也使其能够更好地捕捉词语之间的语义关系。
词嵌入的缺点是什么?
虽然词嵌入有很多优点,但也有一些缺点值得考虑。
训练词嵌入的计算成本可能很高,尤其是在使用大型数据集或复杂模型时。预先训练好的嵌入也可能需要大量的存储空间,这对于资源有限的应用程序来说可能是一个问题。词嵌入是在有限的词汇表上训练的,这意味着它们可能无法表示不在该词汇表中的词语。对于词汇量大的语言或特定于应用程序的术语来说,这可能是一个问题。
如果词嵌入的数据输入包含偏差,则词嵌入可能会反映这些偏差。例如,词嵌入可以编码性别、种族或其他刻板印象方面的偏差,这可能会对它们在现实世界中的使用产生影响。
词嵌入通常被认为是一个黑盒子,因为它们的底层模型(如 GloVe 或 Word2Vec 的神经网络)很复杂,难以解释。
词嵌入的好坏取决于其训练数据。重要的是要确保数据足以让词嵌入在实践中使用。虽然词嵌入掌握了词语之间的一般关系,但它们可能会错过某些人类的细微差别,比如讽刺,这些细微差别更难识别。
因为词嵌入为每个词分配一个向量,所以它可能难以处理同形异义词,即拼写相同但含义不同的词。(例如,"park" 一词,可以指户外空间,也可以指停车。)