NLP超详细新手快速入门上手篇(1)常用函数

news2024/11/24 15:34:57

前言

自然语言处理(NLP)是机器学习的应用之一,用于分析、理解和生成自然语言,以便人类与计算机,人类与人类更好的交流。自然语言处理按照任务类型可以分为分类、匹配、翻译、结构化预测、与序贯决策过程这五类。

本篇参考自TensorFlow官方文档,旨在让大家能够通过简单的代码,快速上手自己的第一个nlp模型

1、安装tensorflow环境

  • 使用annaconda傻瓜化安装,不会的,可以参考这篇
    TensorFlow安装(国内源,速度飞快)

  • 已经安装的,跳过这一步

2、分词

机器学习之所以看上去可以解决很多复杂的问题,是因为它把这些问题都转化为了数学问题。⽽ NLP 也是相同的思路,⽂本都是⼀些「⾮结构化数据」,我们需要先将这些数据转化为「结构化数据」,结构化数据就可以转化为数学问题了,⽽分词就是转化的第一步。

本篇先以英文为例,中文分词后续会介绍

2.1 分词实例

例:

# 导包
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences

# 句子列表
d=[
    'i love my dog',
    'i love my cat',
    'you love me!'
]
 

tokenizer=Tokenizer(num_words=100) # 实例化一个分词器对象 参数:保留最大单词数,超出则忽略
tokenizer.fit_on_texts(d)          # 开始分词 传入一个列表
word_index=tokenizer.word_index    # 使用分词器的word_index方法获得分词索引
print(word_index)   # 打印分词索引

2.2 分词索引

输出:
在这里插入图片描述

从输出结果,我们可以看到:

  • 每一个组成句子的单词,都有了自己的索引,也就是相当于“数字化”了
  • 即便单词有符号,符号也会自动被过滤掉

3、文本句子转换为数字序列

在 TensorFlow 中,texts_to_sequences 是将文本转换为序列的函数。它可以将一个包含多个句子的文本数据集转换为一个由单个整数组成的序列,每个整数代表该句子在数据集中的位置。

具体来说,texts_to_sequences 函数接受两个参数:

  • input:表示输入的文本数据集,通常是一个二维的字符串矩阵,每行代表一个句子。
  • seq_length:表示每个句子的长度,如果不指定,则默认为最大句子长度。

例:

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
d=[
    'i love my dog',
    'i love my cat',
    'you love me!'
]

tokenizer=Tokenizer(num_words=100,oov_token='<OOV>') # 实例化一个分词器对象 参数:保留最大单词数,超出则忽略 oov是没有见过的词
tokenizer.fit_on_texts(d)  # 开始分词 传入一个列表
word_index=tokenizer.word_index    # 使用分词器的word_index方法获得分词索引
sequences=tokenizer.texts_to_sequences(d)  # 使用分词器的texts_to_sequences方法将句子转换为数字序列

print(word_index)
print(sequences)

输出:
在这里插入图片描述

  • 可以看到句子转换后的序列,与分词索引的对应关系
  • oov用于替代句子中有,而语料库中没有的,也就是没有见过的词,以保证句子转序列后长度不变

4、序列填充

为什么要填充,我们看以下几个句子:
在这里插入图片描述
我们可以看到,句子的长度是不一样的,这样,转换序列后的长度也肯定是不一样的!

如果数据长度不一致,我们无法进行后续的训练,所以,需要处理成一样的。

例:

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
d=[
    'i love my dog',
    'i love my cat',
    'do you think my dog is amazing!'
]

tokenizer=Tokenizer(num_words=100,oov_token='<OOV>') # 实例化一个分词器对象 参数:保留最大单词数,超出则忽略 oov是没有见过的词
tokenizer.fit_on_texts(d)          # 开始分词 传入一个列表
word_index=tokenizer.word_index    # 使用分词器的word_index方法获得分词索引
print("分词索引:")
print(word_index)

sequences=tokenizer.texts_to_sequences(d)  # 使用分词器的texts_to_sequences方法将句子转换为数字序列
print("句子序列:")
print(sequences)
 

