零、自然语言处理开篇

目录

0、NLP任务的基础——符号向量化

0.0 词袋模型

0.1 查表/One-hot编码

0.2 词嵌入模型/预训练模型

0.2.0 Word2Vec

(0)CBOW

(1)Skip-gram

0.2.1 GloVe

0.2.2 WordPiece

0.2.3 BERT

0.2.4 ERNIE


NLP学习笔记系列,欢迎收藏交流:

零、自然语言处理开篇-CSDN博客

一、NLP中的文本分类-CSDN博客

二、NLP中的序列标注(分词、主体识别)-CSDN博客

三、NLP中的句子关系判断-CSDN博客

四、自然语言中的生成式任务-CSDN博客

NLP自然语言处理,目的是实现计算机对人类语言的智能理解和应用,使得计算机可以像人类一样与人类语言进行交互、分析和生成文本。——By ChatGPT

其主要思想是将人类语言文本转化为数学符号,进而利用统计学、概率学以及各类模型方法完成分类、回归等。

NLP处理常见套路其主要数据获取(不会写爬虫的nlper不是一个好程序员)-> 数据清洗-> 特征工程 -> 模型选取 -> 模型训练 ->效果评估 -> 上线

NLP的常见任务:0、本文向量化;1、文本分类;2、序列标注;3、句子关系判断;4、生成式任务;5、知识图谱;6、大语言模型;7、...。

NLP的常见应用场景:句子情感分析、话题分析、舆情分析、搜索、中文分词、推荐、问答系统、聊天机器人...。

0、NLP任务的基础——符号向量化

文字是符号,无法直接被计算机识别,需要转换为计算机模型能够识别的编码,最常见的就是转换为向量。

0.0 词袋模型

在传统检索和文档分类中较为常用,将词语出现的词频/TF-IDF值作为向量值,例如有两篇文档

Doc1:虽然词语无法直接转化为数值->[虽然, 词语, 无法, 直接, 转化, 为, 数值]

Doc2:统计文本中词语的出现情况->[统计, 文本, 中, 词语, 的, 出现, 情况]

合并两个文档中的所有词,[虽然, 词语, 无法, 直接, 转化, 为, 数值,统计, 文本, 中, 的, 出现, 情况 ],统计频率后,可以将上面两篇文档表示为如下向量

Doc1:[1, 2, 1, 1, 1, 1, 1,0, 0, 0, 0, 0, 0 ]

Doc2:[0, 2 , 0, 0, 0, 0, 0,1, 1, 1, 1, 1, 1 ]

词的顺序对传统机器学习影响较小,如聚类、cosin系数、jaccard系数等的计算,均是按位计算求和平均,因此位次重要程度不高。

不足:无法展示词的上下文信息。

0.1 查表/One-hot编码

指定一个包含较为完整的词典,文档转换为向量时,纬度和词表大小相同,向量中若一个词出现,则该位置数值为1,反之为0。

例如,我们有一个13个词的词典:[虽然, 词语, 无法, 直接, 转化, 为, 数值,统计, 文本, 中, 的, 出现, 情况 ],

那么对于一个这样的Doc“虽然词语无法直接转化为数值 ”,转换方式可见如下两种:

直接查表:[虽然, 词语, 无法, 直接, 转化, 为, 数值] -> [1,1,1,1,1,1,1,0, 0, 0, 0, 0, 0]

One-hot编码:虽然->[1,0,0,0,0,0,0,0,0,0,0,0,0],词语->[0,1,0,0,0,0,0,0,0,0,0,0,0],无法->[0,0,1,0,0,0,0,0,0,0,0,0,0]...,数值 ->[0,0,0,0,0,0,0,0,0,0,0,0,1]

不足,词表大的话向量过于稀疏,若直接用于训练效率低。

0.2 词嵌入模型/预训练模型

为解决无法联系上下文和向量稀疏问题,提出了一种Word Embeddings的方法,它是一种利用神经网络将词汇映射到低维实数向量的方法。

0.2.0 Word2Vec

参考文献:Mikolov T, Chen K, Corrado G, et al. Efficient estimation of word representations in vector space[J]. arXiv preprint arXiv:1301.3781, 2013.

(0)CBOW

CBOW模型将上下文的单词作为输入,预测中心单词。适合大语料库,适合高频词的向量化,因为更多依赖上下文进行预测。

输入层:一个个的单词one-hot编码的张量1*V,V表示词表的大小。

隐层:V*N的隐层权重张量,也称为word-embedding层,N表述维度,w2v一般是128维。输入层和隐层相乘,会得到一个C*N的张量,C为词的个数,将这C个词相加,得到一个1*N的张量。(隐藏的输出即可作为词嵌入)

