自然语言处理与词嵌入

news2024/11/28 8:52:09

1、词表特征

前面介绍过表征单词的方式是首先建立一个较大的词汇表(例如10000),然后使用one-hot的方式对每个单词进行编码。例如单词Man,Woman,King,Queen,Apple,Orange分别出现在词汇表的第5391,9853,4914,7157,456,6257的位置,则它们分别用O5391,O9853,O4914,O7157,O456,O6257表示

这中one-hot表征单词的方法最大的缺点就是每个单词都是独立的、正交的,无法知道不同单词之间的相似程度。例如Apple和Orange都是水果,词性相近,但是单从one-hot编码上来看,内积为零,无法知道二者的相似性。在NLP中,我们更希望能掌握不同单词之间的相似程度

因此,我们可以使用特征表征(Featurized representation)的方法对每个单词进行编码。也就是使用一个特征向量表征单词,特征向量的每个元素都是对该单词某一特征的量化描述,量化范围可以是[-1,1]之间。特征表征的例子如下图所示:

这里写图片描述

特征向量的长度依情况而定,特征元素越多则对单词表征得越全面。这里的特征向量长度设定为300。使用特征表征之后,词汇表中的每个单词都可以使用对应的300 x 1的向量来表示,该向量的每个元素表示该单词对应的某个特征值。每个单词用e+词汇表索引的方式标记,例如e5391,e9853,e4914,e7157,e456,e6257

这种特征表征的优点是根据特征向量能清晰知道不同单词之间的相似程度,例如Apple和Orange之间的相似度较高,很可能属于同一类别。这种单词“类别”化的方式,大大提高了有限词汇量的泛化能力。这种特征化单词的操作被称为Word Embeddings,即单词嵌入

词嵌入(Word Embedding)是自然语言处理(NLP)中的一种技术,用于将单词或短语映射到连续的向量空间中。它能够将文本中的单词表示为密集的低维向量,捕捉到单词之间的语义和语法关系。通过词嵌入,计算机可以更好地理解和处理自然语言。 词嵌入的目的是将离散的符号(单词)转换为连续的向量表示。在这种连续的向量空间中,词嵌入能够捕捉到语义相似性,即语义相似的单词在向量空间中的距离较近。例如,"king"和"queen"在语义上更相似,因此在词嵌入向量空间中,它们的向量表示也会更接近

值得一提的是,这里特征向量的每个特征元素含义是具体的,对应到实际特征,例如性别、年龄等。而在实际应用中,特征向量很多特征元素并不一定对应到有物理意义的特征,是比较抽象的。但是,这并不影响对每个单词的有效表征,同样能比较不同单词之间的相似性

每个单词都由高维特征向量表征,为了可视化不同单词之间的相似性,可以使用降维操作,例如t-SNE算法,将300D降到2D平面上。如下图所示

这里写图片描述

 2、使用词嵌入

之前我们介绍过 命名实体 识别的例子,每个单词采用的是one-hot编码。如下图所示,因为“orange farmer”是份职业,很明显“Sally Johnson”是一个人名

这里写图片描述

如果采用 特征表征 对每个单词进行编码,再构建该RNN模型。对于一个新的句子:

Robert Lin is an apple farmer

由于这两个句子中,“apple”与“orange”特征向量很接近,很容易能判断出“Robert Lin”也是一个人名。这就是featurized representation的优点之一

可以看出,featurized representation(特征表征)的优点是可以减少训练样本的数目,前提是对海量单词建立特征向量表述(word embedding)。这样,即使训练样本不够多,测试时遇到陌生单词,例如“durian cultivator”,根据之前海量词汇特征向量就判断出“durian”(榴莲)也是一种水果,与“apple”类似,而“cultivator”与“farmer”也很相似。从而得到与“durian cultivator”对应的应该也是一个人名。这种做法将单词用不同的特征来表示,即使是训练样本中没有的单词,也可以根据word embedding(词嵌入)的结果得到与其词性相近的单词,从而得到与该单词相近的结果,有效减少了训练样本的数量

featurized representation的特性使得很多NLP任务能方便地进行迁移学习。方法是:

  • 从海量词汇库中学习word embeddings,即所有单词的特征向量。或者从网上下载预训练好的word embeddings
  • 使用较少的训练样本,将word embeddings迁移到新的任务中
  • (可选):继续使用新数据微调word embeddings
     

建议仅当训练样本足够大的时候,再进行上述第三步

