【NLP 自然语言处理(一)---词向量】

文章目录

  • 什么是NLP自然语言处理
  • 发展历程
  • 自然语言处理模型
    • 模型能识别单词的方法
    • 词向量
      • 分词
    • 一个向量vector表示一个词
      • 词向量的表示-one-hot
      • 多维词嵌入word embeding
        • 词向量的训练方法 CBOW Skip-gram
        • 词嵌入的理论依据
    • 一个vector(向量)表示短语或者文章
      • vector space Model
      • bag-of-word
      • vector space Model + bag-of-word 实现信息搜索
      • 改进版 bag-of-word

本文关注NLP自然语言处理中的基础,词向量

什么是NLP自然语言处理

人工智能的重要突破点之一,就是自然语言处理,应用范围很广,下游任务包括词性分析、情感分析、生成对话等等。
在这里插入图片描述

发展历程

自然语言的处理经历了多个阶段,基于概率、统计等等,但是很难满足复杂的语言体系,直到最近基于深度学习模型的出现,才更好的解决了这个问题。

自然语言处理模型

目前流行的模型都是基于transformer架构的大模型,不去了解细节的话,transfomer是编码器加解码器。
简单理解:编码器用来处理输入,解码器用来输出。
现在比较出名的三大模型分支里全部都是由transformer演化出来,基于transformer的编码器BERT家族,基于解码器的GPT一支,还有一支是编码器和解码器都用了,比如google的T5模型,所以很多模型的简写里面都带了T,是因为都是transformer的变体。

所谓的模型****,大是指参数大,GPT-3就已经是1750亿的水平了,这些参数的训练已经不是普通中小玩家可以训练起来的水平了;
在这里插入图片描述
对于自然语言来说肯定是要处理句子和单词的,那么问题就来了,电脑或者说模型知道每个单词的意思么?

模型能识别单词的方法

在这里插入图片描述
计算知道单词的意思,就是需要知道 tree和flower相近, dog rabbit cat相近,run jump相近这样一种联系,那么模型可以做到么?
答案是虽然不了解每个词的具体含义,但是可以模拟出词之间的关系。

词向量

模型需要输入要么是一个词(字),或者是个短句或者整篇文章。比如翻译任务,模型的输入是一句话,如果文章摘要任务,模型的输入就是一篇文章。
第一种一个vector表示一个词,有两种方法,第一种 one-hot,也叫one-of-n-coding,是一个稀疏矩阵,第二种,叫词嵌入,是一个稠密矩阵。
第二种一个vector表示一个短句或者文章,方法vecbag-of-word。
下面会逐步介绍,无论那种方法,基本都需要先分词。

分词

分词方法很多,有现成的语料库可以实现分词,英文的NTLK,中文的结巴等等。你可能会觉得这个很简单,不就是简单分一下嘛!
实际上不然,分词包含很多细节。举个例子:
比如英文doing,英文的词汇表里只有do,那这种情况,通常又会分为子词,所以NLTK库分词后,经常会被分成do和 ##ing
再比如说输入错误的英文又该怎么处理,通常NLTK库也会留下部分词根,比如输入一个错的词doning,那么通常也会把部分词根分出来。 会分成do 和 ## ning。

所有的语料整理完毕后通常会形成一个语料库,类似于一个词典,保存分词

序号词汇
1a
2do
3apple

但很多语言没办法穷举所有对的词,所以一般词表中还会加一个特殊词"Other" ,来表示一种特殊的,不认识的词汇。
那转换后的分词如何表示呢?分为One -hot 和 多维词嵌入两种办法

一个向量vector表示一个词

词向量的表示-one-hot

比如词汇表有5个词,{apple, dog, do,this,cat}
那么apple的表示就是[1,0,0,0,0]
dog的表示就是[0,1,0,0,0]
do的表示就是[0,0,1,0,0]
this的表示就是[0,0,0,1,0]
cat的表示就是[0,0,0,0,1]

但这种表示方法浪费空间,且无法表示出不同词之间的联系

多维词嵌入word embeding

考虑一个文本预测问题:
比如输入“”这里有一只小" ,让模型预测下文,
模型的输出是每个单词的概率,大小词表的大小,概率最大的那个就是预测的下一个单词。

在这里插入图片描述

实际上,这这个模型输出不重要,重要的是网络模型中的第一层隐藏层的权重z1,z2,…zn,把这一层的权重z作为要预测词的w的向量,观察向量z,会发现,相近的词距离更近。
比如上面图中,确实表现出了tree和flower等相近的词距离更近,所以 词向量能够表达词之间的逻辑关系

