LaWGPT 是一系列基于中文法律知识的开源大语言模型,该系列模型在通用中文基座模型(如 Chinese-LLaMA、ChatGLM 等)的基础上扩充法律领域专有词表、大规模中文法律语料预训练,增强了大模型在法律领域的基础语义理解能力。在此基础上,构造法律领域对话问答数据集、中国司法考试数据集进行指令精调,提升了模型对法律内容的理解和执行能力。
https://github.com/pengxiao-song/LaWGPT
1、原始数据
该项目基于中文裁判文书网公开法律文书数据、司法考试数据等数据集开展实验,并给出了如下数据来源
1)中国法律智能技术评测(CAIL)历年赛题数据
地址:http://cail.cipsc.org.cn/
2)中国法研杯司法人工智能挑战赛(LAIC)历年赛题数据
地址:https://laic.cjbdi.com/
3)百度知道法律问答数据集,包括约 3.6w 条法律问答数据,包括用户提问、网友回答、最佳回答
地址:https://www.heywhale.com/mw/dataset/5e953ca8e7ec38002d02fca7/content
4)中国司法考试试题数据集,共约 2.6w 条中国司法考试数据集
地址:https://jecqa.thunlp.org/
5)法律罪名预测与机器问答数据集,包括罪名知识图谱、20w 法务问答数据等
地址:https://github.com/liuhuanyong/CrimeKgAssitant
6)法律条文知识抽取数据集,包括法律裁判文书和犯罪案例
地址:https://github.com/liuhuanyong/LawCrimeMining
7)中国法律手册,收集各类法律法规、部门规章案例等
地址:https://github.com/LawRefBook/Laws
2、微调数据生成
1)初级数据生成方式
根据 Stanford_alpaca 和 self-instruct 方式生成对话问答数据,,对应的prompt如下:
来自:generate_instructions_law.py
def return_random_prompt():
system_prompt = "你需要针对输入尽可能给出多样化的任务指令和对应的回答。我们将用于人工评估ChatGPT模型对指令的完成情况。要求:\n"
# generate random tasks
task_list = ["开放式生成", "分类", "问答", "编辑", "摘要", "写作", "分析", "抽取"]
system_prompt += "1. 表述多样化,结合真实问题;指令类型多样化,例如:" + "、".join(random.sample(task_list, 7)) + "等。\n"
# other requirements
system_prompt += "2. 如果遇到无法处理的指令(只靠文本无法回答),给出无法处理的回复。\n"
system_prompt += "3. 除非特别要求,请使用中文,指令可以是命令句、疑问句、或其他合适的类型。\n"
system_prompt += "4. <input>是:'第十三条 一切危害国家主权、领土完整和安全,分裂国家、颠覆人民民主专政的政权和推翻社会主义制度,破坏社会秩序和经济秩序,侵犯国有财产或者劳动群众集体所有的财产,侵犯公民私人所有的财产,侵犯公民的人身权利、民主权利和其他权利,以及其他危害社会的行为,依照法律应当受刑罚处罚的,都是犯罪,但是情节显著轻微危害不大的,不认为是犯罪。'"
system_prompt += "5. <output>应该是对指令的适当且真实的回应,不能只回复答应或拒绝请求。如果需要额外信息才能回复时,请努力预测用户意图并尝试回复。<output>的内容应少于" + str(random.randint(128, 512)) + "字。\n\n"
system_prompt += "请给出满足条件的20条JSON格式数据:\n"
return system_prompt
2)知识引导的数据生成
通过 Knowledge-based Self-Instruct 方式基于中文法律知识生成数据,对应的prompt如下: 来自:generate_instructions_knowledge.py
def return_random_prompt():
system_prompt = "你需要针对法条内容尽可能联想多样化的场景生成问答数据。我们将用于人工评估 ChatGPT 模型对指令的完成情况。要求:\n"
# generate random tasks
system_prompt += "1. 结合真实问题,表述多样化。\n"
# other requirements
system_prompt += "2. 如果遇到无法处理的指令(只靠文本无法回答),给出无法处理的回复。\n"
system_prompt += "3. 除非特别要求,请使用中文,指令可以是命令句、疑问句、或其他合适的类型。\n"
system_prompt += "4. <Reference>:违反本法规定,对妇女实施性骚扰的,由公安机关给予批评教育或者出具告诫书,并由所在单位依法给予处分。\n学校、用人单位违反本法规定,未采取必要措施预防和制止性骚扰,造成妇女权益受到侵害或者社会影响恶劣的,由上级机关或者主管部门责令改正;拒不改正或者情节严重的,依法对直接负责的主管人员和其他直接责任人员给予处分。\n"
system_prompt += "5. <input>是结合法条内容联想到的真实场景下的问题。要求该场景下存在违法者和受害人\n"
system_prompt += "6. <output>是结合法条内容对该问题的适当且真实的回应,不能只回复答应或拒绝请求。尽可能地指明违法行为可能遭受的惩罚,并向受害者提出维权建议。\n\n"
system_prompt += "请给出满足条件的10条JSON格式数据:\n"
return system_prompt
3、模型训练
LawGPT 系列模型的训练过程分为两个阶段:
第一阶段:扩充法律领域词表,在大规模法律文书及法典数据上预训练 Chinese-LLaMA,使用 50w 中文裁判文书数据二次预训练,形成Legal-Base-7法律基座模型,第二阶段包括构造法律领域对话问答数据集,在预训练模型基础上指令精调,共构造30w高质量法律问答数据集。其中,共包括6954个法律行业词。
部分内容转自:https://mp.weixin.qq.com/s/ZvtWO0Idf1UVyy3GOnYgBQ