有趣的是,word embeddings与Coursera吴恩达《卷积神经网络》课程笔记(4)– 人脸识别与神经风格迁移中介绍的人脸特征编码有很多相似性。人脸图片经过Siamese网络,得到其特征向量f(x),这点跟word embedding是类似的。二者不同的是Siamese网络输入的人脸图片可以是数据库之外的;而word embedding一般都是已建立的词汇库中的单词,非词汇库单词统一用< UNK >表示

3、词嵌入的特性

这里写图片描述

上例中,特征维度是4维的,分别是[Gender, Royal, Age, Food]。常识地,“Man”与“Woman”的关系类比于“King”与“Queen”的关系。而利用Word embeddings可以找到这样的对应类比关系 

将“Man”的embedding vector与“Woman”的embedding vector相减

类似地,我们将“King”的embedding vector与“Queen”的embedding vector相减

 相减结果表明,“Man”与“Woman”的主要区别是性别,“King”与“Queen”也是一样

一般地,A类比于B相当于C类比于“?”,这类问题可以使用embedding vector进行运算

 如上图所示,根据等式得 equeen = eking − eman + ewoman

关于相似函数,比较常用的表达式为Cosine similarity (余弦相似度),余弦相似度的取值范围在 -1 到 1 之间,值越接近 1 表示两个向量越相似,值越接近 -1 表示两个向量越不相似,值为 0 表示两个向量正交(无相似性)

 还可以计算Euclidian distance(欧氏距离)来比较相似性,即。距离越大,相似性越小

euclidean_distance(A, B) = sqrt( (x2 - x1)^2 + (y2 - y1)^2 + (z2 - z1)^2 + ... )

其中,(x1, y1, z1, ...) 表示点 A 的坐标,(x2, y2, z2, ...) 表示点 B 的坐标

4、嵌入矩阵

假设某个词汇库包含了10000个单词,每个单词包含的特征维度为300,那么表征所有单词的embedding matrix维度为300 x 10000,用 E 来表示。某单词w的one-hot向量表示为Ow
,维度为10000 x 1,则该单词的embedding vector表达式为

因此,只要知道了embedding matrix E,就能计算出所有单词的embedding vector ew。后面我们将重点介绍如何求出E

值得一提的是,上述这种矩阵乘积运算E⋅Ow效率并不高,矩阵维度很大,且Ow大部分元素为零。通常做法是直接从E中选取第w列作为ew即可

5、学习词嵌入

embedding matrix E可以通过构建自然语言模型,运用梯度下降算法得到。举个简单的例子,输入样本是下面这句话

I want a glass of orange (juice)

通过这句话的前6个单词,预测最后的单词“juice”。E未知待求,每个单词可用embedding vector ew表示。构建的神经网络模型结构如下图所示:

神经网络输入层包含6个embedding vactors,每个embedding vector维度是300,则输入层总共有1800个输入。Softmax层有10000个概率输出,与词汇表包含的单词数目一致。正确的输出label是“juice”。其中E,W[1],b[1],W[2],b[2],[1],[1],[2],[2]为待求值。对足够的训练例句样本,运用梯度下降算法,迭代优化,最终求出embedding matrix E

这种算法的效果还不错,能够保证具有相似属性单词的embedding vector相近

为了让神经网络输入层数目固定,可以选择只取预测单词的前4个单词作为输入,例如该句中只选择“a glass of orange”四个单词作为输入。当然,这里的4是超参数,可调。

一般地,我们把输入叫做context,输出叫做target。对应到上面这句话里:

context: a glass of orange

target: juice

关于context的选择有多种方法:

target前n个单词或后n个单词,n可调

target前1个单词

target附近某1个单词(Skip-Gram)

事实证明,不同的context选择方法都能计算出较准确的embedding matrix E

6. Word2Vec

上一小节我们介绍了context和target的选择方法,比较流行的是采用Skip-Gram模型。以下面这句话为例:

I want a glass of orange juice to go along with my cereal.

Skip-Gram模型的做法是:首先随机选择一个单词作为context,例如“orange”;然后使用一个宽度为5或10(自定义)的滑动窗,在context附近选择一个单词作为target,可以是“juice”、“glass”、“my”等等。最终得到了多个context—target对作为监督式学习样本
训练的过程是构建自然语言模型,经过softmax单元的输出为:

 

其中,θt为target对应的参数,ec为context的embedding vector,且ec=E⋅Oc。

相应的loss function为:

然后,运用梯度下降算法,迭代优化,最终得到embedding matrix E

