python 新闻标题分类_NLPCC2017(中文)新闻标题分类示例代码以及数据描述
NLPCC 2017 新闻标题分类
代码运行环境
python2.7 (最好用anaconda2)
tensorflow1.0.0 gpu版本或者cpu版本
建议操作系统:Linux
在Linux环境下进行配置设置时可查阅资料关于Setup Deep Learning environment on Linux。请特别注意要在tensorflow网站上获取所需版本。
其官方存储位置位于https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0-cp27-none-linux_x86_64.whl。
https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0-cp27-none-linux_x86_64.whl
快速上手
这里只提供在linux 上的上手攻略
在满足上面运行环境之后,可以直接运行.
bash ./quick_run_.sh
就开始训练了。log保存在./savings/save01/run.log 里面。
里面做了这些事情:
在命令行中$tar zxvf nlpcc_data.tar.gz 解压 nlpcc_data.tar.gz
解压后的目录结构:
.
├── char
│ ├── dev.txt
│ ├── id2tag.txt
测试数据 #由于nlpcc_data中未提供测试数据,请将dev.txt作为备选文件进行备份并命名为test.txt使用
│ ├── train.txt
│ └── vocab.txt
└── word
├── dev.txt
├── id2tag.txt
测试文件test.txt在nlpcc_data中并不存在,默认情况下会从dev.txt复制一份
├── train.txt
├── vocab.100k
└── vocab.all
将char或者word中的copy到all_data中
下面是运行命令,
#在save01目录中生成一个config文件
python model.py --weight-path ./savings/save01
载入./savings/save01中的配置文件并且开始训练
python model.py --weight-path ./savings/save01 --load-config
导入位于./savings/save01中的配置文件,并将训练完成的参数存储于改目录中进行测试
python model.py --weight-path ./savings/save01 --load-config --train-test test
./savings/save01/config文件可进行修改操作,在无需运行第一条指令生成配置的情况下可以直接运行第二条指令导入更新后的配置设置
配置文件长这样:
[General]
train_data = ./all_data/train.txt
val_data = ./all_data/dev.txt
test_data = ./all_data/test.txt
vocab_path = ./all_data/vocab.txt
id2tag_path = ./all_data/id2tag.txt
embed_path = ./all_data/embed/embedding.
neural_model = lstm_basic
pre_trained = False
vocab_size = 100000
batch_size = 64
embed_size = 200
max_epochs = 50
early_stopping = 5
dropout = 0.9
lr = 0.001
decay_steps = 500
decay_rate = 0.9
class_num = 0
reg = 0.001
num_steps = 40
fnn_numlayers = 1
[lstm]
hidden_size = 300
rnn_numlayers = 1
[cnn]
num_filters = 128
filter_sizes = [3, 4, 5]
cnn_numlayers = 1
配置文件用来配置模型结结构
数据描述
char目录中的数据是字符级别的新闻标题
word目录中的信息属于词级别的新闻标题 (所使用的分词工具为jieba,并非唯一选择)
内容类似于:
finance 建 行 按 揭 贷 余 额 超 3 万 亿 还 将 大 力 发 展
society 头 号 老 赖 欠 款 2 亿 拆 东 墙 补 西 墙 终 欠 下 2 亿 元
entertainment 对 卡 戴 珊 来 说 , 每 一 次 换 装 都 是 一 次 宣 传
entertainment 陈 妍 希 陈 晓 7 月 大 婚 , 你 看 好 他 俩 吗 ?
car 变 道 和 转 弯 , 没 让 直 行 车 辆 后 果 可 不 轻
game 打 辅 助 位 的 正 统 T D ! 坦 克 世 界 斯 太 尔 W T 的 战 场 理 解
tech 大 数 据 人 才 炙 手 可 热 薪 酬 到 底 有 多 高 ?
travel 月 薪 3 0 0 0 元 的 常 州 人 , 到 这 些 国 家 瞬 间 成 土 豪 !
history 清 朝 灭 亡 时 只 有 2 2 行 省 , 现 在 却 有 3 4 个 , 那 些 省 份 是 新 出 的 ?
train.txt、test.txt、dev.txt分别标记为训练数据集、测试数据集以及开发数据集。id2tag.txt中存储了标签字典文件,而vocab.txt则构成了词汇表文件。
全部数据集都采用了utf-8编码,并且如果需要加入嵌入层的话,则必须使用utf-8格式
请注意test.txt并不存在,请创建一个副本dev.txt并将其复制到该位置;也可以对配置文件进行相应的调整
占总数据30%的数据集被用于训练;训练集与验证集的比例设置为2:1;剩下的70%则会被用作测试集;并在截止日期前一周的时间段内发布
预训的embedding 放在百度云,可以自行下载。
测试集已经放在/test目录下。也可以通过百度云下载测试集。
测试结果应当按照指定的测试样本顺序*存储于result.txt文件中(每个标签单独一行,并参考test/test.example的格式),并以附件形式提交至task2@nlpcc2017.info
代码描述
├── Config.py
├── helper.py
├── model.py
Config.py: 配置处理代码,用于生成或者加载配置文件。
helper.py: 加载数据,加载辞典,计算准确度等等。
model.py: 模型代码。
如果需要增减现有模型或新增一个模型组件,在Model类的add_model()方法内进行操作。
引用
@InProceedings{qiu2017overview,
Title = {对NLPCC 2017共同任务的概述:中文新闻标题分类}
Author = {Xipeng Qiu and Jingjing Gong and Xuanjing Huang},
Booktitle = {arXiv:1706.02883v1},
Year = {2017}
}
