几种Word Embedding技术详解

NLP 中的词嵌入是一个重要术语,用于以实值向量的形式表示用于文本分析的单词。这是 NLP 的一项进步,提高了计算机更好地理解基于文本的内容的能力。它被认为是深度学习在解决具有挑战性的自然语言处理问题方面最重要的突破之一。

在这种方法中,单词和文档以数字向量的形式表示,从而使相似的单词具有相似的向量表示。提取的特征被输入到机器学习模型中,以便处理文本数据并保留语义和句法信息。这些信息一旦以转换后的形式接收,就会被 NLP 算法使用,这些算法可以轻松消化这些学习到的表示并处理文本信息。

由于这项技术带来的好处,ML NLP 的受欢迎程度正在飙升,使其成为最选定领域由开发人员。

现在您已经对该主题有了基本的了解,让我们从头开始向您介绍词嵌入、其技术和应用。

什么是词嵌入?

词嵌入或词向量是我们用来表示文档和单词的一种方法。它被定义为一个数字向量输入,允许具有相似含义的单词具有相同的表示。它可以近似含义并在较低维空间中表示单词。这些可以比使用 WordNet 等图形嵌入的手工构建模型训练得更快。

例如,具有 50 个值的词嵌入可以表示 50 个独特特征。许多人选择预先训练的词嵌入模型,如 Flair、fastText、SpaCy 等。

我们将在文章中进一步讨论它。让我们通过一个示例来简要地了解它。

问题

给出一个监督学习任务,预测哪些推文与真实灾难有关,哪些不是(分类)。这里的独立变量是推文(文本),目标变量是二进制值(1:真实灾难,0:非真实灾难)。

现在,机器学习和深度学习算法只接受数字输入。那么,我们如何将推文转换为数值呢?我们将深入研究解决此类问题的技术,但首先让我们看看词嵌入提供的解决方案。

解决方案

NLP 中的词向量是一种将单个单词表示为低维空间中的实值向量并捕获单词间语义的技术。每个单词都由具有数十或数百维的实值向量表示。

词频-逆文档频率 (TF-IDF)

词频-逆文档频率是用于文本词向量化的机器学习算法,包含两个指标,即词频(TF)和逆文档频率(IDF)。

该算法采用统计测量来查找文本中的词语相关性,文本可以是单个文档的形式,也可以是称为语料库的各种文档的形式。

词频 (TF) 分数衡量的是特定文档中单词出现的频率。简单来说,就是统计文档中单词出现的次数。

逆文档频率或 IDF 分数衡量文本中单词的稀有性。它比词频分数更重要,因为尽管 TF 分数赋予频繁出现的单词更多权重,但 IDF 分数关注的是语料库中可能包含重要信息的罕见单词。

TF-IDF 算法可用于解决信息检索、停用词删除、关键词提取和基本文本分析等较简单的自然语言处理和机器学习问题。然而,它无法有效地捕捉序列中单词的语义。

现在让我们通过一个例子进一步理解它。我们将看到如何在 TF-IDF 中进行矢量化。

在这里插入图片描述

为了创建 TF-IDF 向量,我们使用 Scikit-learn 的 TF-IDF Vectorizer。将其应用于前 4 条示例推文后,我们获得 -

在这里插入图片描述

TfidfVectorizer 的输出

行表示每篇文档,列表示词汇表,通过上述公式得到tf-idf(i,j)的值,得到的这个矩阵可以和目标变量一起用来训练机器学习/深度学习模型。

现在让我们讨论两种不同的词嵌入方法。我们还将讨论实际操作部分!

词袋模型(BOW)

词袋是一种流行的文本词嵌入技术,其中向量中的每个值代表文档/句子中的单词数。换句话说,它从文本中提取特征。我们也称之为矢量化。

为了帮助您入门,下面介绍了如何创建 BOW。

  • 第一步,你必须将文本标记成句子。
  • 接下来,第一步标记化的句子有进一步标记化的单词。
  • 删除所有停用词或标点符号。
  • 然后,将所有单词转换为小写。
  • 最后,创建单词的频率分布图。

下面我们将在连续词选择袋中用适当的例子来讨论 BOW。

Word2Vec

Word2Vec 方法由 Google 于 2013 年开发。目前,我们将该技术用于所有高级自然语言处理(NLP) 问题。它是为了训练词嵌入而发明的,基于分布假设。

在这个假设中,它使用 skip-gram 或连续词袋(CBOW)。

这些基本上是浅层神经网络,具有输入层、输出层和投影层。它通过考虑单词在历史和未来的顺序来重建单词的语言上下文。

该方法涉及对文本语料库进行迭代以学习单词之间的关联。它依赖于一个假设,即文本中的相邻单词彼此具有语义相似性。它有助于将语义相似的单词映射到几何上接近的嵌入向量。

