作者 | Julian Eisenschlos Sebastian Ruder
来自:AI前线 译者 | 徐鹏
大家好,今天的推送给大家带来的是如何运用tensorflow提供的估计算法来进行文本类,一下是主要内容:
1. 使用datasets加载数据
2. 使用预罐装估计器构建基线。
3. 使用词向量。
4. 用卷积和LSTM图层构建自定义估计器。
5. 加载预先训练的词向量。
6. 使用TensorBoard评估和比较模型。
欢迎阅读引入TensorFlow数据集和估算器的博客系列的第4部分。 您不需要阅读所有以前的内容,但是如果您想刷新以下任何概念,请看一看。 第1部分重点介绍预先制定的估算器,第2部分讨论特性列,第3部分介绍如何创建自定义估算器。
在第4部分中,我们将基于上述内容构建自然语言处理(NLP)中的不同系列问题。 特别是,本文演示如何使用自定义TensorFlow估计器,词向量和tf.layers模块来解决文本分类任务。 一路上,我们将学习word2vec并将学习作为一种技术来提高模型在标签数据匮乏的数据集上表现足够的能力。
我们会告诉你相关的代码片段。 以下是您可以在本地或Google Colaboratory上运行的完整Jupyter Notebook。 简单的.py源文件也可以在这里找到。 请注意,代码的编写是为了演示Estimators如何在功能上工作,并未针对最高性能进行优化。
我们的任务
我们将使用的数据集是IMDB大型电影评论数据集,其中包含25,000个用于培训的高度极地电影评论,以及25,000个用于测试的电影评论。 我们将使用这个数据集来训练一个二元分类模型,能够预测评论是正面还是负面。
Keras为导入数据集提供了一个方便的处理程序,该数据集也可作为序列化numpy数组.npz文件在此处下载。 对于文本分类,标准化是限制词汇的大小,以防止数据集变得太稀疏和高度,导致潜在的过度拟合。 出于这个原因,每个评论包含一系列从4(数据集中最频繁的单词)到4999(相当于橙色)的单词索引。 索引1表示句子的开始,并且索引2被分配给所有未知(也称为词外或OOV)令牌。 这些索引是通过预处理流水线中的文本数据而获得的,该流水线首先清理,标准化并标记每个句子,然后按频率建立索引每个令牌的词典。
在我们将数据加载到内存中后,我们用0将每个句子填充到固定大小(这里是200),以便我们有两个2维25000×200分别用于训练和测试的阵列。
vocab_size = 5000
sentence_size = 200
(x_train_variable, y_train), \
(x_test_variable, y_test) = imdb.load_data(num_words=vocab_size)
x_train = sequence.pad_sequences(
x_train_variable,
maxlen=sentence_size,
padding='post',
value=0)
x_test = sequence.pad_sequences(
x_test_variable,
maxlen=sentence_size,
padding='post',
value=0)
以上是今天的主要内容,主要介绍了文本分类的数据来源,接下来我们会继续介绍文本分类的输入、模型构建、输出以及使用场景。
原文链接:http://ruder.io/text-classification-tensorflow-estimators/
-今晚直播预告-
点击“阅读原文”查看直播