nlp四大任务(分类、匹配、序列标注、文本生成)集成项目

介绍


本项目支持的NLP任务包括 分类、匹配、序列标注、文本生成等.
- 对于分类任务,目前支持多分类、多标签分类,通过选择不同的loss即可。
- 对于匹配任务,目前已支持交互模型和表示模型。
- 对于NER任务,目前已支持rnn+crf,idcnn+crf以及bert+crf
git地址:https://github.com/zhufz/nlp_research

数据


训练数据(目前data下均内置了样例数据):
(1)对于分类任务的数据使用csv格式,csv头部包括列名‘target’和‘text’;
(2)对于匹配任务的数据使用csv格式,csv头部包括列名‘target’,‘text’ 或者 ‘target’,‘text_a’,‘text_b’
(3)对于NER任务的数据,参考"data/ner/train_data",或者使用其它格式的数据的话,修改task/ner.py中的read_data方法即可。
预训练数据(目前在分类和匹配任务上已支持):
- 如果使用到bert作为预训练(直接下载google训练好的模型即可),直接运行"sh scripts/prepare.sh"
- 如果使用elmo作为预训练,需要准备一份corpus.txt训练语料放在language_model/bilm_tf/data/目录下
      然后执行指令进行预训练: 
            cd language_model/bilm_tf
            sh start.sh

快速开始


[依赖]
     环境:python3+tensorflow 1.10(python2.7已支持)
     pip3 install --user -r requirements.txt
     
各类任务的参数定义在conf/model/内的以任务名命名的yml文件中"conf/model/***.yml"
目前已支持的常见任务如下:       
[分类]
     1.生成tfrecords数据,训练:
        python3 run.py classify.yml mode=train
       或者直接使用脚本:
        sh scripts/restart.sh classify.yml
     
     2.测试:
       单个测试:python3 run.py classify.yml model=test_one
[匹配]
     1.生成tfrecords数据,训练:
         python3 run.py match.yml mode=train
       或者直接使用脚本:
         sh scripts/restart.sh match.yml
     2.测试:
        单个测试:python3 run.py match.yml model=test_one
[序列标注]
    ...
    sh scripts/restart.sh ner.yml
[翻译]    
    ...
    sh scripts/restart.sh translation.yml

 

模块


1. encoder
    cnn
    fasttext
    text_cnn
    dcnn
    idcnn
    dpcnn
    vdcnn
    rnn        
    rcnn
    attention_rnn
    capsule
    esim
    han
    matchpyramid
    abcnn
    transformer

2. common 
    loss
    attention
    lr
    ...

3. utils
    data process

猜你喜欢

转载自www.cnblogs.com/zhufz/p/11331913.html