【自然语言处理】(1) --语言转换方法

文章目录

  • 语言转换方法
    • 一、统计语言模型
      • 1. 词向量转换
      • 2. 统计模型问题
    • 二、神经语言模型
      • 1. 词向量化
      • 2. 维度灾难
      • 3. 解决维度灾难
      • 4. embedding词嵌入
      • 5. Word2Vec技术
        • 5.1 连续词袋模型(CBOW)
        • 5.2 跳字模型(Skip-gram)
  • 总结

语言转换方法

在自然语言处理中,语言转换方法由两个模型:

  1. 统计语言模型
  2. 神经语言模型

一、统计语言模型

在自然语言处理(NLP, Natural Language Processing)中,统计语言模型(Statistical Language Model, SM)是一种基于统计学的方法,用于描述和预测自然语言文本中的词汇或句子出现的概率。这种方法通过分析大量文本数据,学习词汇和句子的概率分布,从而能够预测给定上下文的下一个词或子词。

1. 词向量转换

具体体现在机器学习中的词向量转换方法:

from sklearn.feature_extraction.text import CountVectorizertexts = ['dog cat fish','dog cat cat','fish bird','bird']
cont = []
cv = CountVectorizer(ngram_range=(1,3)) # 表示文本中连续出现的n个词,有哪些连续组合。
cv_fit = cv.fit_transform(texts) # 表示每个字符串中,是否有cv中的词,有标记为1,反之为。print(cv.get_feature_names_out())
print(cv_fit.toarray()) #参数

输出结果:

['bird' 'cat' 'cat cat' 'cat fish' 'dog' 'dog cat' 'dog cat cat''dog cat fish' 'fish' 'fish bird']
[[0 1 0 1 1 1 0 1 1 0][0 2 1 0 1 1 1 0 0 0][1 0 0 0 0 0 0 0 1 1][1 0 0 0 0 0 0 0 0 0]]

接着将词向量传进贝叶斯模型,计算概率,用以预测给定上下文的下一个词或子词。

2. 统计模型问题

  1. 由于参数空间的爆炸式增长,它无法处理【N(ngram_range)>3】的数据:

以上方的词向量转换方法为例,我们发现,若是我们的文本数量很多时,同时连续词的组合没有上限时,它的参数空间会很大很大,模型没有能力再处理了。

  1. 没有考虑词与词之间内在的联系性

例如,考虑"the cat is walking in the bedroom"这句话。如果我们在训练语料中看到了很多类似“the dog is walking in the bedroom”或是“the cat is running in the bedroom”这样的句子;那么,哪怕我们此前没有见过这句话"the cat is walking in the bedroom",也可以从“cat”和“dog”(“walking”和“running”)之间的相似性,推测出这句话的概率。

于是为了解决这些问题,我们提出了神经语言模型。

二、神经语言模型

1. 词向量化

在处理自然语言时,通常将词语或者字做向量化,例如one-hot编码,例如我们有一句话为:“我爱北京天安门”,我们分词后对其进行one-hot编码,结果可以是:

在这里插入图片描述

2. 维度灾难

如果需要对语料库中的每个字进行one-hot编码如何实现?

  1. 统计语料库中所有的词的个数,例如4960个词。
  2. 按顺序依次给每个词进行one-hot编码,例如第1个词为:[0,0,0,0,0,0,0,….,1],最后1个词为: [1,0,0,0,0,0,0,….,0]

这时,假使还是有句话“我爱北京天安门”,他们的编码就会变成:

在这里插入图片描述

如此编码的话,它的编码维度会非常的高,矩阵为非常稀疏,出现维度灾难。训练时维度堆积,随着维度的增加,计算复杂度也显著增加。

维度灾难(Curse of Dimensionality)是一个在数据分析、机器学习和统计学中广泛讨论的概念。它描述的是当数据集的维度(即特征或变量的数量)增加时,数据分析和模型的复杂性急剧上升,导致一系列问题和挑战。

3. 解决维度灾难

  • 通过神经网络训练,将每个词都映射到一个较短的词向量上来。将高维映射到低维。

比如一个西瓜,它包含的特征有:可以吃的、圆的、绿色的、红色果肉等等;

