【小白学习keras教程】十一、Keras中文本处理Text preprocessing

article/2025/8/17 2:32:23

@Author:Runsen

文章目录

  • Text preprocessing
      • Tokenization of a sentence
      • One-hot encoding
      • Padding sequences
      • Word Embeddings
      • Word vectors
      • Embedding layer

本次博客将介绍如何在Keras中,对文本进行处理Text preprocessing

Text preprocessing

  • Keras API
  • 文档: https://keras.io/preprocessing/text/
from tensorflow.keras.preprocessing.text import Tokenizer, text_to_word_sequence, one_hot
from tensorflow.keras.preprocessing.sequence import pad_sequences

Tokenization of a sentence

  • Tokenizatio:将字符序列转换成符号序列的过程 (https://en.wikipedia.org/wiki/Lexical_analysis#Token)
sentences = ['Curiosity killed the cat.', 'But satisfaction brought it back']
tk = Tokenizer()    # create Tokenizer instance
tk.fit_on_texts(sentences)    # tokenizer should be fit with text data in advance
  • 文本建模的一种简单方法是为每个句子创建整数序列

  • 通过这样做,可以保留有关单词顺序的信息

seq = tk.texts_to_sequences(sentences)
print(seq)

[[1, 2, 3, 4], [5, 6, 7, 8, 9]]

One-hot encoding

有时,只需要检查某个词是否出现在句子中,这种文本处理的方式被称为“一One-hot encoding ”。

  • 如果单词出现在句子中,它被编码为“1”
  • 如果不是,则编码为“0”
mat = tk.sequences_to_matrix(seq)
print(mat)

[[0. 1. 1. 1. 1. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 1. 1. 1. 1. 1.]]

Padding sequences

  • 通常,为了保持句子的维数,会执行zero padding
  • Padding 就像填充图像格式,但适用于序列
# if set padding to 'pre', zeros are appended to start of sentences
pad_seq = pad_sequences(seq, padding='pre')     
print(pad_seq)

[[0 1 2 3 4]
[5 6 7 8 9]]

、pad_seq = pad_sequences(seq, padding='post')
print(pad_seq)

[[1 2 3 4 0]
[5 6 7 8 9]]

Word Embeddings

  • 另一种单词嵌入的方法是通过在word embedding中预先训练单词向量(例如word2vec、GloVe、fasttext等)

Word vectors

单词嵌入是将每个单词转换成一个固定维度(单词)向量的过程。嵌入空间(即向量空间)的维数是一个超参数;可以将维数设置为任何正整数

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import *
from tensorflow.keras.datasets import reuters
from tensorflow.keras.preprocessing import sequence
from tensorflow.keras.utils import to_categorical

Embedding layer

因此,Embedding layer具有三维张量

  • Output 输出形状= (batch_size, input_length, output_dim)
  • input_dim 输入尺寸:输入空间的维数(感兴趣的唯一标记的数量)
  • output_dim 输出尺寸:嵌入空间的维数
  • input_length 输入长度:输入序列的长度(如果没有,可以改变)
#输入长度不变时
model = Sequential()
model.add(Embedding(input_dim = 10, output_dim = 5, input_length = 3))
model.output_shape

(None, 3, 5)

# when input length varies
model = Sequential()
model.add(Embedding(input_dim = 10, output_dim = 5, input_length = None))    
model.output_shape

(None, None, 5)

在model中,通常采用 embedding layer作为第一层对文本格式的数据进行建模

# parameters to import dataset
num_words = 3000
maxlen = 50(X_train, y_train), (X_test, y_test) = reuters.load_data(num_words = num_words, maxlen = maxlen)
X_train = sequence.pad_sequences(X_train, maxlen = maxlen, padding = 'post')
X_test = sequence.pad_sequences(X_test, maxlen = maxlen, padding = 'post')
y_train = to_categorical(y_train, num_classes = 46)
y_test = to_categorical(y_test, num_classes = 46)
print(X_train.shape)
print(X_test.shape)
print(y_train.shape)
print(y_test.shape)

(1595, 50)
(399, 50)
(1595, 46)
(399, 46)

input_dim = num_words
output_dim = 100     # we set dimensionality of embedding space as 100
input_length = maxlen
def reuters_model():model = Sequential()model.add(Embedding(input_dim = input_dim, output_dim = output_dim, input_length = input_length))model.add(GRU(50, return_sequences = False))model.add(Dense(100))model.add(Activation('relu'))model.add(Dense(46, activation = 'softmax'))model.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])return model
model = reuters_model()model.summary()

model.fit(X_train, y_train, epochs = 10, batch_size = 256, verbose = 1)
result = model.evaluate(X_test, y_test)
print('Test Accuracy: ', result[1])

Test Accuracy: 0.7468671798706055


http://chatgpt.dhexx.cn/article/2r0JryVs.shtml

相关文章

Tensorflow和Keras基础使用教程

视频教程:B站、网易云课堂、腾讯课堂 代码地址:Gitee、Github 存储地址: 百度云-提取码: Google云 1.Tensorflow和Keras简介2.Tensorflow3.实现线性回归4.保存和恢复模型5.TensorBoard监控6. 实现第一个神经网络 7.Keras8.Keras的…

Keras教程:使用Keras开始深度学习和Python(上)

概述:包括什么内容呢 用Keras训练第一个简单的神经网络不需要很多代码,但是我们将慢慢开始,逐步进行,确保您理解如何在自己的自定义数据集上训练网络。 我们今天要讨论的步骤包括: 在系统上安装Keras和其他依赖项 从磁盘加载数据 创建训练和测试分支 定义您的Keras模型体…

