2.1 新闻主题分类任务
学习目标
- 了解有关新闻主题分类和有关数据.
- 掌握使用浅层网络构建新闻主题分类器的实现过程.
- 关于新闻主题分类任务:
- 以一段新闻报道中的文本描述内容为输入, 使用模型帮助我们判断它最有可能属于哪一种类型的新闻, 这是典型的文本分类问题, 我们这里假定每种类型是互斥的, 即文本描述有且只有一种类型.
- 新闻主题分类数据:
- 通过torchtext获取数据:
1 |
|
- 数据文件预览:
1 | - data/ |
- 文件说明:
- train.csv表示训练数据, 共12万条数据; test.csv表示验证数据, 共7600条数据; classes.txt是标签(新闻主题)含义文件, 里面有四个单词’World’, ‘Sports’, ‘Business’, ‘Sci/Tech’代表新闻的四个主题, readme.txt是该数据集的英文说明.
- train.csv预览:
1 | "3","Wall St. Bears Claw Back Into the Black (Reuters)","Reuters - Short-sellers, Wall Street's dwindling\band of ultra-cynics, are seeing green again." |
- 文件内容说明:
- train.csv共由3列组成, 使用’,’进行分隔, 分别代表: 标签, 新闻标题, 新闻简述; 其中标签用”1”, “2”, “3”, “4”表示, 依次对应classes中的内容.
- test.csv与train.csv内容格式与含义相同.
整个案例的实现可分为以下五个步骤
- 第一步: 构建带有Embedding层的文本分类模型.
- 第二步: 对数据进行batch处理.
- 第三步: 构建训练与验证函数.
- 第四步: 进行模型训练和验证.
- 第五步: 查看embedding层嵌入的词向量.
第一步: 构建带有Embedding层的文本分类模型
1 | # 导入必备的torch模型构建工具 |
- 实例化模型:
1 | # 获得整个语料包含的不同词汇总数 |
第二步: 对数据进行batch处理
1 | def generate_batch(batch): |
- 调用:
1 | # 假设一个输入: |
- 输出效果:
1 | # 对应输入的两条数据进行了相应的拼接 |
第三步: 构建训练与验证函数
1 | # 导入torch中的数据加载器方法 |
第四步: 进行模型训练和验证
1 | # 导入时间工具包 |
- 输出效果:
1 | 120000lines |
第五步: 查看embedding层嵌入的词向量
1 | # 打印从模型的状态字典中获得的Embedding矩阵 |
- 输出效果:
1 | tensor([[ 0.4401, -0.4177, -0.4161, ..., 0.2497, -0.4657, -0.1861], |
小节总结
学习了关于新闻主题分类任务:
- 以一段新闻报道中的文本描述内容为输入, 使用模型帮助我们判断它最有可能属于哪一种类型的新闻, 这是典型的文本分类问题, 我们这里假定每种类型是互斥的, 即文本描述有且只有一种类型.
学习了新闻主题分类数据的获取和样式.
学习了整个案例的实现的五个步骤:
- 第一步: 构建带有Embedding层的文本分类模型.
- 第二步: 对数据进行batch处理.
- 第三步: 构建训练与验证函数.
- 第四步: 进行模型训练和验证.
- 第五步: 查看embedding层嵌入的词向量.