它使用余弦相似度度量来测量语义相似度。余弦相似度等于 Cos(角度),其中角度是在两个单词/文档的向量表示之间测量的。

  • 所以如果余弦角为 1,则表示单词重叠。
  • 如果余弦角是直角或者90°,则表示单词之间没有上下文相似性,是相互独立的。

总而言之,我们可以说这个度量标准为相同的板分配了相似的向量表示。

Word2Vec 的两种变体

Word2Vec 有两种基于神经网络的变体:连续词袋(CBOW)和 Skip-gram。

1. CBOW - 连续词袋变体包括神经网络模型所采用的各种输入。由此,它可以预测与作为输入的不同单词的上下文密切相关的目标单词。它是一种快速且很好的方法,可以为经常出现的单词找到更好的数字表示。让我们了解 CBOW 的上下文和当前单词的概念。

在这里插入图片描述

在 CBOW 中,我们定义一个窗口大小。中间的单词是当前单词,周围的单词(过去和未来的单词)是上下文。CBOW 利用上下文来预测当前单词。每个单词都使用定义的词汇表中的 One Hot Encoding 进行编码,然后发送到 CBOW 神经网络。

在这里插入图片描述

隐藏层是标准的全连接密集层。输出层根据词汇表生成目标词的概率。

正如我们之前讨论过的词袋(BOW)以及它也被称为矢量化器,我们将在这里举一个例子来进一步阐明它。

让我们从灾难推文中选取一小部分(4 条推文)来了解 BOW 的工作原理:-

“真可惜”,

“发誓果酱让世界燃烧”,

“发誓真正的车祸”,

“不幸的是,汽车着火了”

为了创建 BOW,我们使用 Scikit-learn 的 CountVectorizer,它可以对文本文档集合进行标记,构建已知单词的词汇表,并使用该词汇表对新文档进行编码。

在这里插入图片描述

CountVectorizer 的输出

这里的行代表每个文档(在我们的例子中为 4 个),列代表词汇表(所有文档中唯一的单词),值代表相应行的单词数。

同样,我们可以将 CountVectorizer 应用于完整的训练数据推文(11,370 篇文档),并获得一个矩阵,该矩阵可与目标变量一起用于训练机器学习/深度学习模型。

2. Skip-gram — Skip-gram 是一种与 CBOW 略有不同的词嵌入技术,因为它不根据上下文预测当前单词。相反,每个当前单词与连续投影层一起用作对数线性分类器的输入。这样,它可以预测当前单词前后一定范围内的单词。

这个变体只接受一个单词作为输入,然后预测与之密切相关的上下文单词。这就是它能够有效表示稀有词的原因。

在这里插入图片描述

Word2Vec(两种变体)的最终目标是学习隐藏层的权重。隐藏的结果将用作我们的词嵌入!现在让我们看看使用 Word2Vec 创建自定义词嵌入的代码-

Import Libraries
from gensim.models import Word2Vec
import nltk
import re
from nltk.corpus import stopwords


预处理文本

#Word2Vec inputs a corpus of documents split into constituent words.
corpus = []
for i in range(0,len(X)):
 tweet = re.sub(“[^a-zA-Z]”,” “,X[i])
 tweet = tweet.lower()
 tweet = tweet.split()
 corpus.append(tweet)


接下来是激动人心的部分!让我们尝试从推文中找出一些随机单词的最相似词(矢量表示) -
model.wv.most_similar(‘disaster’)

输出 -

在这里插入图片描述

单词元组列表及其预测概率
‘灾难’的嵌入向量 -

在这里插入图片描述
单词元组列表及其预测概率
‘灾难’的嵌入向量 -

在这里插入图片描述

维数 = 100

词袋模型和 TF-IDF 面临的挑战

现在让我们讨论一下迄今为止讨论过的两种文本矢量化技术所面临的挑战。

在 BOW 中,向量的大小等于词汇表中元素的数量。如果向量中的大多数值为零,则词袋将是一个稀疏矩阵。稀疏表示更难建模,这既出于计算原因,也出于信息原因。

此外,BOW 缺乏有意义的关系,也没有考虑单词的顺序。以下是此词嵌入技术的更多挑战。

  • 大量权重: 大量输入向量会为神经网络带来大量权重。
  • 没有有意义的关系或对词序的考虑: 词袋不考虑单词在句子或文本中出现的顺序。
  • 计算密集型: 重量越大,需要更多的计算来训练和预测。

TF-IDF模型虽然包含了比较重要的词语和不太重要的词语的信息,但是它并没有解决高维性和稀疏性的难题,而且与BOW不同,它也没有利用词语之间的语义相似性。

GloVe:用于词语表示的全局向量

NLP 中的GloVe 词嵌入方法由斯坦福大学的 Pennington 等人开发。它被称为全局向量,因为模型直接捕获了全局语料库统计数据。它在世界类比和命名实体识别问题中表现出色。