Keras入门教程 6.Keras 预训练模型应用

Keras 入门教程 1.线性回归建模(快速入门)2.线性模型的优化3.波士顿房价回归 (MPL)4.卷积神经网络(CNN)5.使用LSTM RNN 进行时间序列预测6.Keras 预训练模型应用 Keras 预训练模型应用 Keras 应用模块用于为深度神经网络提供预训…

keras教程_Keras教程

keras教程 Keras教程 (Keras Tutorial) PDF Version Quick Guide Resources Job Search Discussion PDF版本 快速指南 资源资源 求职 讨论区 Keras is an open source deep learning framework for python. It has been developed by an artificial intelligence researcher at…

深度学习——keras教程系列基础知识

大家好,本期我们将开始一个新的专题的写作,因为有一些小伙伴想了解一下深度学习框架Keras的知识,恰好本人也会一点这个知识,因此就开始尝试着写一写吧。本着和大家一起学习的态度,有什么写的不是很好的地方还请大家多多…

Keras实例教程(4)之迁移学习

迁移学习(Transfer Learning)是机器学习中的一个重要研究话题,也是在实践中具有重要价值的一类技术。Transfer learning focuses on storing knowledge gained while solving one problem and applying it to a different but related problem. 举例来说,在之前的文章中,我…

保姆级教程:手把手教你使用 Keras 搭建神经网络

大家好,本文从0到1详细讲解两种基于Keras的建模方法: 基于Sequential的建模;快速方便,易上手 基于函数式API的建模;易于扩展,灵活性强 文章目录 你会学到什么?技术提升导入内置数据集数据缩放…

keras教程-静态图编程框架keras-学习心得以及知识点总结

在过去的四个月里(2020三月开始的),和朋友一起对着官网的keras教程学习了一遍,学习的过程中发现有一些解释的不清楚的地方(官网的教程实在是~~~),我们自己做了实验,探索了问题的各个…

keras入门教程

线性回归非线性模型MNIST手写数字识别 改进欠拟合,过拟合 early stopDropout正则化梯度下降 批量梯度下降随机梯度下降小批量梯度下降其他找寻最低点的方法卷积神经网络RNN模型的保存和载入 保存模型载入模型绘制神经网络的结构 几个keras学习的网址: 1.…

超快速!10分钟入门Keras指南

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 本文转自|机器学习算法工程师 1 Keras框架介绍在用了一段时间的Keras后感觉真的很爽,所以特意祭出此文与我们公众号的粉丝分享。 Keras是一个非常方便的深度…

LinuxReader —— 在windows下查看linux系统文件

怕忘了有这个一个方法,记录一下 我是用everything查看文件夹位置,然后点击: 直接可以查看Linux下的文件: 还有饼状图:

如何查看Linux系统的硬件配置

1、查看Linux系统的cpu的个数 cat /proc/cpuinfo | grep "model name"2、查看Linux系统的内存大小 cat /proc/meminfo | grep "MemTotal"3、查看Linux系统文件系统磁盘挂在情况 df -h也可以使用fdisk -l查看磁盘总概况

查看linux系统的glibc版本

查看linux系统的glibc版本 getconf GNU_LIBC_VERSION # 或者 ldd --version

查看Linux系统的初始安装时间

偶然在网上冲浪的时候看到有人问如何查看自己的linux系统的最初的安装时间,然后研究了一下,大致总结出了几个方法。 1.先查看系统盘挂到哪个分区上,然后用 dumpe2fs 查看这个磁盘分区 创建的时间 2.查看 lostfound 目录的时间 3.使用uptime(前…

查看linux系统CPU内存

文章目录 1 查看linux系统的CPU型号、类型以及大小2 查看linux系统内存总内存,剩余内存、可使用内存等信息3 查看linux系统各分区的使用情况4 查看linux系统内存使用量和交换区使用量5查看系统版本 1 查看linux系统的CPU型号、类型以及大小 cat /proc/cpuinfo | mo…

linux 怎么查看内核日志,怎样查看Linux系统日志?

原标题:怎样查看Linux系统日志? 很多企业都会使用Linux系统,审计Linux系统日志可以提供有关网络事件的重要信息。高效查看Linux系统日志对工作而言十分重要,以下是常用命令 # uname -a # 查看内核/操作系统/CPU信息 # cat /etc/is…

怎么查看linux系统防火墙,如何查看linux系统中防火墙的状态

如何查看linux系统中防火墙的状态 发布时间:2020-04-23 13:52:39 来源:亿速云 阅读:253 作者:小新 这篇文章主要为大家详细介绍了如何查看linux系统中防火墙的状态,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。 linux防火墙状态查看的…

查看Linux系统负载命令

查看Linux系统负载的命令一般常用的有5种: 1.uptime 该命令可以显示的信息依次为:现在时间、系统已运行了多长时间、目前有多少登录用户、系统过去1分钟,5分钟,15分钟内的平均负载。 18:36:16 //系统当前时间 up 0 m…

查看linux系统是centos还是ubuntu的方法

查看系统架构信息: 1、uname -a 2、cat /proc/version 查看Linux系统是ubuntu还是CentOS 1、cat /etc/redhat-release 适用于:CentOS,RedHat 若回显中包含CentOS ,则为CentOS系统。ubuntu系统不支持该命令 2.cat /etc/issu…

查看Linux系统是UBUNTU还是CentOS的方法

使用以下命令查看Linux系统是UBUNTU还是CentOS,在命令行下输入: 1、cat /etc/redhat-release 适用于:CentOS,RedHat 如图,出现CentOS ,则为CentOS系统。 2.cat /etc/issue 显示如下图,则为Ce…