Keras文本分类

keras bert 文本分类实战 1 .目标 对给出的数据集,判断给出的text,属于什么类型。 数据集: 2.数据处理 将文本(text)和标签(label)转成计算机可以识别的数字。 首先读取数据,将数据打乱 对label :将label转化为数字对应的数字,并保存 例如: 构建全部的数据集,变成 [(text1,lable1),(text2,lable2)…]的形式 例如: 划分训练集和验证集 接下来处理text部分,需要将text部分处理成为计算机可以识别的数字,根据bert给的词典进行映射到对应id (1) 阅读详情

内置样本

影评正负2分类(已编码)

from keras.datasets import imdb  # Internet Movie Database
# num_words设定较小时,会发现高频词多是停词
(x, y), _ = imdb.load_data(num_words=1)
print(x.shape, y.shape)  # (25000,) (25000,)
# 词与ID间的映射
word2id = imdb.get_word_index()
id2word = {i: w for w, i in word2id.items()}
print(x[0])
print(' '.join([id2word[i] for i in x[0]]))

序列截断或补齐为等长

from keras.preprocessing.sequence import pad_sequences
maxlen = 2
print(pad_sequences([[1, 2, 3], [1]], maxlen))
"""[[2 3] [0 1]]"""
print(pad_sequences([[1, 2, 3], [1]], maxlen, value=9))
"""[[2 3] [9 1]]"""
print(pad_sequences([[1, 2, 3], [1]], maxlen, padding='post'))
"""[[2 3] [1 0]]"""
print(pad_sequences([[1, 2, 3], [1]], maxlen, truncating='post'))
"""[[1 2] [0 1]]"""

词嵌入

from keras.datasets.imdb import load_data  # 影评情感2分类
from keras.preprocessing.sequence import pad_sequences
from keras.models import Sequential
from keras.layers import Embedding, Flatten, Dense

"""配置"""
num_words = 10000  # 按词频大小取样本前10000个词
input_dim = num_words  # 词库大小(必须>=num_words)
maxlen = 25  # 序列长度
output_dim = 40  # 词向量维度
batch_size = 128
epochs = 2

"""数据读取与处理"""
(x, y), _ = load_data(num_words=num_words)
x = pad_sequences(x, maxlen)

"""建模"""
model = Sequential()
# 词嵌入:词库大小、词向量维度、固定序列长度
model.add(Embedding(input_dim, output_dim, input_length=maxlen))
# 平坦化:maxlen * output_dim
model.add(Flatten())
# 输出层:2分类
model.add(Dense(units=1, activation='sigmoid'))
# RMSprop优化器、二元交叉熵损失
model.compile('rmsprop', 'binary_crossentropy', ['acc'])
# 训练
model.fit(x, y, batch_size, epochs)

"""模型可视化"""
model.summary()

在这里插入图片描述

词嵌入+RNN

from keras.datasets.imdb import load_data  # 影评情感2分类
from keras.preprocessing.sequence import pad_sequences
from keras.models import Sequential
from keras.layers import Embedding, Dense, SimpleRNN
import matplotlib.pyplot as mp

"""配置"""
num_words = 10000  # 按词频大小取样本前10000个词
input_dim = num_words  # 词库大小(必须>=num_words)
maxlen = 25  # 序列长度
output_dim = 40  # 词向量维度
units = 32  # RNN神经元数量
batch_size = 128
epochs = 3

"""数据读取与处理"""
(x, y), _ = load_data(num_words=num_words)
x = pad_sequences(x, maxlen)

"""建模"""
model = Sequential()
model.add(Embedding(input_dim, output_dim, input_length=maxlen))
model.add(SimpleRNN(units, return_sequences=True))  # 返回序列全部结果
model.add(SimpleRNN(units, return_sequences=False))  # 返回序列最尾结果
model.add(Dense(units=1, activation='sigmoid'))
model.summary()

"""编译、训练"""
model.compile('rmsprop', 'binary_crossentropy', ['acc'])
history = model.fit(x, y, batch_size, epochs, verbose=2,
                    validation_split=.1)  # 取10%样本作验证

"""精度曲线"""
acc = history.history['acc']
val_acc = history.history['val_acc']
mp.plot(range(epochs), acc)
mp.plot(range(epochs), val_acc)
mp.show()

在这里插入图片描述

词嵌入+CNN

from keras.datasets.imdb import load_data  # 影评情感2分类
from keras.preprocessing.sequence import pad_sequences
from keras.models import Sequential
from keras.layers import Embedding, Dense,\
    Conv1D, MaxPool1D, GlobalMaxPool1D

