NLPCC2017示例代码以及数据描述
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
all_data
savings
test.full
test
.gitignore
Config.py
NewsTitleDataset.pdf
README.md
TfUtils.py
core_rnn_cell_impl.py
helper.py
model.py
nlpcc_data.tar.gz
quick_run.sh

README.md

NLPCC 2017 新闻标题分类

代码运行环境

python2.7 (最好用anaconda2)
tensorflow1.0.0 gpu版本或者cpu版本
建议操作系统:Linux

Linux 上的环境配置可以参考Setup Deep Learning enviroment 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
│   ├── test.txt #测试文件在nlpcc_data中并没有给出,将dev.txt复制一份成test.txt
│   ├── train.txt
│   └── vocab.txt
└── word
    ├── dev.txt
    ├── id2tag.txt
    ├── test.txt #测试文件在nlpcc_data中并没有给出,将dev.txt复制一份成test.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 个 , 那 些 省 份 是 新 出 的 ?

第一列是label后面是正文,中间用tab隔开。 train.txt, test.txt, dev.txt分别是训练集,测试集以及开发集。id2tag.txt存的标签词典,vocab.txt为辞典。

所有的数据都是utf-8格式,以及如果要加入embedding的话,也应该是utf-8格式
注意test.txt并没有给出来,可以复制一份dev.txt成test.txt,或者直接改一下config文件

给出的数据是总数据的30%,train跟dev比例为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()函数中添加一个新的模型模块,或者修改已经有的模型(lstm_basic, cnn_basic, cbow_basic)。

引用

@InProceedings{qiu2017overview,
  Title                    = {Overview of the NLPCC 2017 Shared Task: Chinese News Headline Categorization},
  Author                   = {Xipeng Qiu and Jingjing Gong and Xuanjing Huang},
  Booktitle                = {arXiv:1706.02883v1},
  Year                     = {2017}
}