几种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

img

五、大模型面试题大全

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/890182.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

有了WPF后Winform还有活路吗?

近年来,随着技术的不断发展,Windows Presentation Foundation(WPF)和Windows Forms(WinForms)这两种技术在开发桌面应用程序方面一直备受关注。虽然WPF以其强大的功能和灵活性吸引了众多开发者,…

快速上手C语言【上】(非常详细!!!)

目录 1. 基本数据类型 2. 变量 2.1 定义格式 和 命名规范 2.2 格式化输入和输出(scanf 和 printf) ​编辑 2.3 作用域和生命周期 3. 常量 4. 字符串转义字符注释 5. 操作符 5.1 双目操作符 5.1.1 算数操作符 5.1.2 移位操作符 5.1.3 位操作符…

架构设计笔记-7-系统架构设计基础知识

目录 知识要点 单选 案例分析 1.质量属性 / 管道过滤器 / 数据仓库风格 2.面向对象风格 / 控制环路风格 3.软件架构风格 / 架构风格选择 4.体系结构方案对比 5.面向对象风格 / 基于规则风格 6.解释器风格 / 管道过滤器风格 7.面向对象风格 / 解释器风格 8.软件架构复…

【宝可梦】游戏

pokemmo https://pokemmo.com/zh/ 写在最后:若本文章对您有帮助,请点个赞啦 ٩(๑•̀ω•́๑)۶

OpenCV 环境配置

首先下载opencv,在opencv官网进行下载。 按照上面的步骤,点击进去 滑至底部,不切换至不同页,选择合适的版本进行下载(Window系统选择Windows版本进行下载)。 接下来以4.1.2版本为例: 点击之后会进入这个页面&#xff…

linux源码安装slurm以及mung和openssl

一、源码安装munge 1、编译安装munge (1)下载munge地址:https://github.com/dun/munge/releases (2)解压编译安装: 1 2 3 4 5 6 7 8 创建/data目录 复制文件munge-0.5.15.tar.xz 到/data目录下 tar -Jx…

闭着眼学机器学习——朴素贝叶斯分类

引言: 在正文开始之前,首先给大家介绍一个不错的人工智能学习教程:https://www.captainbed.cn/bbs。其中包含了机器学习、深度学习、强化学习等系列教程,感兴趣的读者可以自行查阅。 1. 算法介绍 朴素贝叶斯是一种基于贝叶斯定理…

C# 屏幕录制工具

屏幕录制工具 开发语音:C# vb.net 下载地址:https://download.csdn.net/download/polloo2012/89879996 功能:屏幕录制,声卡采集,麦克风采集。 屏幕录制:录制屏幕所有操作,并转换视频格式&…

uniapp-小程序开发0-1笔记大全

uniapp官网: https://uniapp.dcloud.net.cn/tutorial/syntax-js.html uniapp插件市场: https://ext.dcloud.net.cn/ uviewui类库: https://www.uviewui.com/ 柱状、扇形、仪表盘库: https://www.ucharts.cn/v2/#/ CSS样式&…

Springboot 接入 WebSocket 实战

Springboot 接入 WebSocket 实战 前言: WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。 简单理解: 1,常见开发过程中我们知道 Http协议,客户端…

详解安卓和IOS的唤起APP的机制,包括第三方平台的唤起方法比如微信

网页唤起APP是一种常见的跨平台交互方式,它允许用户从网页直接跳转到移动应用程序。 这种技术广泛应用于各种场景,比如让用户在浏览器中点击链接后直接打开某个应用,或者从网页引导用户下载安装应用。实现这一功能主要依赖于URL Scheme、Univ…

QD1-P21-P22 CSS 基础语法、注释、使用方法

本节学习:CSS 基础语法和注释,以及如何使用CSS定义的样式。 本节视频 https://www.bilibili.com/video/BV1n64y1U7oj?p21 CSS 基本语法 CSS(层叠样式表)的基本语法相对简单,由选择器和一组包含在花括号 {}​ 中的声…

深入Postman- 自动化篇

前言 在前两篇博文《Postman使用 - 基础篇》《玩转Postman:进阶篇》中,我们介绍了 Postman 作为一款专业接口测试工具在接口测试中的主要用法以及它强大的变量、脚本功能,给测试工作人员完成接口的手工测试带来了极大的便利。其实在自动化测试上,Postman 也能进行良好的支…

【Adobe全家桶】 Adobe 全家桶 AE AU PR ME WIN MAC 各个版本

话不多说今天直接分享 Adobe 全家桶,2017-2024版本 包含 window版本 和MAC版本 Adobe Photoshop 2017-2023 CS5-6 mac版本下载地址 WIN版本下载地址 Adobe After Effects 2017-2024 CS5-6 WIN版本下载地址 mac版本下载地址 Adobe Media Encoder 2017-2024 WIN版…

OceanBase + DolphinScheduler,搭建分布式大数据调度平台的实践

本文整理自白鲸开源联合创始人,Apache DolphinScheduler PMC Chair,Apache Foundation Member 代立冬的演讲。主要介绍了DolphinScheduler及其架构、DolphinScheduler与OceanBase 的联合大数据方案。 DolphinScheduler是什么? Apache Dolphi…

AOT漫谈专题(第二篇): 如何对C# AOT轻量级APM监控

一:背景 1. 讲故事 上一篇我们聊到了如何调试.NET Native AOT 程序,这是研究一个未知领域知识的入口,这篇我们再来看下如何对 Native AOT 程序进行轻量级的APM监控,当然这里的轻量级更多的是对 AOT 中的coreclr内容的挖掘。 二…

工业物联网关-ModbusTCP

Modbus-TCP模式把网关视作Modbus从端设备,主端设备可以通过Modbus-TCP协议访问网关上所有终端设备。用户可以自定义多条通道,每条通道可以配置为TCP Server或者TCP Slave。注意,该模式需要指定采集通道,采集通道可以是串口和网口通…

linux 下 verilog 简明开发环境附简单实例

author: hjjdebug date: 2024年 10月 12日 星期六 10:34:13 CST descripton: linux 下 verilog 简明开发环境附简单实例 甲: 安装软件 1. sudo apt install iverilog 该包verilog 源代码的编译器iverilog,其输出是可执行的仿真文件格式vvp格式 它可以检查源代码中…

跟踪一切学习笔记2024

目录 Track-Anything 多目标跟踪分割 masa 多目标检测跟踪: omnimotion iKUN Track-Anything 交互式,选择多个要跟踪的物体,最后是分割 多目标跟踪分割 https://github.com/gaomingqi/Track-Anything masa 多目标检测跟踪:

单臂路由实现vlan间互访

划分vlan 可以隔离广播域,但vlan 之间无法通信。既能隔离广播域,防止广播风暴的发生,又能实现vlan 之间的通信,就需要用到网络层的路由器,可以通过路由器,以单臂路由的方式来实现vlan 之间的通信。 以下是在神州交换机和路由器上实现单臂路由实现 VLAN 间互访的配置代码示…