"""配置"""
num_words = 10000  # 按词频大小取样本前10000个词
input_dim = num_words  # 词库大小(必须>=num_words)
maxlen = 25  # 序列长度
output_dim = 40  # 词向量维度
filters = 32  # 卷积层滤波器数量
kernel_size = 7  # 卷积层滤波器大小
batch_size = 128
epochs = 3

"""数据读取与处理"""
(x, y), _ = load_data(num_words=num_words)
x = pad_sequences(x, maxlen)

"""建模"""
model = Sequential()
model.add(Embedding(input_dim, output_dim, input_length=maxlen))
model.add(Conv1D(filters, kernel_size, activation='relu'))
model.add(MaxPool1D(pool_size=2))  # strides默认等于pool_size
model.add(Conv1D(filters, kernel_size, activation='relu'))
model.add(GlobalMaxPool1D())  # 对于时序数据的全局最大池化
model.add(Dense(units=1, activation='sigmoid'))
model.summary()

"""编译、训练"""
model.compile('rmsprop', 'binary_crossentropy', ['acc'])
model.fit(x, y, batch_size, epochs, 2)

在这里插入图片描述

CNN+RNN

from keras.datasets.imdb import load_data  # 影评情感2分类
from keras.preprocessing.sequence import pad_sequences
from keras.models import Sequential
from keras.layers import Embedding, Dense,\
    Conv1D, MaxPool1D, GRU  # Gated Recurrent Unit

"""配置"""
num_words = 10000  # 按词频大小取样本前10000个词
input_dim = num_words  # 词库大小(必须>=num_words)
maxlen = 25  # 序列长度
output_dim = 40  # 词向量维度
filters = 32  # 卷积层滤波器数量
kernel_size = 7  # 卷积层滤波器大小
units = 32  # RNN神经元数量
batch_size = 128
epochs = 3

"""数据读取与处理"""
(x, y), _ = load_data(num_words=num_words)
x = pad_sequences(x, maxlen)

"""建模"""
model = Sequential()
model.add(Embedding(input_dim, output_dim, input_length=maxlen))
model.add(Conv1D(filters, kernel_size, activation='relu'))
model.add(MaxPool1D())
model.add(Conv1D(filters, kernel_size, activation='relu'))
model.add(GRU(units))  # 门限循环单元网络
model.add(Dense(1, activation='sigmoid'))
model.summary()

"""编译、训练"""
model.compile('rmsprop', 'binary_crossentropy', ['acc'])
model.fit(x, y, batch_size, epochs, 2)

在这里插入图片描述

双向RNN

Bidirectional

from keras.datasets.imdb import load_data  # 影评情感2分类
from keras.preprocessing.sequence import pad_sequences
from keras.models import Sequential
from keras.layers import Embedding, Dense, GRU, Bidirectional
import matplotlib.pyplot as mp

"""配置"""
num_words = 10000  # 按词频大小取样本前10000个词
input_dim = num_words  # 词库大小(必须>=num_words)
maxlen = 25  # 序列长度
output_dim = 40  # 词向量维度
units = 32  # RNN神经元数量
batch_size = 128
epochs = 3
verbose = 2

"""数据读取与处理"""
(x, y), _ = load_data(num_words=num_words)
x = pad_sequences(x, maxlen)

"""建模"""
model = Sequential()
model.add(Embedding(input_dim, output_dim, input_length=maxlen))
model.add(Bidirectional(GRU(units)))  # 双向RNN
model.add(Dense(units=1, activation='sigmoid'))
model.summary()

"""编译、训练"""
model.compile('rmsprop', 'binary_crossentropy', ['acc'])
history = model.fit(x, y, batch_size, epochs, verbose, validation_split=.1)

"""精度曲线"""
acc = history.history['acc']
val_acc = history.history['val_acc']
mp.plot(range(epochs), acc)
mp.plot(range(epochs), val_acc)
mp.show()

双向RNN+Word2Vector

from jieba import lcut
from sklearn.model_selection import train_test_split
from gensim.models import Word2Vec
from tensorflow.python.keras.preprocessing.sequence import pad_sequences
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Dense, GRU, Bidirectional
from tensorflow.python.keras.callbacks import EarlyStopping
from numpy import zeros

"""配置"""
size = 20  # 词向量维度
units = 30  # RNN神经元数量
maxlen = 40  # 序列长度
batch_size = 1  # 每批数据量大小
epochs = 9  # 训练最大轮数
verbose = 2  # 训练过程展示
patience = 1  # 没有进步的训练轮数
callbacks = [EarlyStopping('val_acc', patience=patience)]

