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

简介

主要内容包括


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

如何定义LSTM

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


代码

导入相关库

#coding=utf-8

import tensorflow as tf

from tensorflow.contrib import learn

import numpy as np

from tensorflow.python.ops.rnn import static_rnn

from tensorflow.python.ops.rnn_cell_impl import BasicLSTMCell

数据


# 数据

positive_texts [

"我 今天 很 高兴",

"我 很 开心",

"他 很 高兴",

"他 很 开心"

]

negative_texts [

"我 不 高兴",

"我 不 开心",

"他 今天 不 高兴",

"他 不 开心"

]

label_name_dict {

0"正面情感",

1"负面情感"

}

配置信息


配置信息

embedding_size 50

num_classes 2

将文本和label数值化

# 将文本和label数值化

all_texts positive_texts negative_textslabels [0len(positive_texts) [1len(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(20forget_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)

定义损失和优化器

# 定义损失和优化器

lossestf.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)

执行

with tf.Session() as sess:

# 初始化变量

sess.run(tf.global_variables_initializer())

训练# 定义要填充的数据

feed_dict {

datas_placeholder: datas,

labels_placeholder: labels

}

print("开始训练")

for step in range(100):

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

if step 10 == 0:

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

预测

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

predicted_labels_val sess.run(predicted_labels, feed_dict=feed_dict)

for i, text in enumerate(all_texts):

label predicted_labels_val[i]

label_name label_name_dict[label]

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

 

分享安排:

目标:

1.掌握大数据建模分析与使用方法。

2.掌握大数据平台技术架构。

3.掌握国内外主流的大数据分析与BI商业智能分析解决方案。

4.掌握大数据分析在搜索引擎、广告服务推荐、电商数据分析、金融客户分析方面的应用。

5.掌握主流的基于大数据Hadoop和Spark、R的大数据分析平台架构和实际应用。

6.掌握基于Hadoop大数据平台的数据挖掘和数据仓库分布式系统平台应用,以及商业和开源的数据分析产品加上Hadoop平台形成大数据分析平台的应用剖析。

7.掌握常见的机器学习算法。


具体内容:

一、大数据概述:1.大数据及特点分析;2.大数据关健技术;3.大数据计算模式;4.大数据应用实例

二、大数据处理架构Hadoop:1.Hadoop项目结构;2.Hadoop安装与使用;3.Hadoop集群的部署与使用;4.Hadoop 代表性组件

三、分布式文件系统HDFS :1.HDFS体系结构;2.HDFS存储;3.HDFS数据读写过程

四、分布式数据库HBase :1.HBase访问接口;2.HBase数据类型;3.HBase实现原理;4.HBase运行机制;5.HBase应用

五、MapReduce :1.MapReduce体系结构;2.MapReduce工作流程;3.资源管理调度框架YARN ;4.MapReduce应用

六、Spark :1.Spark生态与运行架构;2.Spark SQL;3.Spark部署与应用方式

七、IPython Notebook运行Python Spark程序:1.Anaconda;2.IPython Notebook使用Spark;3.使用IPython Notebook在Hadoop YARN模式运行

八、Python Spark集成开发环境 :1.Python Spark集成开发环境部署配置;2.Spark数据分析库MLlib的开发部署

九、Python Spark决策树二分类与多分类 :1.决策树原理;2.大数据问题;3.决策树二分类;4.决策树多分类

十、Python Spark支持向量机 :1.支持向量机SVM 原理与算法;2.Python Spark SVM程序设计

十一、Python Spark 贝叶斯模型 :1.朴素贝叶斯模型原理;2.Python Spark贝叶斯模型程序设计

十二、Python Spark逻辑回归 :1.逻辑回归原理;2.Python Spark逻辑回归程序设计

十三、Python Spark回归分析 :1.大数据分析;2.数据集介绍;3.Python Spark回归程序设计

十四、Spark ML Pipeline 机器学习流程分类 :1.机器学习流程组件:StringIndexer、OneHotEncoder、VectorAssembler等

2.使用Spark ML Pipeline 机器学习流程分类程序设计

十五、Python Spark 创建推荐引擎 :1.推荐算法;2.推荐引擎大数据分析使用场景;3.推荐引擎设计

十六、项目实践:1.日志分析系统与日志挖掘项目实践;2.推荐系统项目实践

关注 我 并发布评论,来获取更多有效资料吧!!!


全部评论
推荐系统项目实践
点赞 回复 分享
发布于 2022-10-21 15:53 河南

相关推荐

有很多问题,求大佬们解答,谢谢大佬们:不知道现在该怎么投实习,该怎么准备内心很纠结学校课程和实习到底怎么选择, 自己也不想课程学业这边出问题, 是不是只能投暑期实习,具体时间该怎么安排前端面试也需要准备算法么, 自己的算法能力很薄弱, 面试题需要准备到什么程度?没有ai项目经验的话,我该如何去补充,如何去找好的ai项目
smile丶snow:1.简历尽量一页,比如教育经历那里,全日制,计算机学院这些可以去掉没啥用好浪费空间。 熟悉三件套就没必要写了吧。js基本上是这样写 * JavaScript核心:深入理解 JS 运行机制(事件循环 Event Loop、微任务/宏任务),熟练掌握 Promise/Async 异步编程 模型。 熟悉可以改成熟练掌握。组件库写一个ant感觉就行,多写了浪费空间。 旅游项目是不是jonas的natours啊,我之前简历也有这个。我之前是这样写的 全栈思维: 熟悉 Node.js/Express 后端架构,掌握 MongoDB 数据库设计与聚合查询 工程化我觉得还是少些吧,不写就问的少,如果你真的了解的话可以写。 1.实习的话推荐大厂官网和aoob上面投,我自己有写一个校招网站的小网站可以直达~github主页上面有,顺便求个关注( 2.大三下一般课程比较少了吧,如果学校比较严的话可以多沉淀一会,如果不太严可以请dai课然后去实习,尽量找个近一些的就行。暑期实习不是暑假才实习哦,基本是上3月底4月初发offer就可以过去了,然后大概暑假的时候走转正流程答辩。 3.大厂算法题+js手写体。hot100+常见的比如数组转树,Promise.all,deepClone,之类 js手写都不难其实。算法看自己能力吧,我其实算法能力也不行。 4.自己平时没有用AI Coding吗?自己想一下怎么让AI帮你更好的写代码~比如Skill的诞生,OpenSpec的诞生,不都是我们想让AI更好帮我们写代码吗。
我的实习日记
点赞 评论 收藏
分享
03-27 22:42
南京大学 Java
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务