【自然语言处理】(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 CountVectorizer

texts = ['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),用来捕捉到了词汇之间的语义和句法关系

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

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

相关文章

Vue3中使用axios

Promise介绍 同步代码与异步代码 安装并引入axios npm install axios 此时package.json里面就多了axios依赖 引入axios 获取数据 Axios GET参数构成:axios.get(url,{config{},…{}…}) url: 字符串:目标服务器的地址,如 https://api.examp…

需求6:如何写一个后端接口?

这两天一直在对之前做的工作做梳理总结,不过前两天我都是在总结一些bug的问题。尽管有些bug问题我还没写文章,但是,我今天不得不先停下对bug的总结了。因为在国庆之后,我需要自己开发一个IT资产管理的功能,这个功能需要…

【Redis】如何在 Ubuntu 上安装 Redis 5

🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 本期内容主要介绍如何在 Ubuntu 上安装 Redis5 一些碎碎念: 本来这期内容介绍如何在 Centos 安装 Redis …

区块链可投会议CCF C--CT-RSA 2025 截止10.15 附2024录用率

Conference:The Cryptographers Track at RSA Conference (CT-RSA) CCF level:CCF C Categories:network and information security Year:2025 Conference time:San Francisco, California, USA • April 28–May …

.NET开源跨平台桌面和移动应用的统一框架 - Eto.Forms

前言 今天大姚给大家分享一个.NET开源、跨平台桌面和移动应用的统一框架:Eto.Forms。 项目介绍 Eto.Forms是一个.NET开源、跨平台的桌面和移动应用的统一框架,该框架允许开发者使用单一的UI代码库构建在多个平台上运行的应用程序,并利用各…

嵌入式C语言自我修养:编译链接

源文件生成可执行文件的过程? 源文件经过预处理、编译、汇编、链接生成一个可执行的目标文件。 编译器驱动程序,包括预处理器、编译器、汇编器和链接器。Linux用户可以调用GCC驱动程序来完成整个编译流程。 使用GCC驱动程序将示例程序从ASCII码源文件转换…

数字图像处理:边缘检测

数字图像处理:边缘检测 笔记来源: 1.Gradient and Laplacian Filter, Difference of Gaussians (DOG) 1.1 图像一阶梯度 水平方向的一阶导数 一阶导数滤波器在实际应用中难实现的原因 图像梯度中,一阶梯度中找局部极大值就是边缘所在处&a…

SOCKS5代理和HTTP代理哪个快?深度解析两者的速度差异

在现代互联网环境中,使用代理IP已经成为了许多人日常生活和工作的必备工具。无论是为了保护隐私,还是为了访问某些特定资源,代理IP都扮演着重要的角色。今天,我们就来聊聊SOCKS5代理和HTTP代理,看看这两者到底哪个更快…

netty编程之实现websocket客户端并发送二进制消息

写在前面 源码。 本文看下netty如何实现websocket客户端并发送二进制消息。 ws的server端参考这篇文章。 1:正文 抽象类AbstractWebsocketClient定义了发送二进制数据的方法: public abstract class AbstractWebsocketClient implements Closeable {…

向量数据库|第1期|从零开始学习

向量数据库|第1期|从零开始学习 1、向量数据库中的基本概念 1.1 什么是余弦 余弦函数是一种三角函数,在直角三角形中,某个锐角的余弦为:临边与斜边的比值,如下图cosAb/c。引申到任意三角形中,即余弦定理:…

大数据-151 Apache Druid 集群模式 配置启动【上篇】 超详细!

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

数据结构--二叉树的顺序实现(堆实现)

引言 在计算机科学中,二叉树是一种重要的数据结构,广泛应用于各种算法和程序设计中。本文将探讨二叉树的顺序实现,特别是堆的实现方式。 一、树 1.1树的概念与结构 树是⼀种⾮线性的数据结构,它是由 n(n>0) 个有限结点组成…

【C++打怪之路Lv6】-- 内存管理

🌈 个人主页:白子寰 🔥 分类专栏:C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您的订阅和支持~ 💡 坚持创作博文(平均质量分82)&#…

15分钟学 Python 第36天 :Python 爬虫入门(二)

Python 爬虫入门:环境准备 在进行Python爬虫的学习和实践之前,首先需要准备好合适的开发环境。本节将详细介绍Python环境的安装、必要库的配置、以及常用工具的使用,为后续的爬虫编写奠定坚实的基础。 1. 环境准备概述 1.1 为什么环境准备…

基于Springboot投稿和稿件处理系统设计与实现

博主介绍:专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的…

数据集-目标检测系列- 货船 检测数据集 freighter>> DataBall

数据集-目标检测系列- 货船 检测数据集 freighter>> DataBall 数据集-目标检测系列- 货船 检测数据集 freighter>> DataBall 数据量:3k 想要进一步了解,请联系。 DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种…

订阅ROS2中相机的相关话题并保存RGB、深度和点云图

系统:Ubuntu22.04 ROS2版本:ROS2 humble 1.订阅ROS2中相机的相关话题并保存RGB图、深度图和点云图 ros2 topic list/stellar_1/rgb/image_raw /camera/depth/image_raw /stellar_1/points2CMakeLists.txt cmake_minimum_required(VERSION 3.15) projec…

建筑资质的未来发展趋势

🏗️建筑资质是建筑企业进入市场的通行证,它不仅关系到企业的竞争力,也影响着整个建筑行业的健康发展。随着政策的调整和技术的进步,建筑资质管理正面临着新的变革。 1. 资质管理的数字化转型:🌐 随着信息技…

Gaussian-splatting 项目环境配置笔记(Win11)

如果你是配置别的项目的过程中用到了3D GS相关的内容,然后这部分内容环境一直配不好,也可以跟随这个博客配一下环境,配完后起码3D GS部分就搞定了。 文章目录 概述项目链接:VS2019直接下载链接CUDA不同版本下载链接安装Condasetup…

63.5 注意力提示_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录注意力提示生物学中的注意力提示查询、键和值注意力的可视化使用 show_heatmaps 显示注意力权重代码示例 代码解析结果 小结练习 注意力提示 🏷sec_attention-cues 感谢读者对本书的关注,因为读者的注意力是一种稀缺…