基于BERT的文本纠错模型,使用PyTorch实现
train.sgml
B1_training.sgml
C1_training.sgml
SIGHAN15_CSC_A2_Training.sgml
SIGHAN15_CSC_B2_Training.sgml
SIGHAN15_CSC_TestInput.txt
SIGHAN15_CSC_TestTruth.txt
conda create -n <your_env_name> python=3.7
创建一个新环境(推荐)pip install -r requirements.txt
export PYTHONPATH=.
运行以下命令以训练模型,首次运行会自动处理数据。
python tools/train_csc.py --config_file csc/train_SoftMaskedBert.yml
可选择不同配置文件以训练不同模型,目前支持以下配置文件:
如有其他需求,可根据需要自行调整配置文件中的参数。
component | sentence level acc | p | r | f |
---|---|---|---|---|
Detection | 0.5045 | 0.8252 | 0.8416 | 0.8333 |
Correction | 0.8055 | 0.9395 | 0.8748 | 0.9060 |
MODEL | p | r | f |
---|---|---|---|
BERT4CSC | 0.9269 | 0.8651 | 0.8949 |
MACBERT4CSC | 0.9380 | 0.8736 | 0.9047 |
model | acc | p | r | f |
---|---|---|---|---|
BERT4CSC | 0.7990 | 0.8482 | 0.7214 | 0.7797 |
MACBERT4CSC | 0.8027 | 0.8525 | 0.7251 | 0.7836 |
cd tools
python inference.py --ckpt_fn epoch=0-val_loss=0.03.ckpt --texts "我今天很高心"
推理输出:['我今天很高兴']
# 或给出line by line格式的文本地址
cd tools
python inference.py --ckpt_fn epoch=0-val_loss=0.03.ckpt --text_file ./ml/data/text.txt
推理输出:['我今天很高兴', '你这个辣鸡模型只能做错别字纠正']
其中/ml/data/text.txt文本如下:
我今天很高心
你这个辣鸡模型只能做错别字纠正
from tools.inference import *
ckpt_fn = 'SoftMaskedBert/epoch=02-val_loss=0.02904.ckpt' # find it in checkpoints/
config_file = 'csc/train_SoftMaskedBert.yml' # find it in configs/
model = load_model_directly(ckpt_fn, config_file)
texts = ['今天我很高心', '测试', '继续测试']
model.predict(texts)
推理输出:
['今天我很高兴', '测试', '继续测试']
如果你在研究中使用了本项目,请按如下格式引用:
@article{cai2020pre,
title={BERT Based Correction Models},
author={Cai, Heng and Chen, Dian},
journal={GitHub. Note: https://github.com/gitabtion/BertBasedCorrectionModels},
year={2020}
}
本源代码的授权协议为 Apache License 2.0,可免费用做商业用途。请在产品说明中附加本项目的链接和授权协议。本项目受版权法保护,侵权必究。