该技术降低了训练模型的计算成本,因为最小二乘成本或误差函数更简单,从而进一步产生了不同的、改进的词嵌入。它利用局部上下文窗口方法(如 Mikolov 的 skip-gram 模型)和全局矩阵分解方法来生成低维词表示。

潜在语义分析 (LSA) 是一种全局矩阵分解方法,它在世界类比方面表现不佳,但利用了指示次优向量空间结构的统计信息。

相反,Skip-gram 方法在类比任务上表现更好。然而,由于没有对全局共现计数进行训练,它没有充分利用语料库的统计数据。

因此,与使用局部上下文创建词向量的 Word2Vec 不同,GloVe 专注于全局上下文来创建词向量,这使其比 Word2Vec 更具优势。在 GloVe 中,单词之间的语义关系是使用共现矩阵获得的。

���虑两句话 -

我是一名数据科学爱好者

我正在寻找数据科学工作

对于上面的句子,GloVe 中涉及的共现矩阵如下所示 -

在这里插入图片描述

窗口大小 = 1

该矩阵中的每个值代表与行/列中相应单词共现的次数。请注意 - 该共现矩阵是使用全局单词共现计数(单词连续出现的次数;窗口大小=1)创建的。如果文本语料库有 1m 个唯一单词,则共现矩阵的形状为 1m x 1m。GloVe 背后的核心思想是,单词共现是模型“学习”单词表示的最重要统计信息。

现在让我们看一个斯坦福大学 GloVe 论文中的例子,了解共现概率比率在 GloVe 中的工作原理。“例如,考虑目标词 ice 和 steam 与词汇表中各种探测词的共现概率。以下是来自 60 亿词语料库的一些实际概率:”

在这里插入图片描述

这里,

在这里插入图片描述
假设 k = solid,即与 ice 相关但与 steam 无关的单词。预期的 Pik /Pjk 比率将很大。同样,对于与 steam 相关但与 ice 无关的单词 k,例如 k = gas,比率将很小。对于 water 或 fashion 等与 ice 和 steam 都相关或与两者都不相关的单词,比率应该约为 1。

与原始概率相比,概率比能够更好地区分相关词(固体和气体)和不相关词(时尚和水)。它还能够更好地区分两个相关词。因此,在 GloVe 中,词向量学习的起点是共现概率的比率,而不是概率本身。

在这里插入图片描述

理论讲得够多了。是时候写代码了!

导入库
导入 nltk
进口再
从 nltk.corpus 导入停用词
从手套导入 Corpus,手套
文本预处理
#GloVe 输入一个文档语料库,将其拆分成组成单词
语料库 = []
对于范围内的 i(0,len(X)):
 推文 = re.sub(“[^a-zA-Z]”,” “,X[i])
 推文 = 推文.lower()
 推文 = 推文.split()
 corpus.append(推文)
训练词向量
语料库 = 语料库()
语料库.fit(文本语料库,窗口 = 5)
手套 = 手套(无组件 = 100,学习率 = 0.05)
#no_components = 词嵌入的维数 = 100
glove.fit(corpus.matrix,epochs=100,no_threads=4,verbose=True)
glove.add_dictionary(语料库.词典)
查找最相似的 -
手套.most_similar(“风暴”,数字=10)


输出 -

在这里插入图片描述

单词元组列表及其预测概率

BERT(来自 transformer 的双向编码器表示)

这种基于自然语言处理 (NLP) 的语言算法属于称为transformers的类。它有两种变体,即包含 1.1 亿个参数的 BERT-Base 和具有 3.4 亿个参数的 BERT-Large。

它依靠注意力机制来生成具有语境的高质量世界嵌入。因此,当嵌入经过训练过程时,它们会通过每个 BERT 层,以便其注意力机制能够根据左侧单词和右侧单词捕捉单词关联。

与上面讨论的相比,这是一种先进的技术,因为它可以创建更好的词嵌入。这要归功于维基百科数据集和海量词库上的预趋势模型。通过微调嵌入,可以针对特定任务的数据集进一步改进此技术。

它在语言翻译任务中有着广泛的应用。

在这里插入图片描述

结论

词嵌入可以训练 GRU、LSTM 和 Transformers 等深度学习模型,这些模型在情绪分类、名称实体识别、语音识别等 NLP 任务中取得了成功。

这是一份最终回顾清单。

  • 词袋模型:从文本中提取特征
  • TF-IDF:信息检索,关键词提取
  • Word2Vec:语义分析任务
  • GloVe:词语类比、命名实体识别任务
  • BERT:语言翻译、问答系统

在这篇博客中,我们讨论了 NLP 中的两种向量化技术:词袋和 TF-IDF,它们的缺点,以及GloVe 和 Word2Vec 等词嵌入技术如何通过降维和上下文相似性克服其缺点。通过以上所述,您将更好地理解词嵌入如何使您的日常生活受益。

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值