1.文本预处理

        分词,词性标注,命名实体识别

1.1分词:jieba

jieba.lcut(content,cut_all=true) 全模式

jieba.lcut(content,cut_all=false) 精确模式

jieba.lcut_for_search(content) 搜索引擎模式

lcut和cut的区别:cut返回的是一个生成器Generator,lcut返回的是列表

生成器调用的几种方式

变量=next(generater) 第n次调用取第n个生成器的值,可以多次调用或者循环调用

for i in generater i就是每次生成器生成的值

变量= generater.send(value) value传给生成器,生成器传值出来

变量= list(generater) 将生成器所有的数据转换成列表

1.2词性标注 词性:语言中对词的一种分类方法

使用jieba.posseg ss pseg

pseg.lcut(content)

1.3命名实体识别

        命名实体: 通常我们将人名, 地名, 机构名等专有名词统称命名实体. 如: 周杰伦, 黑山县, 孔子学院, 24辊方钢矫直机.

        一般使用训练好的模型来进行命名实体识别

在迁移学习中使用模型:chinese_pretrain_mrc_roberta_wwm_ext_large

1.4文本的张量表示方法:one-hot,word2vec:cbow,skipgram,word-embedding

        one-hot又称独热编码,将每个词表示成具有n个元素的向量,这个词向量中只有一个元素是1,其他元素都是0,不同词汇元素为0的位置不同,其中n的大小是整个语料中不同词汇的总数.

        实现简单但完全割裂了词语词之间的关系

        word2vec::构建神经网络模型, 将网络参数作为词汇的向量表示

        捕捉词语之间的语义和语法关系,但无法处理多义词切忽略词序,同时依赖大数据

        cbow 上下文预测中间

        skipgram 中间预测上下文

        使用fasttext工具训练词向量

        word embedding:通过一定方式将词汇映射到指定维度

        torch.nn.Embedding(vocab_size, embedding_dim=8) 传入的时候索引不能大于vocab_size不然会索引越界报错

文本数据分析:标签数量分布,句子长度分布,词频统计,关键词词云

        词云模组: from wordcloud import WordCloud

        词性识别 import jieba.posseg as pseg

文本特征处理:n-gram,文本长度规范

        n-gram set(zip(*[input_list[i:] for i in range(ngram_range)]))

        zip作用是把多个可迭代对象打包