输出层:构建一个N*V的输出层矩阵,将隐层的输出1*N与这个N*V相乘,得到一个1*V的张量(可经过softmax),这个就是通过中心词得到的上下文词的概率矩阵。

训练效率高、高词频词效果更好。

(1)Skip-gram

Skip-gram模型将中心单词作为输入,预测上下文单词。适合语料库较小的情况,对于低频词有更好的表现。因为他对一个词需要预测其上下多个词的结果,相当于这个词计算了多次,更加准确。

输入层:中心词转换为1个1*V的one-hot张量,V表示词表大小。

隐层:隐层权重为V*N,N为维度,一般为128维。经过隐层后,变成一个1*N的张量(隐藏的输出即可作为词嵌入)。

输出层:构建C个N*V的输出层权重张量,C表示上下文中词的数量,最后输出C个1*V的张量(可经过softmax),即代表由中心词推理出的上下文的结果。

Skip-gram一般使用一个滑动窗口,默认是5,即中心词前后各2个词。

小规模数据集、生僻字效果好

Word2Vector相比1-2两种转换方式,可以捕捉语义信息,例如同义词信息,上下文相似的两个词,它们的词向量也应该相似,且训练效率相对较高。

0.2.1 GloVe

参考文献:Pennington J, Socher R, Manning C D. Glove: Global vectors for word representation[C]//Proceedings of the 2014 conference on empirical methods in natural language processing (EMNLP). 2014: 1532-1543.

共现矩阵+基于窗口词的预测

I like deep learning.	
I like NLP.	
I enjoy flying

共现矩阵

概率矩阵

已知ice和steam这两个词在语料中出现的频率,这两个词被视为目标词(target words) 。此时,暂且不直接去求解这两个词之间的共现关系,而是基于这两个词的频率,去探索一下给定这两个目标词的情况下,其他词的条件概率是一个什么情况,这里的k就是其他词。

首先,我们计算给定单词ice的情况下,单词k出现的频率,也就是说,k出现在i的上下文中的概率是多少。这个条件概率记做P(k|ice),P(k|ice) = X k,ice / X ice,X k, ice是k和ice在同一个context中出现的次数,X ice为ice出现的次数。同理,我们计算P(k|steam),计算方法一样。这里的k可以是字典中的任何一个单词。

0.2.2 WordPiece

参考文献:Kudo T. Subword regularization: Improving neural network translation models with multiple subword candidates[J]. arXiv preprint arXiv:1804.10959, 2018.

tokenize的常用方法,输入bert和ernie前都会经过这一步将词进行初步切词,输出子词序列。然后根据子词的id生成向量。该方法可以解决OOV(词不在词表)的问题。

训练集的词汇: old older oldest smart smarter smartest
word-level 词典: old older oldest smart smarter smartest 长度为 6
subword-level 词典: old smart er est 长度为 4
0.2.3 BERT

参考文献:Devlin J, Chang M W, Lee K, et al. Bert: Pre-training of deep bidirectional transformers for language understanding[J]. arXiv preprint arXiv:1810.04805, 2018.

0)Bidirectional Encoder Representation from Transformers,结构如下:

自编码(Auto-Encoding)语言模型,Autoencoding Language Modeling,自编码语言模型:通过上下文信息来预测当前被mask的token,代表有BERT、Word2Vec(CBOW)等.它使用MLM做预训练任务,自编码预训模型往往更擅长做判别类任务,或者叫做自然语言理解(Natural Language Understanding,NLU)任务,例如文本分类,NER等。

自回归(Auto-Regressive)语言模型,Aotoregressive Lanuage Modeling,自回归语言模型:根据前面(或后面)出现的token来预测当前时刻的token,代表模型有ELMO、GTP等,它一般采用生成类任务做预训练,类似于我们写一篇文章,自回归语言模型更擅长做生成类任务(Natural Language Generating,NLG),例如文章生成等。

1)输入

参考:BERT的3个Embedding的实现原理_token embeddings-CSDN博客

一个长度为n的输入序列(n表示词组个数,token数),一般是512

Token Embeddings:采用wordpiece对文本进行切割成一个个子词,经过embedding后每一个子词输出为768维的向量 (1, n, 768)

Segment Embeddings:切割句子用的(1, n, 768)

Position Embeddings:用于标记词在句子中的位置,(1, n, 768)

整个输入是一个1*512*768的张量。

2)中间层

12个transformer的encoder,每个head是64个神经元,也就是H=768,所以,在transformer的encoder里,单个的的Wq,Wk,Wv都是768*64的矩阵,那么Q,K,V则都是512*64的矩阵,Q,K_T相乘后的相关度矩阵则为512*512,归一化后跟V相乘后的z矩阵的大小则为512*64,这是一个attention计算出的结果。12个attention则是将12个512*64大小的矩阵横向concat,得到一个512*768大小的多头输出,这个输出再接一层768的全连接层,最后就是整个muti-head-attention的输出了,如图4所示。整个的维度变化过程如下图所示:

3)输出

768维向量

BERT这种encoder-only,因为它用masked language modeling预训练,不擅长做生成任务,做NLU一般也需要有监督的下游数据微调;相比之下,decoder-only的模型用next token prediction预训练,兼顾理解和生成,在各种下游任务上的zero-shot和few-shot都很好。

总体参数量(输入权重矩阵、transformer的权重矩阵等等)约1亿左右。

0.2.4 ERNIE

参考文献:Sun Y, Wang S, Li Y, et al. Ernie: Enhanced representation through knowledge integration[J]. arXiv preprint arXiv:1904.09223, 2019.

BERT 模型主要是聚焦在针对字或者英文word粒度的完形填空学习上面,没有充分利用训练数据当中词法结构,语法结构,以及语义信息去学习建模。比如 “我要买苹果手机”,BERT 模型 将 “我”,“要”, “买”,“苹”, “果”,“手”, “机” 每个字都统一对待,随机mask,丢失了“苹果手机” 是一个很火的名词这一信息,这个是词法信息的缺失。

针对上面这个问题,ERNIE对训练数据中的词法结构,语法结构,语义信息进行统一建模

ERNIE在训练过程前,会对句子进行关键短语切割、命名实体识别等,通过有针对性的mask掉这些重要信息,增强模型的学习能力。

模型结构基本和bert一致,差别不大。

附:ernie3.0简单介绍

分层训练,universal representation是基础特征模型,task-specific representation是任务模块,可用于分类、生成等

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

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

相关文章

OKHttpRetrofit

完成一个get请求 1.导入依赖 implementation("com.squareup.okhttp3:okhttp:3.14.")2.开启viewBinding android.buildFeatures.viewBinding true 3.加网络权限 和 http明文请求允许配置文件 <?xml version"1.0" encoding"utf-8"?> &l…

利用国产库libhv动手写一个web_server界面(一)

目录 一.实现要求 流程图 测试libhv中的http服务 1.启动http服务端 2.启动http客户端 3.网址访问 4.状态图 5.时序图 结果展示 1.基本的登录界面 2.简易的配置ip及其端口的界面 3.设置成功后返回 这是一个关于webserver HTTP SERVER http server 模块的制作 一.实…

力扣串题:验证回文串2

整体思路&#xff1a;先找到可能存在问题的点&#xff0c;然后判断&#xff0c;如果一切正常则左指针会来到字符串中部 bool isValidPalindrome(char *s, int i, int j) {while (i < j) {if (s[i] ! s[j]) {return false;}i;j--;}return true; }bool validPalindrome(char …

11.Java---语法总结之一个小项目

图书管理系统 Java学习了很久了,今天将运用之前学习的所有东西整理做个小小的小项目. 1.首先是各种包和操作方法建好 2.然后是项目的大框架搭好 3.然后就开始实现各个部分了 看看最后的运行结果吧! 管理员测试 1.登录&显示图书的运行结果 2.查找&新增图书的运行结…

2024年视频号带货蓝海项目真的可做吗?

在数字经济的浪潮下&#xff0c;视频号带货作为一种新兴的电商模式&#xff0c;近年来备受瞩目。随着5G技术的普及和移动设备的更新换代&#xff0c;视频平台用户规模持续增长&#xff0c;为视频号带货提供了广阔的舞台。然而&#xff0c;面对2024年这个未来节点&#xff0c;我…

9个免费游戏后端平台

在这篇文章中&#xff0c;您将看到 九个免费的游戏服务平台提供商&#xff0c;这可以帮助您开始在线多人游戏&#xff0c;而无需预先投入大量资金。 每个提供商都有非常独特的功能&#xff0c;因此成本应该只是决定时要考虑的方面之一。 我还从低预算项目的角度对免费提供商进…

《JAVA与模式》之原型模式

系列文章目录 文章目录 系列文章目录前言一、原型模式的结构二、简单形式的原型模式三、登记形式的原型模式四、克隆满足的条件五、浅克隆和深克隆前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用…

初识kubernetes

Kubernetes核心概念 Master Master节点主要负责资源调度(Scheduler)&#xff0c;控制副本(Replication Controller)&#xff0c;和提供统一访问集群的入口(API Server)。---核心节点也是管理节点 Node Node是Kubernetes集群架构中运行Pod的服务节点&#xff08;亦叫agent或min…

北京碳中和经营许可证办理条件及流程与我们的专业服务

各位老板好&#xff0c;随着全球气候变化问题的日益严重&#xff0c;碳中和成为了企业社会责任和可持续发展的关键一环。在北京&#xff0c;越来越多的企业开始关注并投入到碳中和的行列中。为了规范市场秩序&#xff0c;确保碳中和活动的合法性和有效性&#xff0c;北京地区实…