然而,这种算法计算量大,影响运算速度。主要因为softmax输出单元为10000个,y^计算公式中包含了大量的求和运算。解决的办法之一是使用hierarchical softmax classifier,即树形分类器。其结构如下图所示:

 这种树形分类器是一种二分类。与之前的softmax分类器不同,它在每个数节点上对目标单词进行区间判断,最终定位到目标单词。这好比是猜数字游戏,数字范围0~100。我们可以先猜50,如果分类器给出目标数字比50大,则继续猜75,以此类推,每次从数据区间中部开始。这种树形分类器最多需要log N步就能找到目标单词,N为单词总数
 

实际应用中,对树形分类器做了一些改进。改进后的树形分类器是非对称的,通常选择把比较常用的单词放在树的顶层,而把不常用的单词放在树的底层。这样更能提高搜索速度

最后提一点,关于context的采样,需要注意的是如果使用均匀采样,那么一些常用的介词、冠词,例如the, of, a, and, to等出现的概率更大一些。但是,这些单词的embedding vectors通常不是我们最关心的,我们更关心例如orange, apple, juice等这些名词等。所以,实际应用中,一般不选择随机均匀采样的方式来选择context,而是使用其它算法来处理这类问题

Skip-Gram模型是Word2Vec的一种,Word2Vec的另外一种模型是CBOW(Continuous Bag of Words)
 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker数据管理和网络通信 dockerfile

Docker数据管理和网络通信 dockerfile 一&#xff1a;Docker 的数据管理1&#xff0e;数据卷2&#xff0e;数据卷容器 二&#xff1a;端口映射三&#xff1a;容器互联&#xff08;使用centos镜像&#xff09;四&#xff1a;Docker 镜像的创建1&#xff0e;基于现有镜像创建2&am…

C++入门先填坑

C是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库&#xff0c;以及编程范式等。熟悉C语言之后&#xff0c;对C学习也有一定的帮助。 C入门先填坑系列主要内容会围绕以下方面 补充C语言语法的不足&#xff0c;以及C是如何对C语言设计不…

servlet Filter与spring的OncePerRequestFilter

servlet 规范 javax.servlet Filter 任何的servlet容器都要实现的&#xff0c;例如tomcat、undertow、jetty等等。类似于jdbc规范&#xff0c;制定好了一个约束&#xff0c;各家数据库厂商根据规范开发对应的驱动来实现访问自己的数据库。 spring 对于Filter的自定义实现 所…

NLP(六十)Baichuan-13B-Chat模型使用体验

2023年7月11日&#xff0c;百川智能正式发布参数量130亿的通用大语言模型Baichuan-13B-Base、对话模型Baichuan-13B-Chat及其INT4/INT8两个量化版本。   本文将介绍大模型BaiChuan-13B-Chat的使用体验&#xff0c;其HuggingFace网址为&#xff1a;https://huggingface.co/bai…

【C语言day02】

转义字符 \\ 表示字符\&#xff0c;\123表示字符{&#xff0c;\t表示制表符&#xff0c;这些都是一个字符宏只是替换 替换后NUM的样子是(211)*21/2常量指针与指针常量 const和* 来区别&#xff0c;如果是const * 这样的顺序就是常量指针&#xff0c;所以说他的本质是指针&am…

uni-app:请求后端数据uni.request

完整代码&#xff1a; onLoad() {uni.request({url: getApp().globalData.position Produce/select_employee,data: {username: getApp().globalData.username,},method: POST,dataType: json,success: res > {this.employee_name res.data.info.employee_name;// consol…

uniapp 之 微信小程序、支付宝小程序 对于自定义导航栏的不同

目录 前言 微信小程序 代码 支付宝小程序 首页配置文件 二级菜单页面 配置 总结 不同 相同 前言 小程序都是 uni-app 写的 不是原生 微信小程序 代码 pages.json文件中配置 重点&#xff1a; "navigationStyle": "custom", // 导航栏样式…

安卓开发日记问题记录(隐藏标题栏中的应用名称)

当我们设置了显示标题栏&#xff0c;应用名也会显示出来&#xff0c;这对设置标题栏内容很不方便 可以在activity里的onCreate部分设置这句代码隐藏APP名字 getSupportActionBar().setDisplayShowTitleEnabled(false);或者改变它 getSupportActionBar().setTitle("new …

疲劳驾驶检测和识别1: 疲劳驾驶检测和识别数据集(含下载链接)

