nlp基础-文本预处理及循环神经网络

1 认识文本预处理

  • 1 文本预处理及其作用

    • 定义:文本送给模型之前,提前要做的工作

    • 作用:指导模型超参数的选择 、提升模型的评估指标

    • 举个例子:

      • 思路常识,打造成 X Y
      • 关于Y:10分类标签是否均衡
      • 关于X:数据有没有脏数据 数据长度(512)样本不够!
    • 文本预处理 工作 结束 的标志:准备出来X和Y 能送给模型

  • 2 文本预处理的主要环节

    • 1 文本处理的基本方法

      • 分词:按照一定规则对文本重新划分,进行分词

      • 词性标注:把文本序列标注出来动词、名词、形容词这个过程词性标注

      • 命名实体识别:把专有名词(人名、地名、机构名)给识别出来。

        • 比如:对话系统要进行命名实体识别,对语义进理解。
    • 2 文本张量表示方法: 就是把我们的单词转成数值化的数据 张三【88,87, 86 ,85, 84】文本数值化、数值张量化

      • one-hot编码: low 稀疏词向量表示

      • Word2vec:稠密词向量表示

      • Word Embedding:稠密词向量表示

    • 3 文本语料的数据分析:就是对数据的x y进行分析

      • 标签数量分布:对y:十分类:类别是不是均衡

      • 句子长度分布:对x:文本长度有的是100个长度,有的是200,

      • 词频统计与关键词词云:形容词词云

    • 4 文本特征处理:我 爱 北京 天安门

      • 添加n-gram特征 【101,102,103,104,105】:105代表【北京 天安门】相邻共现,可以作为一个新的特征加入到文本序列中;增强模型对文本序列特征抽取

      • 文本长度规范:有些模型送入的数据长度不能超过512

    • 5 数据增强方法: 数据不够,看如何增加语料

      • 1 回译数据增强法:中文–>韩语 -->葡萄牙–>中文,新增了一条样本
  • 3 思考题,文本处理的主要环节中,哪一些环节是第一个要做的?

    • 一般情况,文本语料的数据分析是程序员首先要做的工作。

2 文本处理的基本方法

  • 分词定义和作用:

    • 定义: 将连续字符按照一定规则重新排序的过程
    • 作用: 理解语义的最小单元!
    • 为什么要分词:中文没有明显的分解符 英文天然空格是分解符
      • 对中文分词来讲:不断寻找分解符的过程
  • 流行分词工具jieba

    • 支持多种分词模式(三种模式)
      • 精确模式:
      • 全模式:
      • 搜索引擎模式:
    • 支持中文繁体分词
    • 支持用户自定义词典
      • 自定义字典的格式
  • 结巴分词编程api

    • 三种模式

      jieba.lcut(content, cut_all=False) 精确模式
      jieba.lcut(content, cut_all=True) 全模式
      jieba.cut_for_search(content) 搜素引擎模式
      
    • 中文繁体分词

      • jieba.lcut(content, cut_all=False) 精确模式
    • 用户自定义词典

      • jieba.load_userdict('./userdict.txt')
        mydata2 = jieba.lcut(sentence)
        
  • 什么是命名实体识别 (NER)

    • 命名实体:指人名地名机构名等专有名字
    • 命名实体识别:对一句话中的专有名词进行识别(NER - Named Entity Recognition)
  • 词性标注

    • 词性定义: 动词名词形容词
    • 词性标注定义:对文本先分词,然后再标注词性
      • 词向标注也是对此的一种分类方法
        • 单词级别的分类