pad=pad_sequences(sequences)  # 使用pad_sequences对序列后的数据进行长度一致填充
print("填充处理后的句子序列:")
print(pad)

输出:
在这里插入图片描述
可以看到,填充处理后的长度,是一致的。
且长度以所有句子最长那个为准。

我们也可以定义填充函数pad_sequences()的参数:

  • padding: post 填充前面 ,pre 填充后面
  • truncating:post 超出长度截断前面 , pre 超出长度截断后面
  • maxlen:数字,不看齐最长,指定一个长度

如:pad_sequences(d, padding='post')

下一篇我们一起搭建一个最简单的nlp模型

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

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

相关文章

MyBatis 查询数据库

✏️作者&#xff1a;银河罐头 &#x1f4cb;系列专栏&#xff1a;JavaEE &#x1f332;“种一棵树最好的时间是十年前&#xff0c;其次是现在” 目录 MyBatis 是什么&#xff1f;第⼀个MyBatis查询创建数据库和表添加MyBatis框架支持设置 MyBatis 配置信息添加业务代码 查询操…

【VBA】实现批量生成二维码

系列文章 【C#】单号生成器&#xff08;编号规则、固定字符、流水号、产生业务单号&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129129787 【C#】日期范围生成器&#xff08;开始日期、结束日期&#xff09; 本文链接&#xff1a;h…

Nginx - ​一个高性能、灵活可靠的开源Web服务器

Nginx是什么&#xff1f; Nginx是一个高性能的HTTP和反向代理web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点&#xff08;俄文&#xff1a;Рамблер&#xff09;开发的&#xff0c;第一个公开版本0.1…

idea使用native-image打包springboot项目

native-image简介 native-image 是一个用于将 Java 程序编译为本地可执行文件的工具。它是 GraalVM 的一部分&#xff0c;GraalVM 是一个高性能的通用虚拟机&#xff0c;支持多种语言。 使用步骤 下载GraalVM 安装 GraalVM&#xff1a;首先&#xff0c;你需要安装 GraalVM。…

20230603-周六随笔

周六闲来无事&#xff0c;给新电脑装下开发环境&#xff0c;记录一下遇到的问题 git下载代码报错 报错1&#xff1a;schannel: SEC_E_UNTRUSTED_ROOT (0x80090325)解决方法&#xff1a;执行git config --system http.sslbackend openssl命令 报错2&#xff1a;SSL certifica…

【Java 8 新特性】获取对象列表中的某个属性组成的列表

文章目录 获取对象列表中的某个属性组成的列表1、用法示例2、详细案例 附录&#xff1a;Java 8 Stream 基本用法1、map2、filter3、forEach4、limit5、sorted6、并行&#xff08;parallel&#xff09;程序7、Collectors8、统计 获取对象列表中的某个属性组成的列表 1、用法示例…

高完整性系统工程(十一):Fault Tolerant Design

目录 1. INTRODUCTION TO FAULT TOLERANCE 1.2 Definitions 1.3 Two Kinds of Faults 1.4 Hardware vs Software Faults 1.4.1 Failure Curve for Hardware 1.4.2 Hardware and Software Failures 1.5 Causes of Failures 1.6 3 Ways to Class Failures 1.6.1 Tempora…

【LLM】大模型值得探索的十个研究方向

note 基础理论&#xff1a;大模型的基础理论是什么&#xff1f; 网络架构&#xff1a;Transformer是终极框架吗&#xff1f; 高效计算&#xff1a;如何使大模型更加高效&#xff1f; 高效适配&#xff1a;大模型如何适配到下游任务&#xff1f; 可控生成&#xff1a;如何实…

ChatGPT有关的模块知多少?

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 ChatGPT有关的模块知多少&#xff1f; &#x1f9ca;摘要&#x1f9ca;ChatGPT 开发库清单 &#x1f9ca;摘要 本文介绍了基于OpenAI ChatGPT 的API 开发的python 模块库。【原创&am…

STM32cubemx定时外部模式测量10M以上频率