疲劳驾驶检测和识别1&#xff1a; 疲劳驾驶检测和识别数据集(含下载链接) 目录 疲劳驾驶检测和识别1&#xff1a; 疲劳驾驶检测和识别数据集(含下载链接) 1. 前言 2. 疲劳驾驶类别说明 3. 疲劳驾驶检测数据集&#xff1a; &#xff08;1&#xff09;Drowsy-Driving-Det1 …

hadoop安全保护机制(kerberos + ldap)

信息安全理论&#xff1a; CIA模型&#xff1a;机密性、完整性和可用性 CIA模型能够帮助建议一些信息安全原则&#xff0c;但该模型并不是一个需要严格遵守的规则 hadoop平台可能设计多个CIA模型组件&#xff0c;也kennel一个也不涉及 机密性&#xff1a; 信息只应该被期望的…

高压放大器的增益和偏压是什么意思

高压放大器是一种广泛应用的电子元器件&#xff0c;主要用于放大高压信号和驱动负载等方面。在实际应用中&#xff0c;了解高压放大器的增益和偏压是非常重要的&#xff0c;下面安泰电子将详细介绍它们的意义和作用。 高压放大器的增益 增益是指放大器输入信号与输出信号之间的…

iClient3D for CesiumWebGL入门之使用vscode以服务方式运行调试

作者&#xff1a;超图研究院技术支持中心-于丁 iClient3D for Cesium&WebGL入门之使用vscode以服务方式运行调试 相信大家第一次使用SuperMap iClient3D for Cesium或SuperMap iClient3D for WebGL的时候&#xff0c;都遇到过和我一样的事情&#xff1a; 在文件夹中直接打…

二极管钳位电路的原理与实际应用

写在前面 本文参考了什么是二极管钳位的作用及原理&#xff1f; - 知乎 针对一些文章讲述错误的地方进行了更正&#xff0c;在讲述不清楚的地方进行了详细的解释&#xff0c;还请各位两篇文章结合而看&#xff0c;效果更佳。 钳位电路说明 1.我们都知道二极管具有单向导电性&a…

【Ajax】笔记-Ajax重复发送请求

问题的产生 用户频繁地点击一个发送请求的按钮&#xff0c;服务器就会频繁地处理请求&#xff0c;而且处理的内容是一样的&#xff0c;这样会导致服务器的压力很大。 这种情况下服务器就没有必要处理每一个请求。 解决方案 发送请求的时候先查看有没有正在请求的相同请求&am…

docker - prometheus+grafana监控与集成到spring boot 服务

一、Prometheus 介绍 1.数据收集器&#xff0c;它以配置的时间间隔定期通过HTTP提取指标数据。 2.一个时间序列数据库&#xff0c;用于存储所有指标数据。 3.一个简单的用户界面&#xff0c;您可以在其中可视化&#xff0c;查询和监视所有指标。二、Grafana 介绍 Grafana 是一…

Android图形系统之ANativeWindow与Surface关系(十二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

Unity 之 错误的停止协程的方式

相信很多人都会这样开启一个协程 StartCoroutine(Cor_1()); 这样确实没啥毛病&#xff0c;那么怎么关掉这个协程呢&#xff0c;是不是在想也是一样的传cor_1()这个参数&#xff0c;然后start对应stop,试着输入stopCor....诶&#xff0c;代码提示有这个方法喔&#xff0c;然后…

【计算机网络】socket编程基础

文章目录 1. 源IP地址和目的IP地址2. 理解MAC地址和目的MAC地址3. 理解源端口号和目的端口号4. PORT与PID5. 认识TCP协议和UDP协议6. 网络字节序7. socket编程接口7.1 socket常见API7.2 sockaddr结构 1. 源IP地址和目的IP地址 因特网上的每台计算机都有一个唯一的IP地址&#…

windows命令之获取电脑已经连接过的wifi的密码

有时候想连接wifi不知道密码&#xff0c;恰巧电脑此时正连接着能用的wifi&#xff0c;想获取密码吗&#xff0c;使用下面这个指令&#xff1a;这个指令能获取历史连接的wifi的信息&#xff0c;密码也是之前连接的时候保存的密码&#xff0c;并不能获取某个wifi的正确密码 netsh…

Redis进阶(2)——Redis数据的持久化 CAP分布式理论(高可用性) Redis主从搭建 Redis的哨兵机制

目录 引出Redis数据的持久化RDB方式(redis database数据备份文件)RDB工作机制RDB优势和劣势RDB常用参数 AOF的方式&#xff08;命令追加&#xff09;AOF优缺点 Redis集群CAP理论 主从搭建(Master/Slave)主master的redis自定义docker静态网段创建文件上传redis.conf到conf文件夹…