• Stars
    star
    116
  • Rank 303,894 (Top 6 %)
  • Language
    Python
  • Created over 7 years ago
  • Updated over 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

NLPCC2017示例代码以及数据描述

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文件格式),以附件的形式发送到邮箱 [email protected]

代码描述

├── 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}
}