阅读此篇文章,您将会学到:
1、利用Tensorflow搭建双向LSTM情感分析模型
2、在Tensorflow中使用预训练好的词向量
源代码地址:
https://github.com/PrivateThink/tf_imdb/tree/master
项目的结构如下:
rt-polarity.neg:负向的情感文本
rt-polarity.pos:正向的情感文本
glove.6B.300d.txt:词向量文件
data_helpers.py:数据处理文件
tf_imdb.py:模型文件
data_helpers.py:文件包含了三个函数:clean_str,load_data_and_labels,batch_iter.
clean_str函数
clean_str函数:清洗数据,将所有的单词转为小写
load_data_and_labels函数
load_data_and_labels函数:读取正负情感文本数据,并生成标签,[0,1]代表是正标签,【1,0】是负标签。
batch_iter函数
batch_iter函数:生成批量数据,为训练提供小批量的数据,还支持打乱数据。
tf_imdb.py:模型文件中有一个加载词向量的函数loadglove,如下:
loadglove读取glove.6B.300d.txt文件,返回词典和词向量。
接下来解释下tf_imdb.py的主要部分
加载数据
上述代码主要作用是,加载词向量和训练测试的数据,并且将数据转换成机器能识别的序列。
切割数据
利用skleran的train_test_split函数将数据按照8:2切分成训练集和测试集。
定义输入输出
创建Embedding层
创建双向的LSTM层
上述代码都有解释,详细的请参照github上的源代码。
源代码:
https://github.com/PrivateThink/tf_imdb/tree/master
相对来说,Tensorflow比Keras会难的多,对于初学者不友好。
参考
1:https://github.com/roomylee/rnn-text-classification-tf
2:https://ireneli.eu/2017/01/17/tensorflow-07-word-embeddings-2-loading-pre-trained-vectors/
本公众号
将会推出Tensorflow基础教程
敬请关注
领取专属 10元无门槛券
私享最新 技术干货