再比如一个篮球,他办函的特征有:不能吃、圆的、褐色的、运动等等;

我们将它们的特征(假设300个),300个特征是可以能够描述出一个物体的,都放进神经网络训练,经过归一化的处理,维度中的数字就变成浮点数了。我们用这些浮点数来代表该物体,将维度变为300。

在这里插入图片描述

具体再比如之前的“我爱北京天安门”,放进神经网络模型训练后数据为:

在这里插入图片描述

与之前的维度对比,从4960到300,大大减小了特征维度,从而解决唯独灾难问题。

4. embedding词嵌入

Embedding(嵌入)是一种将高维空间中的对象(如单词、短语、句子等)映射到低维、稠密、连续的向量空间中的技术。在NLP中,Word Embedding(词嵌入)是最常见的嵌入类型,它将词汇表中的每个单词映射到一个固定大小的向量。

词嵌入通过训练神经网络模型(如Word2Vec、GloVe、FastText等)在大量文本数据上学习得到每个单词的向量表示。这些向量能够捕捉单词之间的语义关系,使得在向量空间中相似的单词(如“猫”和“狗”)具有相近的表示,而不相关的单词则具有较远的距离。

tText等)在大量文本数据上学习得到每个单词的向量表示。这些向量能够捕捉单词之间的语义关系,使得在向量空间中相似的单词(如“猫”和“狗”)具有相近的表示,而不相关的单词则具有较远的距离。

5. Word2Vec技术

Word2Vec是一种用于自然语言处理(NLP)的技术,特别是在将词汇或短语从词汇表映射到向量的实数空间方面表现出色。这种映射使得相似的词在向量空间中具有较近的距离,从而捕捉到了词汇之间的语义和句法关系。Word2Vec技术是由Google的研究人员Tomas Mikolov等人在2013年提出的,它主要包括两种训练模型:连续词袋模型(CBOW)跳字模型(Skip-gram)

在这里插入图片描述

5.1 连续词袋模型(CBOW)
  • 模型结构

在这里插入图片描述

  • 模型训练过程
  1. 当前词的上下文词语的one-hot编码输入到输入层。
  2. 这些词分别乘以同一个矩阵WVN后分别得到各自的1N 向量。
  3. 将多个这些1 * N 向量取平均为一个1 * N 向量。
  4. 将这个1 * N 向量乘矩阵 W’V * N ,变成一个1 * V 向量。
  5. 将1 * V 向量softmax归一化后输出取每个词的概率向量1 * V。
  6. 将概率值最大的数对应的词作为预测词。
  7. 将预测的结果1 * V 向量和真实标签1 * V 向量(真实标签中的V个值中有一个是1,其他是0)计算误差。
  8. 在每次前向传播之后反向传播误差,不断调整 WV * N和 W’V * N矩阵的值。

那么,低维度的词是在哪里体现的呢?

在这里插入图片描述

假定语料库中一共有4960个词,则词编码为4960个01组合现在压缩为300维:

在这里插入图片描述

如此,便将它特征压缩了,从而将词汇或短语从词汇表映射到向量的实数空间。

5.2 跳字模型(Skip-gram)

Skip-gram模型的核心思想是从一个给定的中心单词出发,预测它周围的上下文单词。

  • 模型结构

在这里插入图片描述

  • 训练过程
  1. 数据预处理:将原始文本转换为序列数据,其中每个词用其对应的整数索引代替。
  2. 生成训练样本:通过滑动窗口在文本数据上滑动,每次滑动都会生成一个训练样本,包括一个中心词和一系列上下文单词。假设给定一个窗口大小为k,对于每个中心词,可以将其前后各k个词作为上下文。
  3. 前向传播:在每次训练中,Skip-gram模型计算中心词的词向量与隐藏层权重的乘积,得到隐藏层的输出。然后,将隐藏层的输出与输出层的权重矩阵相乘,再通过softmax函数,得到与上下文词对应的概率分布,即预测结果。
  4. 损失函数与优化:模型的优化目标是最大化预测结果的概率。训练过程中,Skip-gram模型通过反向传播和梯度下降算法来更新词向量和神经网络的参数。在每次迭代更新中,通过最小化损失函数来优化模型的参数。常用的损失函数包括交叉熵(cross-entropy)和负对数似然(negative log-likelihood)。这些损失函数用于比较预测结果与实际输出之间的差异,将差异通过梯度下降反向传播到网络的所有层,以优化各个参数。
  • 应用