"""训练数据、分词"""
data = [
    [0, '小米粥是以小米作为主要食材熬制而成的粥,口味清淡,清香味,具有简单易制,健胃消食的特点'],
    [0, '煮粥时一定要先烧开水然后放入洗净后的小米'], [0, '蛋白质及氨基酸、脂肪、维生素、矿物质'],
    [0, '小米是传统健康食品,可单独焖饭和熬粥'], [0, '苹果,是水果中的一种'],
    [0, '粥的营养价值很高,富含矿物质和维生素,含钙量丰富,有助于代谢掉体内多余盐分'],
    [0, '鸡蛋有很高的营养价值,是优质蛋白质、B族维生素的良好来源,还能提供脂肪、维生素和矿物质'],
    [0, '这家超市的苹果都非常新鲜'], [0, '在北方小米是主要食物之一,很多地区有晚餐吃小米粥的习俗'],
    [0, '小米营养价值高,营养全面均衡 ,主要含有碳水化合物'], [0, '蛋白质及氨基酸、脂肪、维生素、盐分'],
    [1, '小米、三星、华为,作为安卓三大手机旗舰'], [1, '别再管小米华为了!魅族手机再曝光:这次真的完美了'],
    [1, '苹果手机或将重陷2016年困境,但这次它无法再大幅提价了'], [1, '三星想要继续压制华为,仅凭A70还不够'],
    [1, '三星手机屏占比将再创新高,超华为及苹果旗舰'], [1, '华为P30、三星A70爆卖,斩获苏宁最佳手机营销奖'],
    [1, '雷军,用一张图告诉你:小米和三星的差距在哪里'], [1, '小米米聊APP官方Linux版上线,适配深度系统'],
    [1, '三星刚刚更新了自家的可穿戴设备APP'], [1, '华为、小米跨界并不可怕,可怕的打不破内心的“天花板”'],
]
X, Y = [lcut(i[1]) for i in data], [i[0] for i in data]
X_train, X_test, y_train, y_test = train_test_split(X, Y)

"""词向量"""
word2vec = Word2Vec(X_train, size, min_count=1)
w2i = {w: i for i, w in enumerate(word2vec.wv.index2word)}
vectors = word2vec.wv.vectors
def w2v(w):
    i = w2i.get(w)
    return vectors[i] if i else zeros(size)
def pad(ls_of_words):
    a = [[w2v(i) for i in x] for x in ls_of_words]
    a = pad_sequences(a, maxlen, dtype='float')
    return a
X_train, X_test = pad(X_train), pad(X_test)

"""建模"""
model = Sequential()
model.add(Bidirectional(GRU(units), input_shape=(maxlen, size)))  # 双向RNN
model.add(Dense(units=1, activation='sigmoid'))
model.summary()

"""训练"""
model.compile('rmsprop', 'binary_crossentropy', ['acc'])
model.fit(X_train, y_train, batch_size, epochs, verbose, callbacks, validation_data=(X_test, y_test))
Keras深度学习实战——新闻文本分类 在先前的应用实战中,我们分析了结构化的数据集,即数据集中包含变量及其对应实际输出值。但是现实式结构更多的数据是非结构化的,并没有预定义的数据模型,文本、图像和音频等均属于非结构化数据。在本节中,将介绍新闻文本分类任务,处理一个以文本作为输入的非结构化数据集,预期的输出是文本相关的分类主题。 阅读详情

相关推荐

keras实现中文文本分类

keras实现中文文本分类;实现中文分析,词向量引入;基于语义的特征卷积计算,实现文本分类。

keras文本分类

1,reuters数据集,keras内置可下载 from keras.datasets import reuters import numpy as np from keras import models from keras import layers import copy # from keras.utils.np_utils import to_categorical # 8,982 ...

miss_fang 907

Python-用Keras实现的多种深度学习文本分类模型

在Keras中实现的文本分类模型,包括:FastText,TextCNN,TextRNN,TextBiRNN,TextAttBiRNN,HAN,RCNN,RCNNVariant等。

TextCNN文本分类(keras实现)

目录 前言: 一、论文笔记 二、Keras文本预处理 1、读取数据集 2、将文字转换成数字特征 3、将每条文本转换为数字列表 4、将每条文本设置为相同长度 5、将每个词编码转换为词向量 6、Keras文本预处理代码实现 三、基于keras的TextCNN模型的构建、训练与测试 1、基础版CNN(模仿LeNet-5) 2、简单版TextCNN 3、使用Word2Vec词向量...

