0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深度学习——如何用LSTM进行文本分类

恬静简朴1 来源: 恬静简朴1 作者: 恬静简朴1 2022-10-21 09:57 次阅读

简介

主要内容包括

如何将文本处理为Tensorflow LSTM的输入

如何定义LSTM

用训练好的LSTM进行文本分类

代码

导入相关库

#coding=utf-8

importtensorflowastf

fromtensorflow.contribimportlearn

importnumpyasnp

fromtensorflow.python.ops.rnnimportstatic_rnn

fromtensorflow.python.ops.rnn_cell_implimportBasicLSTMCell

数据

# 数据

positive_texts=[

"我 今天 很 高兴",

"我 很 开心",

"他 很 高兴",

"他 很 开心"

]

negative_texts=[

"我 不 高兴",

"我 不 开心",

"他 今天 不 高兴",

"他 不 开心"

]

label_name_dict={

0:"正面情感",

1:"负面情感"

}

配置信息

配置信息

embedding_size=50

num_classes=2

将文本和label数值化

# 将文本和label数值化

all_texts=positive_texts+negative_textslabels=[0]*len(positive_texts)+[1]*len(negative_texts)

max_document_length=4

vocab_processor=learn.preprocessing.VocabularyProcessor(max_document_length)

datas=np.array(list(vocab_processor.fit_transform(all_texts)))

vocab_size=len(vocab_processor.vocabulary_)

定义placeholder(容器),存放输入输出

# 容器,存放输入输出

datas_placeholder=tf.placeholder(tf.int32, [None, max_document_length])

labels_placeholder=tf.placeholder(tf.int32, [None])

词向量处理

# 词向量表

embeddings=tf.get_variable("embeddings", [vocab_size, embedding_size],initializer=tf.truncated_normal_initializer)

# 将词索引号转换为词向量[None, max_document_length] => [None, max_document_length, embedding_size]

embedded=tf.nn.embedding_lookup(embeddings, datas_placeholder)

将数据处理为LSTM的输入格式

# 转换为LSTM的输入格式,要求是数组,数组的每个元素代表某个时间戳一个Batch的数据

rnn_input=tf.unstack(embedded, max_document_length,axis=1)

定义LSTM

# 定义LSTM

lstm_cell=BasicLSTMCell(20,forget_bias=1.0)

rnn_outputs, rnn_states=static_rnn(lstm_cell, rnn_input,dtype=tf.float32)

#利用LSTM最后的输出进行预测

logits=tf.layers.dense(rnn_outputs[-1], num_classes)

predicted_labels=tf.argmax(logits,axis=1)

定义损失和优化器

# 定义损失和优化器

losses=tf.nn.softmax_cross_entropy_with_logits(

labels=tf.one_hot(labels_placeholder, num_classes),

logits=logits

)

mean_loss=tf.reduce_mean(losses)

optimizer=tf.train.AdamOptimizer(learning_rate=1e-2).minimize(mean_loss)

执行

withtf.Session()assess:

# 初始化变量

sess.run(tf.global_variables_initializer())

训练# 定义要填充的数据

feed_dict={

datas_placeholder: datas,

labels_placeholder: labels

}

print("开始训练")

forstepinrange(100):

_, mean_loss_val=sess.run([optimizer, mean_loss],feed_dict=feed_dict)

ifstep%10==0:

print("step ={}tmean loss ={}".format(step, mean_loss_val))

预测

print("训练结束,进行预测")

predicted_labels_val=sess.run(predicted_labels,feed_dict=feed_dict)

fori, textinenumerate(all_texts):

label=predicted_labels_val[i]

label_name=label_name_dict[label]

print("{}=>{}".format(text, label_name))

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • LSTM
    +关注

    关注

    0

    文章

    42

    浏览量

    3683