Skip-gram模型生成的词向量在自然语言处理任务中有着广泛的应用,如词义相似度计算情感分析文本分类命名实体识别等。通过将单词表示为连续的向量空间中的点,Skip-gram模型为这些任务提供了一个更加有效和灵活的输入表示方式。

总结

本篇介绍了自然语言处理中,语言转换方法的两个模型:

  1. 统计语言模型:用于描述和预测自然语言文本中的词汇或句子出现的概率,但是没办法考虑词与词之间内在的联系且参数空间会出现爆炸式增长的问题。
  2. 神经语言模型:通过神经网络训练,将每个词都映射到一个较短的词向量上来。将高维映射到低维。通过embedding词嵌入技术捕捉词句之间的语义。
  3. embedding词嵌入技术,有两个模型连续词袋模型(CBOW)跳字模型(Skip-gram),用来捕捉到了词汇之间的语义和句法关系

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ssh-xorg】SSH远程配置X11窗口回传

前言 我们通常在进行远程配置板端的时候往往会出现一个问题,在不连接显示屏或者启用VNC服务的前提下(或者使用其他软件提供的功能),我们无法在远程终端看到板端的新窗口,本文提供一种方式,在进行ssh远程连接时候制定参数-CX&…

【大数据】Doris 数据库与表操作语法实战详解

目录 一、前言 二、数据库基本操作 2.1 修改账户密码 2.2 创建新用户 2.3 创建数据库与账户授权 2.3.1 数据库创建补充说明 2.3.2 数据库账户赋权 三、数据表基本操作 3.1 Doris 数据表介绍与使用 3.1.1 建表结构说明 3.1.2 建表语法与操作 3.1.3 建表示例 - 单分区…

探索大型语言模型在文化常识方面的理解能力与局限性

介绍 论文地址:https://arxiv.org/pdf/2405.04655v1 近年来,大型语言模型(LLM)不仅被广泛应用于各个领域,而且通过大量的基准评估,证明它们能够理解人类所拥有的常识(Commonsense)…

pdf怎么编辑修改内容?详细介绍6款pdf编辑器功能

■ pdf怎么编辑修改内容? PDF(Portable Document Format)作为一种广泛使用的文件格式,具有特点包括兼容性强、易于传输、文件安全性高、跨平台性、可读性强、完整性、可搜索性、安全性、可压缩性。 PDF文件本身是不可以直接进行编…

深度学习--------------------------------门控循环单元GRU

目录 门候选隐状态隐状态门控循环单元GRU从零开始实现代码初始化模型参数定义隐藏状态的初始化函数定义门控循环单元模型训练该部分总代码简洁代码实现 做RNN的时候处理不了太长的序列,这是因为把整个序列信息全部放在隐藏状态里面,当时间很长的话&#…

jmeter操作数据库

jmeter操作数据库 一、打开数据库 二、jmeter下载驱动,安装jdbc驱动 1、下载好的驱动包 2、将驱动包复制粘贴 存放在包的路径下 (1)jdk下面 a、路径:jdk1\jre\lib b、jdk1\jre\lib\ext (2)jmeter下 a、…

SpringIoC容器的初识

一、SpringIoC容器的介绍 Spring IoC 容器,负责实例化、配置和组装 bean(组件)。容器通过读取配置元数据来获取有关要实例化、配置和组装组件的指令。配置元数据以 XML、Java 注解或 Java 代码形式表现。它允许表达组成应用程序的组件以及这…

基于依赖注入技术的.net core WebApi框架创建实例

依赖注入(Dependency Injection, DI)是一种软件设计模式,用于实现控制反转(Inversion of Control, IoC)。在ASP.NET Core中,依赖注入是内置的核心功能之一。它允许你将应用程序的组件解耦和配置&#xff0c…

Linux:进程入门(进程与程序的区别,进程的标识符,fork函数创建多进程)

