数据分享|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月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
10天前
|
机器学习/深度学习 存储 自然语言处理
从理论到实践:如何使用长短期记忆网络(LSTM)改善自然语言处理任务
【10月更文挑战第7天】随着深度学习技术的发展,循环神经网络(RNNs)及其变体,特别是长短期记忆网络(LSTMs),已经成为处理序列数据的强大工具。在自然语言处理(NLP)领域,LSTM因其能够捕捉文本中的长期依赖关系而变得尤为重要。本文将介绍LSTM的基本原理,并通过具体的代码示例来展示如何在实际的NLP任务中应用LSTM。
33 4
|
1月前
|
数据采集 数据可视化 数据挖掘
R语言在金融数据分析中的深度应用:探索数据背后的市场智慧
【9月更文挑战第1天】R语言在金融数据分析中展现出了强大的功能和广泛的应用前景。通过丰富的数据处理函数、强大的统计分析功能和优秀的可视化效果,R语言能够帮助金融机构深入挖掘数据价值,洞察市场动态。未来,随着金融数据的不断积累和技术的不断进步,R语言在金融数据分析中的应用将更加广泛和深入。
|
2月前
|
机器学习/深度学习 数据采集 数据可视化
R语言在数据科学中的应用实例:探索与预测分析
【8月更文挑战第31天】通过上述实例,我们展示了R语言在数据科学中的强大应用。从数据准备、探索、预处理到建模与预测,R语言提供了完整的解决方案和丰富的工具集。当然,数据科学远不止于此,随着技术的不断发展和业务需求的不断变化,我们需要不断学习和探索新的方法和工具,以更好地应对挑战,挖掘数据的潜在价值。 未来,随着大数据和人工智能技术的普及,R语言在数据科学领域的应用将更加广泛和深入。我们期待看到更多创新的应用实例,为各行各业的发展注入新的动力。
|
2月前
|
数据采集 存储 数据可视化
R语言时间序列分析:处理与建模时间序列数据的深度探索
【8月更文挑战第31天】R语言作为一款功能强大的数据分析工具,为处理时间序列数据提供了丰富的函数和包。从数据读取、预处理、建模到可视化,R语言都提供了灵活且强大的解决方案。然而,时间序列数据的处理和分析是一个复杂的过程,需要结合具体的应用场景和需求来选择合适的方法和模型。希望本文能为读者在R语言中进行时间序列分析提供一些有益的参考和启示。
|
2月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
2月前
|
机器学习/深度学习 数据采集
R语言逻辑回归、GAM、LDA、KNN、PCA主成分分类分析预测房价及交叉验证
上述介绍仅为简要概述,每个模型在实施时都需要仔细调整与优化。为了实现高度精确的预测,模型选择与调参是至关重要的步骤,并且交叉验证是提升模型稳健性的有效途径。在真实世界的房价预测问题中,可能还需要结合地域经济、市场趋势等宏观因素进行综合分析。
60 3
|
2月前
|
机器学习/深度学习 API 算法框架/工具
【Tensorflow+keras】Keras API三种搭建神经网络的方式及以mnist举例实现
使用Keras API构建神经网络的三种方法:使用Sequential模型、使用函数式API以及通过继承Model类来自定义模型,并提供了基于MNIST数据集的示例代码。
50 12
|
2月前
|
机器学习/深度学习
【机器学习】面试题:LSTM长短期记忆网络的理解?LSTM是怎么解决梯度消失的问题的?还有哪些其它的解决梯度消失或梯度爆炸的方法?
长短时记忆网络(LSTM)的基本概念、解决梯度消失问题的机制,以及介绍了包括梯度裁剪、改变激活函数、残差结构和Batch Normalization在内的其他方法来解决梯度消失或梯度爆炸问题。
68 2
|
2月前
|
机器学习/深度学习 Linux TensorFlow
【Tensorflow+keras】用代码给神经网络结构绘图
文章提供了使用TensorFlow和Keras来绘制神经网络结构图的方法,并给出了具体的代码示例。
47 0

热门文章

最新文章