Splitpanes拆分窗格插件使用

目录 基本用法 纵向排列 遍历渲染 动态拆分宽度 项目开发中用到了拆分窗格(就是下面的效果&#xff0c;可以拆分网页&#xff0c;我们项目通常都是用左右两块拆分&#xff0c;可以通过拖动图标进行左右拖动)&#xff0c;于是就发现了一个很好用的插件&#xff1a;Splitpane…

Day37:安全开发-JavaEE应用JNDI注入RMI服务LDAP服务JDK绕过调用链类

目录 JNDI注入-RMI&LDAP服务 JNDI远程调用-JNDI-Injection JNDI远程调用-marshalsec JNDI-Injection & marshalsec 实现原理 JNDI注入-FastJson漏洞结合 JNDI注入-JDK高版本注入绕过 思维导图 Java知识点&#xff1a; 功能&#xff1a;数据库操作&#xff0c;文…

一款好用的AI工具——边界AICHAT(三)

目录 3.23、文档生成PPT演示3.24、AI文档翻译3.25、AI翻译3.26、论文模式3.27、文章批改3.28、文章纠正3.29、写作助手3.30、文言文翻译3.31、日报周报月报生成器3.32、OCR-DOC办公文档识别3.33、AI真人语音合成3.34、录音音频总结3.35、域方模型市场3.36、模型创建3.37、社区交…

每日汇评:如果支撑位守住2145美元,黄金可能反弹至纪录高位

金价在周二因美国CPI数据火爆而暴跌后保持稳定&#xff1b; 美元和美债收益率在美元/日元下跌中暂停反弹&#xff1b; 随着美国CPI的出炉&#xff0c;市场焦点转向周四的零售销售和PPI数据&#xff1b; 金价在2160美元附近盘整&#xff0c;周二从2195美元的纪录高位回调约1%。由…

白嫖AWS云服务器,验证、注册指南

背景 不知道你想不想拥有一台属于自己的云服务器呢&#xff0c;拥有一台自己的云服务器可以建站&#xff0c;可以在上面搭建个人博客&#xff0c;今天我就来教大家如何申请亚马逊 AWS 免费云服务器&#xff0c;这个云服务器可以长达12个月的免费。而且到期后可以继续换个账号继…

【阿里云系列】-基于云效构建部署NodeJS项目到ACK

准备工作 01、编写Dockerfile文件可以根据不同的环境&#xff0c;新建不同的Dockerfile文件&#xff0c;比如Dockerfile-PROD # Deliver the dist folder with NginxFROM nginx:stable-alpine ENV LANGC.UTF-8 ENV TZAsia/ShanghaiCOPY dist/ /usr/share/nginx/html COPY ngi…

react的diff源码

react 的 render 阶段&#xff0c;其中 begin 时会调用 reconcileChildren 函数&#xff0c; reconcileChildren 中做的事情就是 react 知名的 diff 过程 diff 算法介绍 react 的每次更新&#xff0c;都会将新的 ReactElement 内容与旧的 fiber 树作对比&#xff0c;比较出它们…

【算法积累】辗转相除法

【算法积累】辗转相除法&#xff0c;python实现两种 辗转相除法&#xff08;又称欧几里得算法&#xff09;减法&#xff08;不常用&#xff09;代码实现执行结果 辗转相除法代码实现执行结果 辗转相除法&#xff08;又称欧几里得算法&#xff09; 又称欧几里得算法&#xff0c…

【洛谷 P8781】[蓝桥杯 2022 省 B] 修剪灌木 题解(数学)

[蓝桥杯 2022 省 B] 修剪灌木 题目描述 爱丽丝要完成一项修剪灌木的工作。 有 N N N 棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晩会修剪一棵灌木&#xff0c;让灌木的高度变为 0 0 0 厘米。爱丽丝修剪灌木的顺序是从最左侧的灌木开始&#xff0c;每天向右修剪一棵灌木…

镭速教你如何解决大数据量串行处理的问题

大数据的高效处理成为企业发展的关键。然而&#xff0c;大数据量串行处理的问题常常困扰着许多企业&#xff0c;尤其是在数据传输方面。本文将探讨大数据量串行处理的常见问题&#xff0c;并介绍企业常用的处理方式&#xff0c;最后重点阐述镭速如何提供创新解决方案&#xff0…

【20240309】WORD宏设置批量修改全部表格格式

WORD宏设置批量修改全部表格格式 引言1. 设置表格文字样式2. 设置表格边框样式3. 设置所有表格边框样式为075pt4. 删除行参考 引言 这两周已经彻底变为office工程师了&#xff0c;更准确一点应该是Word工程师&#xff0c;一篇文档动不动就成百上千页&#xff0c;表格图片也是上…