STM32cubemx定时外部模式测量10M以上频率 本文讲解利用定时器的外部时钟功能&#xff0c;巧妙测量高频外部信号频率。范围可以到高达30M以上。 所需工具&#xff1a; 开发板:STM32F103RCT6STM32CubeMXIDE: Keil-MDK 文章目录 STM32cubemx定时外部模式测量10M以上频率原理讲解…

【Java技术专题】「Guava开发指南」手把手教你如何进行使用Guava工具箱进行开发系统实战指南(Optional篇)

Guava相关的介绍 Guava工程包含了许多被Google的Java项目广泛依赖的核心库。我们希望通过本文档为Guava中最流行和最强大的功能提供更具可读性和解释性的说明。 本教程是中级教程&#xff0c;适合 Guava 中级开发者的进阶学习。 学习Guava前的准备工作 学习目标和计划&#xf…

Python学习笔记 - 探索集合Set

尊敬的各位&#xff0c;我是Mr.数据杨&#xff0c;非常高兴和你们一起走进Python的世界。今天&#xff0c;让我们一起探讨Python中神奇的“集合”。你们是否读过《三国演义》&#xff1f;你们应该记得那场赫赫有名的“桃园三结义”吧&#xff1f;那让我们以此为例&#xff0c;来…

Windows动态链接库的生成和使用

工程需要&#xff0c;最近在编一组Windows上的动态链接库给Python调用。之前做过Linux下C动态库的编译&#xff0c;并提供给Python调用&#xff0c;Windows下的编译跟Linux还是有些差距&#xff0c;因此花了一点时间跑通&#xff0c;在这里记录一下。 为了完整对比&#xff0c…

Hive on Spark环境搭建

Hive 引擎简介 Hive 引擎包括&#xff1a;默认 MR、tez、spark 最底层的引擎就是MR &#xff08;Mapreduce&#xff09;无需配置&#xff0c;Hive运行自带 Hive on Spark&#xff1a;Hive 既作为存储元数据又负责 SQL 的解析优化&#xff0c;语法是 HQL 语法&#xff0c;执行…

(2.54mm)TSM-120-04-S-DV-P-TR方形接线柱针脚、ADRF5545ABCPZN(通用)射频前端 SPDT

TSM-120-04-S-DV-P-TR (2.54mm) 表面安装.025"方形接线柱针脚是板对板连接器&#xff0c;有单排、双排或三排方形接线柱端子可供选择&#xff0c;带直通、直角或混合技术引脚。这些高度可靠的坚固针脚有垂直和水平两种方向&#xff0c;在混合气流 (MFG) 环境中可使用10年。…

【C语言实现简易ATM】上个C语言程序设计课,我成产品经理了?

博主简介&#xff1a;Hello大家好呀&#xff0c;我是陈童学&#xff0c;一个与你一样正在慢慢前行的人。 博主主页&#xff1a;陈童学哦 所属专栏&#xff1a;C语言程序设计实验项目 如果本文对你有所帮助的话&#xff0c;还希望可以点赞&#x1f44d;收藏&#x1f4c2;支持一下…

2023年京东618满300减50是全品类吗?满减叠卷怎么用?

2023年京东618满300减50是全品类吗?满减叠卷怎么用? 京东平台上有着比较多的卖家开店&#xff0c;在对店铺进行运营的过程中&#xff0c;很多卖家都会参与平台的一些活动&#xff0c;这样能够有效的将产品推广出去&#xff0c;对于618大促活动也是属于其中活动之一&#xff0…

代码随想录第52天

1.最长递增子序列 接下来&#xff0c;我们依然用动规五部曲来详细分析一波&#xff1a; dp[i]的定义 本题中&#xff0c;正确定义dp数组的含义十分重要。 dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度 为什么一定表示 “以nums[i]结尾的最长递增子序” &…

软考A计划-电子商务设计师-专业英语

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

高压侧电流检测电路及仿真

高压侧电流检测电路仿真 电路图如下 主要设计思想&#xff0c;通过两组电阻将高压侧的共模电压降到运放&#xff08;此处也可以使用单电源运放&#xff09;的工作电压范围内。然后在进行二次放大。主要放大倍数取决于第二级放大侧电阻比值。因此如果需要减小功耗&#xff0c;可…