分享实践与思考 8万+

使用keras-bert实现 谭松波 酒店评论 文本分类(情感分析)-附件资源

使用keras-bert实现 谭松波 酒店评论 文本分类(情感分析)-附件资源

AI大模型开发——transformer模型超全完整版(0基础可懂)

为了更深入的了解transformer模型,我们首先从transformer的诞生聊起吧。transformer在2017年由Vaswani等人首次提出,它摒弃了之前流行的循环神经网络和卷积神经网络的架构,引入了自注意力机制( Self-Attention),显著提高了处理序列数据的能力和效率。transformer模型的这种设计使其在处理长距离依赖问题时, 相比于传统的循环神经网络和长短期记忆网络(LSTM)表现得更加出色,至此, 开启了NLP技术的新篇章。

m0_74922316的博客 2121

使用keras进行文本分类

随着keras被集成到tensorflow的核心代码库,其使用也越来越广泛。本文中将介绍keras进行文本分类的过程。先上一段keras代码,可以看到keras只需要20多行代码就完成了lstm文本分类。其中使用了imdb数据集(链接:https://pan.baidu.com/s/1-zp38W1D-2NoCY5sIuJ5uA 提取码:45a8)。 from keras.preprocessin...

tiantianhuanle的博客 1506

常见机械臂模型不用找!Mujoco这儿都有!

高质量的模型集合,franka panda,so-arm100,ur之类的机械臂都有。常见机械臂模型不用找!Mujoco这儿都有!大概346M,网速不行的可以下载zip。

darcsdn 993

Keras深度学习中文文本分类

文本分类旨在对文本集按照一定的分类体系或标准进行自动分类标记,属于一种基于分类体系的自动分类。文本分类最早可以追溯到上世纪50年代,那时主要通过专家定义规则来进行文本分类;80年代出现了利用知识工程建立的专家系统;90年代开始借助于机器学习方法,通过人工特征工程和浅层分类模型来进行文本分类。现在多采用词向量以及深度神经网络来进行文本分类。牛亚峰老师将传统的文本分类流程归纳如下图所示。在传统的文本分类中,基本上大部分机器学习方法都在文本分类领域有所应用。KNNSVM集合类方法最大熵神经网络。

s44359487yad的博客 2552

NFS服务器配置与autofs自动挂载

NFS服务器配置autofs自动挂载 环境: hostname ip OS server 192.168.220.138 centos7 client 192.168.220.139 centos7 一、NFS概述 NFS(Network File System)网络文件系统。最大功能就是通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。 二、端口 [root@se...

DoloresOOO的博客 1028

Oracle-OGG trail 文件大小引起的进程异常 OGG-01172

监控OGG目标端进程,其中一个进程异常,状态为 ABENDED,start repa 执行失败。进入OGG报告目录检查运行报告 2015-04-20 09:38:36 ERROR OGG-01172 Discard file (/ogg/oggrm/11.2/dirdat/repa.dsc) exceeded max bytes (2000000000). 总结处理方法,从根本上解决问题。

xdyzgjy的专栏 7957

Python深度学习14——Keras实现Transformer中文文本十分类

transformer神经网络,实现中文文本的十分类。并且和其他网络对比

weixin_46277779的博客 1万+

用gm/Id方法设计简单折叠式共源共栅放大器

gm/Id

qq_45541367的博客 2万+

Keras-Text:基于Keras的文本分类库推荐

Keras-Text:基于Keras的文本分类库推荐 项目的基础介绍和主要的编程语言 Keras-Text 是一个基于 Keras 的文本分类库,旨在为开发者提供一套简洁、可扩展的接口,用于实现各种先进的文本分类模型。该项目主要使用 Python 编程语言,并依赖于 Keras 框架,支持 Theano 和 TensorFlow 作为后端。Keras-Text 的设计目标是简化文本分类任务的实现过...

gitblog_00368的博客 909

手把手教你学Simulink——基于电机驱动系统的场景实例:轮毂电机在电动汽车中的分布式驱动控制仿真

本文详细介绍了基于MATLAB/Simulink和Simscape Electrical的电动汽车轮毂电机分布式驱动控制系统建模方法。内容包括系统结构设计(轮毂电机、逆变器、控制器等模块)、完整的建模过程(从基础模块导入到车辆动力学建模)、控制器设计与转矩分配策略实现,以及仿真参数设置与结果分析。通过仿真验证了该分布式驱动系统在速度跟踪、转弯性能等方面的优异表现,为电动汽车驱动系统的研究与开发提供了有效的仿真验证平台。文中还提供了相关代码示例和资料推荐,是学习Simulink电机控制系统建模的实用指南。

MHD0815的博客 4915

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之Port模块配置详解(MCAL配置)

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之Port模块配置详解(MCAL配置)

weixin_42412049的博客 2279

Keras实现用于文本分类的attention机制

keras没有提高attention机制的实现,这里参考kaggle上一个kernel中的attention机制的实现。

yanhe156的博客 1万+

后仿真中《SDF反标必懂连载篇》之 探究 SDF延迟精度 与 timescale 精度问题

本篇文章,同样属于后仿真中的SDF反标系列文章内容之一。今天,将前仿真中的timescale 和 后仿真中 timescale+sdf 延迟数据,进行贯通讲解。不要忽视这部分内容,因为后仿真的成功准确与否,时间精度问题,很重要。为什么?接下来一一讲解。

那么菜的博客 2311

利用Keras实现的CNN进行文本分类

利用Keras实现的CNN进行文本分类 上一篇博文已经分析了CNN如何应用在文本分类中: https://blog.youkuaiyun.com/qq_43012160/article/details/96572537 这一篇我们来讲一讲怎么用keras实现一个CNN并用它来文本分类。 先放一张原理图: 数据集和源码: 链接:https://pan.baidu.com/s/1XWBOcCMvHRuZEGdk...

qq_43012160的博客 2349

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Keras实现textCNN文本分类

CNN的基本结构包括两层,其一为特征提取层,每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征。一旦该局部特征被提取后,它与其它特征间的位置关系也随之确定下来;其二是特征映射层,网络的每个计算层由多个特征映射组成,每个特征映射是一个平面,平面上所有神经元的权值相等。特征映射结构采用影响函数核小的sigmoid函数作为卷积网络的激活函数,使得特征映射具有位移不变性。此外,由于一个映射面上的...

vivian_ll的博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

[深度应用]·Keras实现Self-Attention文本分类(机器如何读懂人心)

[深度应用]·Keras实现Self-Attention文本分类(机器如何读懂人心) 配合阅读: [深度概念]·Attention机制概念学习笔记 [TensorFlow深度学习深入]实战三·分别使用DNN,CNN与RNN(LSTM)做文本情感分析 笔者在[深度概念]·Attention机制概念学习笔记博文中,讲解了Attention机制的概念与技术细节,本篇内容配合讲解,使用Kera...

简明AI工作室 2万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

keras 文本分类模型

#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Wed Jul 29 20:21:28 2020 @author: lg """ from __future__ import print_function import os import sys import numpy as np from keras.preprocessing.text import Tokenizer from keras.preprocessing.s

luoganttcc的博客 545

通过Keras + LSTM进行文本分类

利用LSTM对IMDB Reviwe文本进行分类,数据集可以在kaggle官网上获取,kaggle比赛 或者https://pan.baidu.com/s/1EYoqAcW238saKy3uQCfC3w 提取码:ilze # 导入相应的包 import pandas as pd import warnings import re import matplotlib.pyplot as pl...

一摩尔自由的博客 1239

Keras-TextClassification 文本分类工具包

Keras-TextClassification 文本分类工具包 致Great ,公众号:ChallengeHub Install(安装) pip install Keras-TextClassification step2: download and unzip the dir of 'data.rar', 地址: https://pan.baidu.com/s/1I3vydhmFEQ9nuPG2fDou8Q 提取码: rket cover the dir of data to anac

weixin_43475854的博客 848

Bert文本分类(基于keras-bert实现)

目录 一、Bert 预训练模型准备 二、Bert 模型文本分类 1、数据准备 2、代码实现 3、分类过程与结果 一、Bert 预训练模型准备 中文预训练模型下载 当Bert遇上Keras:这可能是Bert最简单的打开姿势 keras-bert 不同模型的性能对比如下(可根据自己的数据选择合适的模型,模型越大需要训练的时间越长) 模型 开发集 测试集...

分享实践与思考 3万+

基于Keras搭建CNN、TextCNN文本分类模型

Keras的CNN、TextCNN文本分类

当回首往事的时候,不会因虚度年华而悔恨,也不会因碌碌无为而羞愧。 2062
上一篇: TensorFlow【极简】RNN
下一篇: Python程序写诗【训练1分钟】古诗生成
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值