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送数据

重要场景

在这里插入图片描述

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

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

相关文章

cesium 添加 Echarts 饼图

cesium 添加 Echarts 饼图 1、实现思路 1、首先创建echarts饼图,拿到创建好的canvas 2、用echarts里面生成的canvas添加到cesium billboard中 2、示例代码 <!DOCTYPE html> <html lang="en"><head><

实验四:复合对象的基本应用

如果文章有写的不准确或需要改进的地方&#xff0c;还请各位大佬不吝赐教&#x1f49e;&#x1f49e;&#x1f49e;。朱七在此先感谢大家了。&#x1f618;&#x1f618;&#x1f618; &#x1f3e0;个人主页&#xff1a;语雀个人知识库 &#x1f9d1;个人简介&#xff1a;大家…

QT事件处理系统之五:自定义事件的发送案例 sendEvent和postEvent接口

1、案例 双击窗口,会发送 自定义事件,然后在事件过滤中心进行拦截处理自定义事件。 2、核心代码 /*解释:双击窗口时,将产生双击事件,然后该事件被包裹成一个对象,随后将会被发往event事件中心,然后进行事件的处理(Widget对象);因为m_lineEdit开启了事件过滤机制,所…

2025秋招NLP算法面试真题(二)-史上最全Transformer面试题:灵魂20问帮你彻底搞定Transformer

简单介绍 之前的20个问题的文章在这里&#xff1a; https://zhuanlan.zhihu.com/p/148656446 其实这20个问题不是让大家背答案&#xff0c;而是为了帮助大家梳理 transformer的相关知识点&#xff0c;所以你注意看会发现我的问题也是有某种顺序的。 本文涉及到的代码可以在…

2024全网最全面及最新且最为详细的网络安全技巧四 之 lsql注入以及mysql绕过技巧 (1)———— 作者:LJS

目录 4. SQL注入基础之联合查询 什么是SQL注入漏洞 SQL注入原理 SQL注入带来的危害 注入按照注入技术&#xff08;执行效果&#xff09;分类 简单联合查询注入语句 4.1 [网鼎杯 2018]Comment二次注入 正好总结一下绕过addslashes的方式 4.2 ciscn2019web5CyberPunk 复现平台 解…

四川汇聚荣科技有限公司怎么样?

在探讨一家科技公司的综合实力时&#xff0c;我们往往从多个维度进行考量&#xff0c;包括但不限于公司的发展历程、产品与服务的质量、市场表现、技术创新能力以及企业文化。四川汇聚荣科技有限公司作为一家位于中国西部的科技企业&#xff0c;其表现和影响力自然也受到业界和…

卧槽,6。套死你猴子,Tomcat访问html页面显示源码?

卧槽&#xff0c;6。Tomcat访问html页面显示源码&#xff1f; 元凶text/explain //踩坑&#xff01;&#xff01;&#xff01;不能用 servletResponse.setContentType("text/explain&#xff0c;否则访问html会看到源码&#xff0c;而不是渲染页面; charsetUTF-8"…

接口提示信息国际化, 调用LibreTranslate 离线翻译, 国际化支持

文章目录 背景实现方式步骤下载并部署离线翻译服务;前端接入 背景 将接口返回内容进行翻译, 以适配多语言需求; 实现方式 前端拦截接口返回内容, 调用离线翻译服务进行翻译, 翻译之后再进行相应的提示 参考资料: 离线翻译服务: https://github.com/LibreTranslate/LibreTra…

ADD属性驱动架构设计(一)

目录 一、架构设计过程 1.1、架构设计过程 1.1.1、设计目的 1.1.2、质量属性&#xff08;非功能需求&#xff09; 1.1.3、核心功能&#xff08;功能需求&#xff09; 1.1.4、架构关注 1.1.5、约束条件 1.2、基于设计过程 二、什么是ADD? 三、为什么选择ADD? 四、作…

力扣SQL50 超过5名学生的课

Problem: 596. 超过5名学生的课 Code select class from courses group by class having count(distinct student) > 5;

【转型指南】从软件测试到技术多面手

★ 导言 小艺是一位毕业于985的计算机硕士&#xff0c;工作多年&#xff0c;现在某大厂从事软件测试方面的管理工作。目前在工作中游刃有余&#xff0c;但面对技术的飞速变化和职业发展的不确定性&#xff0c;还是难免焦虑&#xff0c;正在积极思考如何进一步提升自己&#xff…

【图文解说】BP神经网络与深度学习CNN的关系

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、BP神经网络网络是什么二、BP神经网络用于图象识别问题1.1.BP神经网络解决图象识别问题1.2.BP神经网络解决图象识别问题的困难 三、从BP到CNN深度学习模型 BP神经网络是一个经典、有效的算法&#xff0c;即使…

【Java】已解决java.lang.FileNotFoundException异常

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决java.lang.FileNotFoundException异常 在Java编程中&#xff0c;java.lang.FileNotFoundException是一个常见的异常&#xff0c;它通常表示程序试图打开一个不存在的文件、文…

LabVIEW与3D相机开发高精度表面检测系统

使用LabVIEW与3D相机开发一个高精度表面检测系统。该系统能够实时获取三维图像&#xff0c;进行精细的表面分析&#xff0c;广泛应用于工业质量控制、自动化检测和科学研究等领域。通过真实案例&#xff0c;展示开发过程中的关键步骤、挑战及解决方案&#xff0c;确保系统的高性…

python - 变量和字符串

一.变量 变量名就像我们现实社会的名字&#xff0c;把一个值赋值给一个名字时&#xff0c;Ta会存储在内存中&#xff0c;称之为变量&#xff08;variable&#xff09;&#xff0c;在大多数语言中&#xff0c;都把这种行为称为“给变量赋值”或“把值存储在变量中”。 •不过P…

重复文件清理软件怎么用?分享3个删除重复文件的方法!

删除重复文件能够为电脑腾出很大的存储空间&#xff0c;不信&#xff1f;可以试试看哦&#xff01; 电脑使用久了&#xff0c;都会积累大量的文件&#xff0c;这其中难免会出现重复的文件&#xff0c;这些重复文件没有任何作用&#xff0c;而且会占用着电脑的空间&#xff0c;…

react笔记-04redux篇

redux和react-redux笔记&#xff0c;以及项目中如何使用&#xff0c;对redux的封装&#xff0c;让其使用类似于vuex一样方便。 一、redux 1. redux工作流程 流程&#xff1a;创建action > dispatch分发action > 交给store > reducer加工数据返回给store 2. redux的…

【UML用户指南】-21-对基本行为建模-活动图

目录 1、概念 2、组成结构 2.1、动作 2.2、活动节点 2.3、控制流 2.4、分支 2.5、分岔和汇合 2.6、泳道 2.7、对象流 2.8、扩展区域 3、一般用法 3.1、对工作流建模 3.2、对操作建模 一个活动图从本质上说是一个流程图&#xff0c;展现从活动到活动的控制流 活动图…

虚拟现实环境下的远程教育和智能评估系统(十三)

管理/教师端前端工作汇总education-admin&#xff1a; 首先是登录注册页面的展示 管理员 首页 管理员登录后的首页如下图所示 管理员拥有所有的权限 课程管理 1、可以查看、修改、增添、删除课程列表内容 2、可以对课程资源进行操作 3、可以对课程的类别信息进行管理&…

C++基础知识——引用

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 博主主页&#xff1a;Yan. yan.                        …