a = [1, 2, 3]
b = ['a', 'b', 'c']
print(list(zip(a, b)))  # 输出: [(1, 'a'), (2, 'b'), (3, 'c')][1,3,5](@ref)

        文本长度规范

        一般使用padding进行补齐,截断的方式可以采用切片

        随机森林的截断方式 df_data['text'].apply(lambda x: " ".join(jieba.lcut(x)[:30]))

        bert的补齐与截断

        text_tokens = conf.tokenizer.batch_encode_plus(texts,add_special_tokens=True,padding='max_length', #补齐max_length=conf.pad_size,truncation=True, #截断return_attention_mask=True)

文本数据增强:回译数据增强(写论文)

        翻译成另一种语言在翻译回来,或者a-b-c-d-a

RNN及其变体

传统rnn模型:优势简单:劣势 梯度更新序列太长容易消失(梯度无法更新训练失败)或者爆炸(溢出nan)

        把当前步的输入x(t)和上一步的输出h(t-1)拼起来经过一个全连接层使用tanh作为激活函数得到下一步时间步ht(t)与下一个时间步输入x(t+1)重复这个过程

        如果是x是第一个则拼接的是初始化的隐藏层h0

        最终输出

        output 包含所有隐藏输出h0-hn        

        hn (能代表这个语句)

        隐藏层创建rnn = nn.RNN(input_size, hidden_size, num_layer)

                                                   x的维度   隐藏层输出维度 隐藏层层数

                

lstm

gru

 GRU和LSTM作用相同, 在捕捉长序列语义关联时, 能有效抑制梯度消失或爆炸, 效果都优于传统RNN且计算复杂度相比LSTM要小.

注意力机制

引入Attention的原因1:长距离的信息会被弱化,就好像记忆能力弱的人,记不住过去的事情是一样的。原因2 :好使

深度学习中的注意力机制通常可分为三类: 软注意(全局注意)、硬注意(局部注意)和自注意(内注意)

  • 软注意机制(Soft/Global Attention: 对每个输入项的分配的权重为0-1之间,也就是某些部分关注的多一点,某些部分关注的少一点,因为对大部分信息都有考虑,但考虑程度不一样,所以相对来说计算量比较大。
  • 硬注意机制(Hard/Local Attention,[了解即可]): 对每个输入项分配的权重非0即1,和软注意不同,硬注意机制只考虑那部分需要关注,哪部分不关注,也就是直接舍弃掉一些不相关项。优势在于可以减少一定的时间和计算成本,但有可能丢失掉一些本应该注意的信息。
  • 自注意力机制( Self/Intra Attention): 对每个输入项分配的权重取决于输入项之间的相互作用,即通过输入项内部的"表决"来决定应该关注哪些输入项。和前两种相比,在处理很长的输入时,具有并行计算的优势。

注意力计算规则:

* 它需要三个指定的输入Q(query), K(key), V(value), 然后通过计算公式得到注意力的结果, 这个结果代表query在key和value作用下的注意力表示. 当输入的Q=K=V时, 称作自注意力计算规则.

注意力机制的作用 

  • 在解码器端的注意力机制: 能够根据模型目标有效的聚焦编码器的输出结果, 当其作为解码器的输入时提升效果. 改善以往编码器输出是单一定长张量, 无法存储过多信息的情况.
  • 在编码器端的注意力机制: 主要解决表征问题, 相当于特征提取过程, 得到输入的注意力表示. 一般使用自注意力(self-attention).

transformer

核心架构

 输入部分构成:input(output)embedding+position encoding

        embedding作用是将文本中词汇的数量表示转换为更高维度的向量表示

        position encoding的作用将词汇位置不同可能会产生不同语义的信息加入到词嵌入张量中, 以弥补位置信息的缺失.

为什么embedding之后要乘以根号下d_model

原因1:为了防止position encoding的信息覆盖我们的word embedding,所以进行一个数值增大

原因2:符合标准正态分布

位置编码器实现方式:三角函数来实现的,sin\cos函数

为什么使用三角函数来进行位置编码:

保证同一词汇随着所在位置不同它对应位置嵌入向量会发生变化
正弦波和余弦波的值域范围都是1到-1这又很好的控制了嵌入数值的大小, 有助于梯度的快速计算
三角函数能够很好的表达相对位置信息

编码器部分

1、N个编码器层堆叠而成
2、每个编码器有两个子层连接结构构成
3、第一个子层连接结构:多头自注意力层+规范化层+残差连接层
4、第二个子层连接结构:前馈全连接层+规范化层+残差连接层

        掩码:掩就是遮掩、码就是张量。掩码本身需要一个掩码张量,掩码张量的作用是对另一个张量进行数据信息的掩盖。一般掩码张量是由0和1两种数字组成,至于是0对应位置或是1对应位置进行掩码,可以自己设定
        掩码分类
        PADDING MASK: 句子补齐的PAD,去除影响 ,位置:编码器的自注意力层(Self-Attention),编码器-解码器注意力层

        SETENCES MASK:防止未来信息被提前利用,位于解码器的自注意力层

多头自注意力机制

        将模型分为多个头, 可以形成多个子空间, 让模型去关注不同方面的信息, 最后再将各个方面的信息综合起来得到更好的效果.

        在模拟transformer中qkv分别经过一个线性层

前馈全连接层:作用:增强模型的拟合能力(两个线性层)

规范化层:作用:随着网络深度的增加,模型参数会出现过大或过小的情况,进而可能影响模型的收敛,因此进行规范化,将参数规范致某个特征范围内,辅助模型快速收敛。

残差链接:作用:引入加法防止梯度消失

 解码器部分

1、N个解码器堆叠而成
2、每个解码器有三个子层连接结构构成
3、第一个子层连接结构:多头自注意力层+规范化层+残差连接层
SETENCES MASK:解码器端,防止未来信息被提前利用
4、第二个子层连接结构:多头注意力层+规范化层+残差连接层

这里的Q查询张量是上一个子层输入,K和V是编码器的输出
5、第三个子层连接结构:前馈全连接层+规范化层+残差连接层

输出部分:作用:通过线性变化得到指定维度的输出

迁移学习

预训练模型:

        定义: 简单来说别人训练好的模型。一般预训练模型具备复杂的网络模型结构;一般是在大量的语料下训练完成的        

预训练模型的分类:

自回归语言模型Auto Regressive Language Model AR)(做文本语言生成)
概念:根据上文内容预测下一个可能的单词
优点:从左向右的处理文本,天然文本生成
缺点:只能利用上文或者下文的信息,不能同时利用上文和下文的信息
代表模型:GPT、GPT2、Transformer-XL、XLNET

自编码语言模型(Auto Encoder Language Model AE)(适合做语言理解)
概念:对输入的句子随机Mask其中的单词,根据上下文单词来预测这些被Mask掉的单词
优点:融入双向语言模型,同时看到被预测单词的上文和下文
缺点:训练时使用[Mask]标记,导致预训练阶段和Fine-tuning阶段不一致的问题
代表模型:BERT、ALBERT、RoBERTa、ELECTRA

迁移学习的两种方式

        开箱即用: 当预训练模型的任务和我们要做的任务相似时,可以直接使用预训练模型来解决对应的任务
        微调: 进行垂直领域数据的微调,一般在预训练网络模型后,加入自定义网络,自定义网络模型的参数需要训练,但是预训练模型的参数可以全部微调或者部分微调或者不微调。        

fasttext

作为NLP工程领域常用的工具包, fasttext有两大作用:

  • 进行文本分类
  • 训练词向量

Fasttext模型架构

  • FastText 模型架构和 Word2Vec 中的 CBOW 模型很类似, 不同之处在于, FastText 预测标签, 而 CBOW 模型预测中间词.
  • FastText的模型分为三层架构:
    • 输入层: 是对文档embedding之后的向量, 包含N-gram特征
    • 隐藏层: 是对输入数据的求和平均
    • 输出层: 是文档对应的label

fasttext的数据要求:

__label__fish arctic char available in north-america

 模型调优的手段:

原始数据处理:

数据处理后进行训练并测试:

增加训练轮数:

调整学习率:

增加n-gram特征:

修改损失计算方式:

自动超参数调优:

模型的保存与加载

        # 使用model的save_model方法保存模型到指定目录

        # 你可以在指定目录下找到model_cooking.bin文件 >>>

model.save_model("data/model/model_cooking.bin")

        # 使用fasttext的load_model进行模型的重加载 >>>

model = fasttext.load_model("data/model/model_cooking.bin")

常见的预训练模型

Bert

GPT

 

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

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

相关文章

WEB :实战演练——从零实现一个交互轮播图(附源码)

文章目录 一、轮播图整体功能规划二、HTML结构深度解析三、CSS样式实现细节1. 定位系统详解2. 显示/隐藏机制3. 按钮交互效果实现4. 纯CSS箭头实现5. 指示器:当前位置可视化 四、JavaScript逻辑深入解析1. 核心变量与DOM获取2. 图片切换函数(核心逻辑&am…

MCP 协议详细分析一 initialize ping tools/list tools/call

MCP 协议详细分析一 (initialize ping tools/list tools/call) 本节基于 实现一个 java 的mcp client 调用的 一个python 的mcp server 的日志,完整展示一次典型的 MCP Java SDK 通信流程、工具调用、通知机制与日志记录,仅包含 echo-simple…

SLAM学习资料记录

ORB_SLAM2 创建自己的数据集(还未使用) 【SLAM实战篇】Ubuntu 20.04版本(OpenCV版本4.5.3)对于ORB-SLAM2安装运行,代码编译,自己的数据集构造_ubuntu20.04 安装运行orb_slam2算法-CSDN博客 卡尔曼滤波数据…

用Phi-3 Mini微调实现英文到尤达语翻译

用Phi-3 Mini微调实现英文到尤达语翻译 引言 本文将带你快速上手大模型微调实践——以微软的Phi-3 Mini 4K Instruct模型为例,教你如何将其微调为一个能把英文翻译成"尤达语"(《星球大战》中尤达大师的独特说话风格)的模型。这是一…

AI助力,轻松实现人声分离伴奏提取

亲爱的小伙伴们!前段时间,有一位同事家的可爱小孩参加了一场英语演讲比赛。同事找到我,希望我能帮个忙,把讲视频中的人声去掉,只提取出其中相应的伴奏。今天,我就来和大家分享一下究竟如何实现从 MP4 视频中…

第1章第2章笔记

OSI参考模型---开放式系统互联模型---OSI/RM ISO--->国际标准化组织;特点:先有模型,在又协议。 OSI七层参考模型:应用层 --- 提供网络服务;自然语言-->编码表示层 --- 对数据的处理;格式化&#xff0…

图的BFS和DFS

一,图的遍历逻辑1.之前我们学了图的存储,可以邻接表存和邻接矩阵存。现在我们要学习图的遍历操作和树类似可以分为深度遍历和广度遍历,而深度遍历也是用递归实现,广度遍历是用队列实现2.深度遍历(DFS)a.确定起点b.找到一条边按顺时…

WWDC 25 给自定义 SwiftUI 视图穿上“玻璃外衣”:最新 Liquid Glass 皮肤详解

引子 各位 iOS 足球体育健儿们,且听我一言!想当年在《少林足球》里,阿星一句“做人如果没梦想,那跟咸鱼有什么分别啊?”点燃了多少人的江湖梦。 如今在 SwiftUI 江湖里,Apple 于 WWDC 25 推出的 Liquid Gl…

Day01_C++

01.思维导图02.方法一&#xff1a;#include <iostream> #include <cstring> #include <iostream> using namespace std; class mystring { private:char* buf;int len;public:mystring(const char* str);void copy(const char* ptr);void copy(mystring ptr)…

C语言学习(days09)

二维数组的定义与特性二维数组的声明格式为&#xff1a;类型说明符 数组名[表达式1][表达式2];[下标1]表示行索引&#xff0c;[下标2]表示列索引。二维数组可视为由多个一维数组组成&#xff0c;a[0]表示第0行的首地址&#xff08;即一维数组地址&#xff09;a[0][0]表示第0的第…

WIFI路由器长期不重启,手机连接时提示无IP分配

今天在公司&#xff0c;突然发现手机连不上公司WIFI。每次链接&#xff0c;提示无IP分析。我以为是我手机出问题了&#xff0c;想复位一下。后来一想万一复位还是不灵&#xff0c;怎么办&#xff1f;同事认为是路由器没有重启的原因。于是找到路由器&#xff0c;重启&#xff0…

【前沿技术动态】【AI总结】RustFS:从 0 到 1 打造下一代分布式对象存储

目录1 引言&#xff1a;为什么我们又需要一个新的对象存储2 RustFS 全景速览3 技术架构深度拆解3.1 整体拓扑3.2 关键数据结构&#xff08;rust 伪代码&#xff09;3.3 读写路径&#xff08;写放大 < 1.1&#xff09;4 核心源码导读4.1 关键函数跟踪4.2 一段最小可复现示例5…

ImageNet1K数据集的下载解压与处理

前言 博主因为这个数据集踩了好多坑&#xff0c;浪费了好几天时间&#xff0c;最近终于找到了高效的办法&#xff0c;写此篇文章来记录具体操作方法&#xff0c;也希望可以帮助到有需要的人。&#xff08;主要是在云服务器是使用&#xff09; 下载数据集 一共下载三个文件&…

OkHttp 与 Room 结合使用:构建高效的 Android 本地缓存策略

前言在现代 Android 应用开发中&#xff0c;网络请求与本地数据持久化是两大核心功能。OkHttp 作为强大的网络请求库&#xff0c;与 Jetpack Room 持久化库的结合使用&#xff0c;可以创建高效的数据缓存策略&#xff0c;提升应用性能和用户体验。本文将详细介绍如何将这两者完…

Nacos中feign.FeignException$BadGateway: [502 Bad Gateway]

Nacos中feign.FeignException$BadGateway: [502 Bad Gateway] 文章目录Nacos中feign.FeignException$BadGateway: [502 Bad Gateway]背景原因背景 Mac本地运行Nacos微服务项目&#xff0c;调用服务失败 原因 关闭本地代理clash或者其他&#xff0c;windows没发现问题&#x…

基于deepseek的LORA微调

LORA微调&#xff1a; 核心是&#xff1a;低秩转换&#xff0c;减少参数。冻结大部分&#xff0c;调节部分模块(注意力模块的Wq&#xff0c;Wk&#xff0c;Wv)。 调整过后得到一个lora.safetensors, 内部记录了(detail W: 即部分修改的W)。推理使用原权重和lora权重。 具体操…

Linux运维新手的修炼手扎之第22天

Tomcat服务1 java项目部署方式&#xff1a;war包部署、jar包部署、源代码部署2 Ubuntu环境部署Java - openjdk[熟练]:#安装软件rootubuntu24-13:~# apt update; apt list openjdk*rootubuntu24-13:~# apt install openjdk-11-jdk -y#检测效果rootubuntu24-13:~# whereis javaja…

Python爬虫实战:研究Genius库相关技术

1. 引言 在当今数字化时代,音乐数据的分析与挖掘成为了音乐学、计算机科学等领域的研究热点。歌词作为音乐的重要组成部分,蕴含着丰富的情感、文化和社会信息。通过对歌词数据的分析,可以揭示音乐风格的演变、流行趋势的变化以及社会情绪的波动等。 Genius 是一个专注于歌词…

内核协议栈源码阅读(一) ---驱动与内核交互

文章目录 一、硬中断 1.1 `e100_intr` 1.2 `__netif_rx_schedule` 1.3 补充: 二、软中断 2.1 net_rx_action 2.2 e100_poll 2.3 补充 三、非 NAPI 的软中断处理 3.1 netif_rx 3.2 backlog_dev->poll 3.3 补充 四、总结 以 e100_intr 为例: 一、硬中断 1.1 e100_intr 网卡…

Vue3 面试题及详细答案120道(61-75 )

《前后端面试题》专栏集合了前后端各个知识模块的面试题&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…