3 文本张量表示方法

  • 什么是文本张量表示
    • 定义:
      • 把词表示成向量的的形式,也就是词向量,一句话表示成词向量矩阵。这个过程就是文本张量表示。
    • 作用:
      • 方便输入到计算机中
    • 文本张量的表示方法:三种
      • one-hot
      • word2vec
      • wordenbedding

  • 什么是one-hot词向量表示

    • 定义: 有一个位置是1 其他全部是零

    • 编程api

      • mytokenizer.fit_on_texts(vocabs) # 生成两个表 word2idx idx2word  
        zero_list = [0] * len(vocabs)
        zero_list[idx] = 1
        joblib.dump(mytokenizer, './mytokenizer')
        mytokenizer = joblib.load('./mytokenizer')
        # oov单词问题
        
    • one-hot编码的优劣势:

      • 优点: 简单
      • 缺点: 割裂了词和词之间的关系 浪费空间、内存
        • 稀疏词向量表示
  • 什么是word2vec

    • word2vec概念

      • 1 也是一种词向量的表示方法 (把词表示成向量 ;一句话表示成向量矩阵)
      • 2 使用深度学习的方法 也就是使用深度学习网络的方法
        • 使用深度学习网络的参数 来表示词向量
        • 深度学习网络(模型)入门的重要点:区分数据和参数
        • word2vec的思想使用:深度神经网络的参数 来充当词向量
    • CBOW(Continuous bag of words)模式:

    • skipgram词向量训练模型

  • 使用fasttext工具实现word2vec的训练和使用

    • 第一步: 获取训练数据

      • wikifil.pl 文件处理脚本来清除XML/HTML格式的内容
        1. 下载语料库, wget -http://mattmahoney.net/dc/enwik9.zip
        2. 解压语料库, unzip enwik9.zip
        3. 处理语料库, perl wikifil.pl enwik9 > fil9
        4. head -n enwik9 查看多少行
        5. head -c 200 fil9_3 查看前200个单词
        
    • 第二步: 训练词向量

      • 词向量安装

        • 源码安装

        • import fasttext
          model = fasttext.train_unsupervised('data/fil9')
          model.get_word_vector("the")  # 获取词向量
          如何查看fasttext源码安装的路径
          pip freeze | grep fasttext
          > fasttext @ file:///Users/bombing/.virtualenvs/nlp-py37-env/fastText
          # 思考题:获取词向量的流程?
          # 思考题:是无监督学习吗?
          
    • 第三步: 模型超参数设定

      • dim: 默认为100
      • epoch: 默认为5
      • 学习率lr: 默认为0.05,
      • thread: 默认为12个线程
    • 第四步: 模型效果检验

      • model.get_nearest_neighbors(‘music’)
    • 第五步: 模型的保存与重加载

      • mymodel.save_model(“./data/fil9.bin”)

      • mymodel = fasttext.load_model(‘./data/fil9.bin’)

  • word embedding(词嵌入)

    • 广义的word embedding: 用深度神经网络来训练我们的词向量
      • 神经网络是浅层 – word2vec
      • 大型-----wordembedding
    • 狭义的word embedding
      • 神经网络的某一个层 nn.Eembedding

1.1 RNN模型

1 有关seq2seq架构重要场景

在这里插入图片描述

2 有关rnn的9个参数重要场景

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3 有关隐藏层个数理解重要场景

在这里插入图片描述
在这里插入图片描述

4 场景:每个时间步都是用rnn的模型权重参数在这里插入图片描述

1.2 LSTM(长短时记忆网络)

  • 门如何理解
    • 缩放系数:对一堆数据乘上一个门,相当于给一堆数据乘上一个缩放系数
    • 对输入数据进行加权!

1 场景:门的综合图在这里插入图片描述

2 场景:遗忘门和输入门在这里插入图片描述

3 场景:细胞状态和输入门在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

1.4 GRU模型

1 场景:门的综合图

在这里插入图片描述

2场景 矩阵参数数量对比

在这里插入图片描述

3 场景:有关批量的给RNN送数据

重要场景

在这里插入图片描述

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

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

相关文章

代码随想录训练营Day44

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、零钱兑换二、完全平方数三、单词拆分 前言 提示:这里可以添加本文要记录的大概内容: 今天是跟着代码随想录刷题的第44天&#xff…

LeetCode:经典题之1491、896 题解与延伸

系列目录 88.合并两个有序数组 52.螺旋数组 567.字符串的排列 643.子数组最大平均数 150.逆波兰表达式 61.旋转链表 160.相交链表 83.删除排序链表中的重复元素 389.找不同 1491.去掉最低工资和最高工资后的工资平均值 896.单调序列 206.反转链表 92.反转链表II 141.环形链表 …

Oracle自动创建分区

一、需要分区的表 create table PARTITION_TABLE_INFO ( table_name VARCHAR2(500), comments VARCHAR2(500), enable VARCHAR2(500) default Y ) / comment on table PARTITION_TABLE_INFOis 分区维护表 / comment on column PARTITION_TABLE_INFO.table_name is …

Mybatis plus:Wrapper接口

一、介绍 MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。 …

springCloud组件专题(四) --- sentinel

前言 限流,熔断降级概念 限流:顾名思义,就是对一个资源(服务或者接口都可以算资源)的访问进行限制。简单来说就是限制单位时间内允许资源被访问的次数。常见的算法就是令牌桶算法。 降级:降级其实是一种资源…

IBM IMM1服务器硬件监控指标解读

在复杂多变的IT环境中,服务器的稳定运行对于保障业务的连续性至关重要。IBM IMM1(Integrated Management Module 1)作为IBM服务器的一个重要组件,提供了强大的远程管理和监控功能。 监控易作为一款专业的IT基础设施监控软件&#…

实际中路由器故障处理方法

1.路由器的部分功能无法实现 (1)故障现象:路由器配置完全正确,但是有些功能却不能实现。 (2)故障原因:如果是在确保路由器配置正确的前提下,那么问题应该就在路由器的软件系统上。 &…