在这里插入图片描述
这种逻辑关系有什么用呢? 当你问模型Rome的Italy 就相当于Berlin的? 的时候,电脑真正去做的事情是:
在这里插入图片描述
而这个的输出的Germany的概率最大

这种表示方法就是词嵌入,或者叫word vector

词向量的训练方法 CBOW Skip-gram

当然训练的方法除了下面的预测下一个词,还有SKIP-Gram,Cbow等等,这些不同的方法,区别就是预测的方式不一样:

  • CBOW 上下文预测中心词
  • Skip-gram,是通过中心词预测两边的词

在这里插入图片描述

那么这种表示方法到底是巧合呢还是有理论依据呢

词嵌入的理论依据

一个人人品怎么样,看他周围的朋友,而一个词是什么意思,可以看他经常跟什么词一起出现,当然这个在模型上也是有理论依据的(另外在语言学上也有理论依据)。
放到深度模型中来看,当我们有两个输入:
李逍遥御剑飞行
酒剑仙御剑飞行
模型起初不知道李逍遥和酒剑仙是同一个东西,但是模型最后的输出都是要输出 御剑飞行的概率最大,因此这两个不同的输入对应的z1,z2,…zn ,就必须是相似的。
在这里插入图片描述
经过词嵌入之后的模型不再是一个稀疏矩阵,而是嵌入在多维空间里的一个稠密矩阵:
在这里插入图片描述

下面再来说如何用一个vector表示句子或者一篇文章

一个vector(向量)表示短语或者文章

vector space Model

比如一个信息检索的任务,我们通常是把每篇文章变成一堆vector,也就是下图中的蓝色的点,而要检索的信息也是一个vector,当两个向量的夹角比较大的时候,我们认为这两个向量就更相近。

在这里插入图片描述
那怎么把文档表示成一个vector呢?

bag-of-word

比如文档中是this is an apple,如果this这个单词在词表中有,我们就将词表中对应位表示为1。
在这里插入图片描述
这样的表示方法显然没有考虑文本的顺序,如果两个文档的单词一样,但顺序不一致,其实是完全不同的文档

vector space Model + bag-of-word 实现信息搜索

在这里插入图片描述
这种表示方法就是将要搜索的信息座位查询q,文档作为被检索的资料,计算两个向量的夹角。
这种检索方法,把词都是看做独立的个体,没有考虑顺序,也没有考虑不同的词其实是表达了同一个意思,又或者不同的词在某种情景下其实是相同的意思。

改进版 bag-of-word

我们在上述基础上,加入神经网络,改进了句子的表示方法。

在这里插入图片描述

需要查询和检索的句子和文档,都加入神经网络,用神经网络的输出代表这个词向量,可问题是这个神经网络如何训练呢?如何获取这些training data,这些的target又是什么呢?
实际上是有方法获取这些标签数据的,比如百度的时候,我们输入的查询就是query,但是它怎么知道结果是哪个呢?就靠你点击的链接了
总之是有办法获取神经网络的输入和target,从而训练一个网络。

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

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

相关文章

这些企业已经有了HCM系统,为什么还要再单独上考勤系统?

最近有几家制造业和零售业的朋友咨询我考勤管理系统选型的问题,都集中在WFM方面的考勤咨询。 奇怪的是这些企业基本上都有一定的HR数字化基础,也上了HR主系统,甚至也实施了考勤系统,那为什么还要再上一个考勤系统呢? …

[Python] opencv - 什么是直方图?如何绘制图像的直方图?如何对直方图进行均匀化处理?

什么是直方图? 直方图是一种统计图,用于展示数据的分布情况。它将数据按照一定的区间或者组进行划分,然后计算在每个区间或组内的数据频数或频率(即数据出现的次数或占比),然后用矩形或者柱形图的形式将这…

基于java+springboot+vue实现的高校物品捐赠管理系统(文末源码+Lw)23-151

第1章 绪论 当前的网络技术,软件技术等都具备成熟的理论基础,市场上也出现各种技术开发的软件,这些软件都被用于各个领域,包括生活和工作的领域。随着电脑和笔记本的广泛运用,以及各种计算机硬件的完善和升级&#xf…

C语言:函数

创作不易,友友们给个三连吧!! 一、函数的概念 数学中我们见过函数的概念,例如ykxb,k和b都是常数,给任意一个x就可以得到y 而C语言也引入了函数(function)这个概念,C语…

代码随想录算法训练营Day21|二叉搜索树的最小绝对差、二叉搜索树中的众数、二叉树的最近公共祖先

二叉搜索树的最小绝对差 思路1&#xff1a;将二叉搜索树转化成一个有序数组&#xff0c;在有序数组上求两个数的最小值差。 只需要遍历有序数组&#xff0c;统计出最小值差 class Solution{ private:vector<int>vec;void traversal(TreeNode* root){if(root NULL)ret…