收藏 人收藏

    评论

    相关推荐

    pyhanlp文本分类与情感分析

    得到一个分类器,利用该分类器,我们就可以进行文本分类了。IClassifier classifier = new NaiveBayesClassifier(model);目前分类器接口
    发表于 02-20 15:37

    TensorFlow的CNN文本分类

    在TensorFlow中实现CNN进行文本分类(译)
    发表于 10-31 09:27

    NLPIR平台在文本分类方面的技术解析

    一下NLPIR大数据语义智能分析系统是怎样实现文本分类的。NLPIR大数据语义智能分析平台的文本分类有两种模式:专家规则分类与机器学习分类
    发表于 11-18 17:46

    基于文章标题信息的汉语自动文本分类

    文本分类文本挖掘的一个重要组成部分,是信息搜索领域的一项重要研究课题。该文提出一种基于文章标题信息的汉语自动文本分类方法,在HNC理论的领域概念框架下,通过标题
    发表于 04-13 08:31 10次下载

    基于PLSA主题模型的多标记文本分类_蒋铭初

    基于PLSA主题模型的多标记文本分类_蒋铭初
    发表于 01-08 10:40 0次下载

    基于apiori算法改进的knn文本分类方法

    的,通过实例去学习分类在这方面就很有优势。 一般的文本分类分为这几个步骤,首先是建立文档的表示模型,即通过若干特征去表示一个文本,因为一般情况下一篇文章都有着成百上千的特征向量,直接
    发表于 11-09 10:25 9次下载
    基于apiori算法改进的knn<b class='flag-5'>文本分类</b>方法

    运用多种机器学习方法比较短文本分类处理过程与结果差别

    目标 从头开始实践中文短文本分类,记录一下实验流程与遇到的坑运用多种机器学习深度学习 + 传统机器学习)方法比较短
    的头像 发表于 11-02 15:37 4848次阅读
    运用多种机器<b class='flag-5'>学习</b>方法比较短<b class='flag-5'>文本分类</b>处理过程与结果差别

    textCNN论文与原理——短文本分类

    包是处理图片的torchvision,而处理文本的少有提及,快速处理文本数据的包也是有的,那就是torchtext[1]。下面还是结合上一个案例:【深度学习】textCNN论文与原理—
    的头像 发表于 12-31 10:08 2253次阅读
    textCNN论文与原理——短<b class='flag-5'>文本分类</b>

    基于深度神经网络的文本分类分析

      随着深度学习技术的快速发展,许多研究者尝试利用深度学习来解决文本分类问题,特别是在卷积神经网络和循环神经网络方面,出现了许多新颖且有效的
    发表于 03-10 16:56 36次下载
    基于<b class='flag-5'>深度</b>神经网络的<b class='flag-5'>文本分类</b>分析

    集成WL-CNN和SL-Bi-LSTM的旅游问句文本分类算法

    学习词序列子空间向量和句序列深层语义信息,通过多头注意力机制将两种深度学习模型进行集成以实现旅游问句文本的语法和语义信息互补,并通过 Sof
    发表于 03-17 15:24 4次下载
    集成WL-CNN和SL-Bi-<b class='flag-5'>LSTM</b>的旅游问句<b class='flag-5'>文本分类</b>算法

    融合文本分类和摘要的多任务学习摘要模型

    文本摘要应包含源文本中所有重要信息,传统基于编码器-解码器架构的摘要模型生成的摘要准确性较低。根据文本分类文本摘要的相关性,提出一种多任务学习
    发表于 04-27 16:18 11次下载
    融合<b class='flag-5'>文本分类</b>和摘要的多任务<b class='flag-5'>学习</b>摘要模型

    基于双通道词向量的卷积胶囊网络文本分类算法

    的词向量与基于特定文本分类任务扩展的语境词向量作为神经网络的2个输入通道,并采用具有动态路由机制的卷积胶囊网络模型进行文本分类。在多个英文数据集上的实验结果表明,双通道的词向量训练方式优于单通道策略,与LSTM、RAE、 M
    发表于 05-24 15:07 6次下载

    基于LSTM的表示学习-文本分类模型

    的关键。为了获得妤的文本表示,提高文本分类性能,构建了基于LSTM的表示学习-文本分类模型,其中表示学习
    发表于 06-15 16:17 18次下载

    基于注意力机制的新闻文本分类模型

    基于注意力机制的新闻文本分类模型
    发表于 06-27 15:32 29次下载

    NLP中的迁移学习:利用预训练模型进行文本分类

    迁移学习彻底改变了自然语言处理(NLP)领域,允许从业者利用预先训练的模型来完成自己的任务,从而大大减少了训练时间和计算资源。在本文中,我们将讨论迁移学习的概念,探索一些流行的预训练模型,并通过实际示例演示如何使用这些模型进行文本分类
    发表于 06-14 09:30 311次阅读