介紹
本項目支持的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