H5 简约四色新科技风引导页源码

H5 简约四色新科技风引导页源码 源码介绍&#xff1a;一款四色切换自适应现代科技风动态背景的引导页源码&#xff0c;源码有主站按钮&#xff0c;分站按钮2个&#xff0c;QQ联系站长按钮一个。 下载地址&#xff1a; https://www.changyouzuhao.cn/11990.html

Windows 启动项无法打开 Aanconda 问题。pyqt noBinding

windows中点击Anaconda navigator 没有反应: ## 解决 (右键运行Anaconda prompt) 以管理员身份运行&#xff1a; 分别运行以下命令&#xff1a; conda update conda conda update anaconda-navigatorpip uninstall PyQt5 pip install PyQt5 pip install pyqtwebengine

5年前端仔的2023年终总结

突然发现已经有好几个月没有写过博客总结过什么&#xff0c;小小辩解一下&#xff0c;其实并不是笔者停止的学习和总结&#xff0c;随着在前端这个行业的逐年深入&#xff0c;渐渐的很多收获不再是像之前简单的技术点的确定性描述讲解了&#xff0c;而是某个领域的知识体系的串…

『运维备忘录』之 TAR 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是&#xff0c;甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作&#xff0c;持续给大家更新运维工作所需要接触到的知识点&#xff0c;希望大…

机器学习-线性回归法

线性回归算法 解决回归问题思想简单&#xff0c;实现容易许多强大的非线性模型的基础结果具有很好的可解释性蕴含机器学习中的很多重要思想 样本特征只有一个&#xff0c;称为&#xff1a;简单线性回归 通过分析问题&#xff0c;确定问题的损失函数或者效用函数 通过最优化…

jsp课程管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 课程管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

Termux配置安卓编译环境

前言 Termux安装后&#xff0c;就相当于把手机变成了一台Linux服务器&#xff0c;而且现在手机卡通常是能拿到ipv6公网地址的&#xff0c;所以&#xff0c;这个服务器能干啥&#xff1f; 编程搭建网站跑脚本 本文讲述的就是怎么在Termux搭建安卓编译环境&#xff0c;实现手机…

CV | Medical-SAM-Adapter论文详解及项目实现

******************************* &#x1f469;‍⚕️ 医学影像相关直达&#x1f468;‍⚕️******************************* CV | SAM在医学影像上的模型调研【20240207更新版】-CSDN博客 CV | Segment Anything论文详解及代码实现 本文主要讲解Medical-SAM-Adapter论文及项…

HTML 样式学习手记

HTML 样式学习手记 在探索网页设计的世界时&#xff0c;我发现HTML元素的样式调整真的是个很酷的环节。通过简单的属性设置&#xff0c;就能让文字换上五彩斑斓的颜色、变换各异的字体和大小。特别是那个style属性&#xff0c;感觉就像是一扇通往CSS魔法世界的大门。 代码小试…

【Python】虚拟环境miniconda安装(python3.7, python3.x)

背景 使用Python开发项目时&#xff0c;我们一般都需要安装环境&#xff0c;可能是在物理机上直接安装&#xff0c;也可能是在虚拟环境上安装&#xff0c;当前是怎么按照conda环境的示例&#xff0c;可以指定安装Python3.x的所有版本。 安装 首先&#xff0c;需要登录当前的…

零基础学Python之网络编程

1.什么是socket 官方定义&#xff1a; 套接字&#xff08;socket&#xff09;是一个抽象层&#xff0c;应用程序可以通过它发送或接收数据&#xff0c;可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中&#xff0c;并与网络中的其他应用…

国产信创领跑者:暴雨信息的创新与实践

随着数字化转型的加速推进&#xff0c;信创产业作为数字经济发展的重要支柱&#xff0c;正日益受到社会各界的广泛关注。在这个大背景下&#xff0c;暴雨信息积极响应国家号召&#xff0c;全面适配国产化&#xff0c;推动信创产业的技术创新和应用拓展&#xff0c;成为了行业的…

AWS创建快照定期备份

备注&#xff1a;aws有快照定期备份工具&#xff0c;名字叫【生命周期管理器】 选择实例点击创建 点击下一步后设置备份频率等 然后点击创建即可

(Python)字典列表数据本地存储工具

前言 一个简单的实现简便 "列表字典" 数据存储本地。 适合不会SQL但又想实现数据存储本地的同学。 操作使用都非常简单。 文件只做了简单的加密处理&#xff0c;如果需要复杂加密的同学可以修改加密函数。 温馨提示&#xff1a; 1.使用前&#xff0c;在项目目录…

人工智能福利站,初识人工智能,图神经网络学习,第三课

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…