数据分享|R语言用Keras长短期记忆LSTM神经网络分类分析问答文本数据

简介: 数据分享|R语言用Keras长短期记忆LSTM神经网络分类分析问答文本数据

原文链接:http://tecdat.cn/?p=26709 


介绍


本文是在 R 中使用 Keras 的LSTM神经网络分类简单介绍。


软件包

library(tidyverse) #导入、清理、可视化 
library(keras) # 用keras进行深度学习
library(data.table) # 快速读取csv数据

导入


让我们看一下问答文本数据查看文末了解数据获取方式

tst %>% head()

初步查看


让我们考虑几个 用户可能提出的“不真诚”问题的例子

trn %>% filter(tart == 1) %>% sme_n(5)

我可以理解为什么这些问题被认为是“不真诚的”:它们不是在寻求真正的答案,而是倾向于将提问者的信念陈述为事实,或者试图故意挑衅。想知道我们的模型会怎么样?


点击标题查阅往期内容


Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类


01

02

03

04

标记化


让我们从标记句子开始。

# 设置一些参数
mx_s <- 15000 # 考虑作为特征的最大词数
mxen <- 64 # 在n个词之后的文本截断
# 准备对文本进行标记
ful <- rbind(tin %>% select(qon\_t), test %>% select(quin\_ext))
tts <- full$qesio_tx
toer <- text\_tokenizer(nu\_ors = m_wods) %>% >。
  fi\_txt\_ner(txt
# 符号化 - 即把文本转换成整数序列
seqnces <- tts_tseecs(toenze, txts)
rd_idex <- toker$wordiex
# 垫出文本,使所有内容都是相同的长度
daa = pad_sques(quecs, maxlen = aln)

数据拆分

# 分割回训练和测试
tri_mrx = data\[1:nrow(tan),\] # 分割回训练和测试。
ttmix = da\[(nrow(ran)+1):nrow(at),\] # 准备训练标签。
# 准备好训练标签
laes = trin$trgt
# 准备一个验证集
set.seed(1337)
traingsales = nrow(trinix)*0.90
inie = sample(1:nrow(tra_trix))
trining\_idies = indices\[1:training\_samples\] 。
valdaton\_inces = indices\[(ranng\_sples + 1): (trningmes + vliiopls)\] 。
xtrin = tainmax\[trinig_dces,\] 。
y_an = labels\[ainginies\]
x\_vl = traimarix\[valito\_inces,\] y_val = labels\[traginces\]。
y_al = labels\[vlitnidies\]。
# 训练维度
dim(x_ran)
table(y_tan)

这里非常严重的不平衡,我们需要稍后解决这个问题。


嵌入


我们的第一个模型将基于一个提供的词嵌入。我们从较小的嵌入文件开始。

lis <- readLines('1M.vec')
fsti_emedisndx = nw.ev(hash = TRUE, parent = eptev())
ies <- lns\[2:legt(lie)\]
b <- tPrgssBr(min = 0, max = lenth(lns), style = 3)
for (i in 1:length(les)){
 
  vaus <- strsplit(le, " ")\[\[1\]\]
  wd<- vaus\[\[1\]\]
  fsiemgndx\[\[word\]\] = as.double(vaes\[-1\])
  etxPressar(pb, i)
}
# 创建我们的嵌入矩阵
faikimbddngim = 300
fawkiebiix = array(0, c(mx\_ords, faii\_mdig_m))
for (wrd in names(wrddex)){
  idx <- wr_dx\[\[od\]\]
  if (nex < ma_ds){
    faiki\_embdg\_vctor =astwkedgdex\[\[word\]\]
    if (!is.null(fasiembddigveor))
      fatwki\_bednrix\[iex+1,\] <- faswiiedin\_vor # 没有嵌入的词都是零
  }

inpt <- layput(
  shape = list(NULL),
# 模型层
embding <- input %>% 
    layeing(input\_dim = maords, output\_dim = fasing_dim, name = "embedding")
lstm <- eming %>% 
    layer_lstm(units = maxn,drout = 0.25, recudroput = 0.25, reseques = FALSE, name = "lstm")
dese <- lstm %>%
    ladese(units = 128, actin = "rlu", name = "dese") 
# 把模型集中起来
mol <- kmoel(input, preds)
# 最初冻结嵌入权重,以防止更新的权重回传,破坏我们的嵌入。
getlar(ml, name = "embedding") %>% 
  sehts(list(fasatrix)) %>% 
  frehts()
# 编译
print(model)

模型训练


保持对初始基准模型的快速训练。

# 训练模型
history <- model %>% fit(
  x_train,
  y_train,
# 看看训练结果
print(hisy)


模型可以很容易地通过微调来改进:只需嵌入层并再训练模型几个 epoch,注意不要过度拟合。

相关文章
|
1月前
|
机器学习/深度学习 算法 计算机视觉
基于CNN卷积神经网络的金融数据预测matlab仿真,对比BP,RBF,LSTM
本项目基于MATLAB2022A,利用CNN卷积神经网络对金融数据进行预测,并与BP、RBF和LSTM网络对比。核心程序通过处理历史价格数据,训练并测试各模型,展示预测结果及误差分析。CNN通过卷积层捕捉局部特征,BP网络学习非线性映射,RBF网络进行局部逼近,LSTM解决长序列预测中的梯度问题。实验结果表明各模型在金融数据预测中的表现差异。
117 10
|
6月前
|
机器学习/深度学习 API 异构计算
7.1.3.2、使用飞桨实现基于LSTM的情感分析模型的网络定义
该文章详细介绍了如何使用飞桨框架实现基于LSTM的情感分析模型,包括网络定义、模型训练、评估和预测的完整流程,并提供了相应的代码实现。
|
4月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化CNN-LSTM网络的数据分类识别算法matlab仿真
本项目展示了基于贝叶斯优化(BO)的CNN-LSTM网络在数据分类中的应用。通过MATLAB 2022a实现,优化前后效果对比明显。核心代码附带中文注释和操作视频,涵盖BO、CNN、LSTM理论,特别是BO优化CNN-LSTM网络的batchsize和学习率,显著提升模型性能。
|
4月前
|
机器学习/深度学习 存储 自然语言处理
从理论到实践:如何使用长短期记忆网络(LSTM)改善自然语言处理任务
【10月更文挑战第7天】随着深度学习技术的发展,循环神经网络(RNNs)及其变体,特别是长短期记忆网络(LSTMs),已经成为处理序列数据的强大工具。在自然语言处理(NLP)领域,LSTM因其能够捕捉文本中的长期依赖关系而变得尤为重要。本文将介绍LSTM的基本原理,并通过具体的代码示例来展示如何在实际的NLP任务中应用LSTM。
392 4
|
6月前
|
机器学习/深度学习 API 算法框架/工具
【Tensorflow+keras】Keras API三种搭建神经网络的方式及以mnist举例实现
使用Keras API构建神经网络的三种方法:使用Sequential模型、使用函数式API以及通过继承Model类来自定义模型,并提供了基于MNIST数据集的示例代码。
77 12
|
6月前
|
机器学习/深度学习
【机器学习】面试题:LSTM长短期记忆网络的理解?LSTM是怎么解决梯度消失的问题的?还有哪些其它的解决梯度消失或梯度爆炸的方法?
长短时记忆网络(LSTM)的基本概念、解决梯度消失问题的机制,以及介绍了包括梯度裁剪、改变激活函数、残差结构和Batch Normalization在内的其他方法来解决梯度消失或梯度爆炸问题。
259 2
|
6月前
|
机器学习/深度学习 Linux TensorFlow
【Tensorflow+keras】用代码给神经网络结构绘图
文章提供了使用TensorFlow和Keras来绘制神经网络结构图的方法,并给出了具体的代码示例。
85 0
|
6月前
|
机器学习/深度学习 测试技术 API
【Python-Keras】Keras搭建神经网络模型的Model解析与使用
这篇文章详细介绍了Keras中搭建神经网络模型的`Model`类及其API方法,包括模型配置、训练、评估、预测等,并展示了如何使用Sequential模型和函数式模型来构建和训练神经网络。
131 1
|
7月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
利用Keras实现一个双层的卷积神经网络
【7月更文挑战第27天】利用Keras实现一个双层的卷积神经网络。
40 3
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
7.1 NLP经典神经网络 RNN LSTM
该文章介绍了自然语言处理中的情感分析任务,探讨了如何使用深度神经网络,特别是循环神经网络(RNN)和长短时记忆网络(LSTM),来处理和分析文本数据中的复杂情感倾向。

热门文章

最新文章