往期文章:《Linux:深入了解冯诺依曼结构与操作系统》 Linux:深入理解冯诺依曼结构与操作系统-CSDN博客 目录 1. 概念 2. 描述进程 3. 深入理解进程的本质 4. 进程PID 4.1 指令获取PID 4.2 geipid函数获取PID 4.3 kill指令终止进程 …

Linux驱动开发(速记版)--GPIO子系统

第105章 GPIO 入门 105.1 GPIO 引脚分布 RK3568 有 5 组 GPIO:GPIO0 到 GPIO4。 每组 GPIO 又以 A0 到 A7,B0 到 B7,C0 到C7,D0 到 D7,作为区分的编号。 所以 RK3568 上的 GPIO 是不是应该有 5*4*8160 个呢&#xff1…

MySQL高阶2004-职员招聘人数

目录 题目 准备数据 分析数据 实现 题目 一家公司想雇佣新员工。公司的工资预算是 70000 美元。公司的招聘标准是: 雇佣最多的高级员工。在雇佣最多的高级员工后,使用剩余预算雇佣最多的初级员工。 编写一个SQL查询,查找根据上述标准雇…

男单新老对决:林诗栋VS马龙,巅峰之战

听闻了那场激动人心的新老对决,不禁让人热血沸腾。在这场乒乓球的巅峰之战中,林诗栋与马龙的对决无疑是一场视觉与技术的盛宴。 3:3的决胜局,两位选手的每一次挥拍都充满了策略与智慧,他们的每一次得分都让人心跳加速。 林诗栋&am…

Linux自动化构建工具Make/Makefile

make是一个命令 makefile是一个文件 touch 创建并用vim打开makefile 写入依赖对象和依赖方法 mycode是目标文件 第二行数依赖方法 以tab键开头 make makefile原理 makefile中写的是依赖关系和依赖方法 clean英语清理文件 后不用加源文件。.PHONY定义clean是伪目标。 make只…

动态SLAM总结二

文章目录 Mapping the Static Parts of Dynamic Scenes from 3D LiDAR Point Clouds Exploiting Ground Segmentation:(2021)RF-LIO:(2022)RH-Map:(2023)Mapless Online …

[C++]使用纯opencv部署yolov11-pose姿态估计onnx模型

【算法介绍】 使用纯OpenCV部署YOLOv11-Pose姿态估计ONNX模型是一项具有挑战性的任务,因为YOLOv11通常是用PyTorch等深度学习框架实现的,而OpenCV本身并不直接支持加载和运行PyTorch模型。然而,可以通过一些间接的方法来实现这一目标&#x…

POLYGON Nature - Low Poly 3D Art by Synty 树木植物

一个低多边形资源包,包含可以添加到现有多边形风格游戏中的树木、植物、地形、岩石、道具和特效 FX 资源。 为 POLYGON 系列提供混合样式树这一新增功能。弥合 POLYGON 与更传统的层级资源之间的差距。还提供了一组经典的 POLYGON 风格的树木和植被以满足你的需求。 该包还附带…

系统安全 - Linux /Docker 安全模型及实践

文章目录 导图Linux安全Linux 安全模型用户层权限管理的细节多用户环境中的权限管理文件权限与目录权限 最小权限原则的应用Linux 系统中的认证、授权和审计机制认证机制授权机制审计机制 小结 内网安全Docker安全1. Docker 服务隔离机制Namespace 机制Capabilities 机制CGroup…

JavaWeb - 8 - 请求响应 分层解耦

请求响应 请求(HttpServletRequest):获取请求数据 响应(HttpServletResponse):设置响应数据 BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程…

Oracle中MONTHS_BETWEEN()函数详解

文章目录 前言一、MONTHS_BETWEEN()的语法二、主要用途三、测试用例总结 前言 在Oracle数据库中,MONTHS_BETWEEN()函数可以用来计算两个日期之间的月份差。它返回一个浮点数,表示两个日期之间的整月数。 一、MONTHS_BETWEEN()的语法 MONTHS_BETWEEN(dat…

水下声呐数据集,带标注

水下声呐数据集,带标注 水下声呐数据集 数据集名称 水下声呐数据集 (Underwater Sonar Dataset) 数据集概述 本数据集是一个专门用于训练和评估水下目标检测与分类模型的数据集。数据集包含大量的水下声呐图像,每张图像都经过专业标注,标明…