shibing624's picture
Update README.md
7f13c82
|
raw
history blame
3.62 kB
metadata
language:
  - zh
tags:
  - chatglm
  - pytorch
  - zh
  - Text2Text-Generation
license: apache-2.0
widget:
  - text: |-
      对下面中文拼写纠错:
      少先队员因该为老人让坐。
      答:

Chinese Spelling Correction LoRA Model

ChatGLM中文纠错LoRA模型

chatglm-6b-csc-zh-lora evaluate test data:

The overall performance of chatglm-6b-csc-zh-lora on CSC test:

prefix input_text target_text pred
对下面中文拼写纠错: 少先队员因该为老人让坐。 少先队员应该为老人让座。 少先队员应该为老人让座。\n错误字:因,坐

在CSC测试集上生成结果纠错准确率高,由于是基于大模型,结果常常能带给人惊喜,不仅能纠错,还带有句子润色和改写功能。

Usage

本项目开源在textgen项目:textgen,可支持ChatGLM原生模型和LoRA微调后的模型,通过如下命令调用:

Install package:

pip install -U textgen
from textgen import GptModel
model = GptModel("chatglm", "THUDM/chatglm-6b", peft_name="shibing624/chatglm-6b-csc-zh-lora")
r = model.predict(["对下面中文拼写纠错:\n少先队员因该为老人让坐。\n答:"])
print(r) # ['少先队员应该为老人让座。\n错误字:因,坐']

Usage (HuggingFace Transformers)

Without textgen, you can use the model like this:

First, you pass your input through the transformer model, then you get the generated sentence.

Install package:

pip install transformers 
import sys
from peft import PeftModel
from transformers import AutoModel, AutoTokenizer

sys.path.append('..')

model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True, device_map='auto')
model = PeftModel.from_pretrained(model, "shibing624/chatglm-6b-csc-zh-lora")
model = model.half().cuda()  # fp16
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)

sents = ['对下面中文拼写纠错:\n少先队员因该为老人让坐。\n答:',
         '对下面中文拼写纠错:\n下个星期,我跟我朋唷打算去法国玩儿。\n答:']
for s in sents:
    response = model.chat(tokenizer, s, max_length=128, eos_token_id=tokenizer.eos_token_id)
    print(response)

output:

('少先队员应该为老人让座。\n错误字:因,坐', [('对下面中文拼写纠错:\n少先队员因该为老人让坐。\n答:', '少先队员应该为老人让座。\n错误字:因,坐')])
('下个星期,我跟我朋友打算去法国玩儿。\n错误字:唷', [('对下面中文拼写纠错:\n下个星期,我跟我朋唷打算去法国玩儿。\n答:', '下个星期,我跟我朋友打算去法国玩儿。\n错误字:唷')])

模型文件组成:

chatglm-6b-csc-zh-lora
    ├── adapter_config.json
    └── adapter_model.bin

训练参数:

  • num_epochs: 2
  • batch_size: 4
  • steps: 125600
  • train_loss: 0.1055
  • base model: THUDM/chatglm-6b
  • train data: shibing624/CSC

训练数据集

中文纠错数据集

如果需要训练ChatGLM模型,请参考https://github.com/shibing624/textgen

Citation

@software{textgen,
  author = {Xu Ming},
  title = {textgen: Implementation of language model finetune},
  year = {2021},
  url = {https://github.com/shibing624/textgen},
}