【鸿蒙】ERROR_GET_BUNDLE_INSTALLER_FAILED

错误信息 [ERROR_GET_BUNDLE_INSTALLER_FAILED] Troubleshooting guide $ hdc file send D:\Huawei\devEcoProjects\entry\build\default\outputs\default\entry-default-unsigned.hap /sdcard/e8a215ea7be1444197e6a58ebda7721f/entry-default-unsigned.hap Error while Depl…

26.3 Django路由层

1. 路由作用 在Django中, URL配置(通常称为URLconf)是定义网站结构的基础, 它充当着Django所支撑网站的目录. URLconf是一个映射表, 用于将URL模式(patterns)映射到Python的视图函数或类视图上. 这种映射机制是Django处理HTTP请求的基础, 它决定了当客户端发送请求时, Django如…

什么是DND网络?

DND网络通常指的是“无人机网络”(Drone Network),它是通过多个无人机(Drones)之间的相互连接和通信形成的网络系统。无人机网络是一种特殊类型的无线自组织网络(Wireless Ad-hoc Network)&…

Java中的线程安全与同步技术

Java中的线程安全与同步技术 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨Java中的线程安全问题以及如何利用同步技术来保证多线程环境下的…

免费ddns工具,快解析DNS解析使用教程

DDNS(Dynamic Domain Name Server),中文叫动态域名解析,主要用于没有固定公网ip的网络环境下,使用一个固定的域名,解析动态变化的ip地址,达到远程访问的目的。 众所周知,目前公网ip资源非常紧缺…

Golang | Leetcode Golang题解之第187题重复的DNA序列

题目&#xff1a; 题解&#xff1a; const L 10 var bin map[byte]int{A: 0, C: 1, G: 2, T: 3}func findRepeatedDnaSequences(s string) (ans []string) {n : len(s)if n < L {return}x : 0for _, ch : range s[:L-1] {x x<<2 | bin[byte(ch)]}cnt : map[int]in…

OLAP(联机分析处理)和OLTP(联机事务处理)详细介绍与发展历程

OLAP&#xff08;Online Analytical Processing&#xff0c;联机分析处理&#xff09;和OLTP&#xff08;Online Transaction Processing&#xff0c;联机事务处理&#xff09;是数据库系统中两种不同的处理模式&#xff0c;各自有不同的应用场景和技术特点。以下是对OLAP和OLT…

解决MNIST数据集下载慢,或者Http连接失败问题

下载MNIST数据集时遇到速度慢的问题 解决&#xff1a;手动从MNIST数据集的官方网站直接使用下载好的数据文件&#xff0c;放到指定目录下&#xff0c;再进行调取即可。 手动下载地址&#xff1a;MNIST官网 http://yann.lecun.com/exdb/mnist/ 【仍需要连接外网】 这里我提供…

【强化学习】DQN走迷宫(一)

书接上回&#xff0c;《【强化学习】Q-learning训练AI走迷宫》&#xff08;去年的&#xff09; 本节讲述在相同的环境下&#xff0c;使用DQN来走迷宫。&#xff08;假设我们已经了解相关基础。&#xff09; 一. 概念重温 1.1 什么是DQN&#xff1f; 让我们从颗粒度上对齐一下…

Mybatis分页查询,同时返回total

在垃圾项目中一般都是使用mybatis plus自动返回Page,但是涉及到多表联合或者等等情况最终还是要使用mybatis进行手写sql查询,所以有此文章以便后续使用查询. 首先mysql需要支持多条查询语句,在mysql配置url后加上: &allowMultiQueriestrue&useAffectedRowstrue Mapper…

C语言 | Leetcode C语言题解之第188题买卖股票的最佳时机IV

题目&#xff1a; 题解&#xff1a; int maxProfit(int k, int* prices, int pricesSize) {int n pricesSize;if (n 0) {return 0;}k fmin(k, n / 2);int buy[k 1], sell[k 1];memset(buy, 0, sizeof(buy));memset(sell, 0, sizeof(sell));buy[0] -prices[0];sell[0] 0…

上证所抓包实战

第 2 页jsonCallBack 回调函数Request Headers爬取股票列表下载时间戳Initiator在 Network 中抓到的包,有 Headers、Payload、Preview、Response、Initiator、Timing、Cookies 面板,从这些面板中获取有用的信息来写脚本。 上海证券交易所 https://www.sse.com.cn/assortment…

Rsync未授权访问-vulfocus

1.原理 Rsync是linux上文件传输的协议&#xff0c;如果有返回直接可以看到&#xff0c;部分主机使用协议的时候不会加密码&#xff0c;就容易造成未授权访问漏洞 2.复现 打开vulfocus.io,搜索rsync关键字&#xff0c;打开环境 在自己的主机上去连接远程服务器&#xff1a; r…