README.md

November 13, 2023 · View on GitHub

Benchmarking Legal Knowledge of Large Language Models

🌐 Website • 🤗 Hugging Face • ⏬ Data • 📃 Paper

📖 中文 | English

大语言模型(LLMs)在各个方面都展现出了其强大的能力。然而,当将它们应用于高度专业化、安全关键的法律领域时,它们究竟掌握了多少法律知识以及它们是否能可靠地执行法律相关任务我们却不得而知。为了填补这一空白,我们提出了一个综合评估基准LawBench。更多详情可查看我们的论文

LawBench中的任务基于中国的法律体系。基于美国法律体系的类似基准可参见链接

✨ 介绍

LawBench经过精心设计,可对大语言模型的法律能力进行精确评估。 在设计测试任务时,我们模拟了司法认知的三个维度,并选择了20个任务来评估大模型的能力。与一些仅有多项选择题的现有基准相比,我们包含了更多与现实世界应用密切相关的任务类型,如法律实体识别、阅读理解、犯罪金额计算和咨询等。 我们认识到当前大模型的安全性策略可能会拒绝回应某些法律询问,或在理解指令方面遇到困难,从而导致缺乏回应。因此,我们开发了一个单独的评估指标 "弃权率",以衡量模型拒绝提供答案或未能正确理解指令的频率。 我们汇报了51种大语言模型在LawBench上的表现,包括20种多语言模型、22种中文模型和9种法律专用大语言模型。

📖 数据集

我们的数据集包括 20 个不同的任务,涵盖 3 个认知水平:

  • 法律知识记忆:大语言模型能否记住必要的法律概念、术语、法条和事实。
  • 法律知识理解:大语言模型能否理解法律文本中的实体、事件和关系,从而理解法律文本的意义和内涵。
  • 法律知识应用:大语言模型能否正确利用其法律知识、对其进行推理从而解决下游应用中的现实法律任务。

任务列表

以下是包含的任务列表。每项任务都有 500 个示例。

认知水平 ID 任务 数据源 指标 类型
法律知识记忆 1-1 法条背诵 FLK ROUGE-L 生成
1-2 知识问答 JEC_QA Accuracy 单选
法律知识理解 2-1 文件校对 CAIL2022 F0.5 生成
2-2 纠纷焦点识别 LAIC2021 F1 多选
2-3 婚姻纠纷鉴定 AIStudio F1 多选
2-4 问题主题识别 CrimeKgAssitant Accuracy 单选
2-5 阅读理解 CAIL2019 rc-F1 抽取
2-6 命名实体识别 CAIL2021 soft-F1 抽取
2-7 舆情摘要 CAIL2022 ROUGE-L 生成
2-8 论点挖掘 CAIL2022 Accuracy 单选
2-9 事件检测 LEVEN F1 多选
2-10 触发词提取 LEVEN soft-F1 抽取
法律知识应用 3-1 法条预测(基于事实) CAIL2018 F1 多选
3-2 法条预测(基于场景) LawGPT_zh Project ROUGE-L 生成
3-3 罪名预测 CAIL2018 F1 多选
3-4 刑期预测(无法条内容) CAIL2018 Normalized log-distance 回归
3-5 刑期预测(给定法条内容) CAIL2018 Normalized log-distance 回归
3-6 案例分析 JEC_QA Accuracy 单选
3-7 犯罪金额计算 LAIC2021 Accuracy 回归
3-8 咨询 hualv.com ROUGE-L 生成

数据格式

数据存储在 data 文件夹下。每个任务都存储在 <task_id>.json 文件中。 可以通过 json.load 将 json 文件作为字典列表加载。 数据格式如下(以任务 3-2 为例):

[
  {
    "instruction": "请根据具体场景与问题给出法律依据,只需要给出具体法条内容,每个场景仅涉及一个法条。",
    "question": "场景:某个地区的三个以上专业农民合作社想要出资设立农民专业合作社联合社,以提高其在市场中的竞争力和规模效应。根据哪条法律,三个以上的农民专业合作社可以出资设立农民专业合作社联合社?",
    "answer": "根据《农民专业合作社法》第五十六条,三个以上的农民专业合作社在自愿的基础上,可以出资设立农民专业合作社联合社。该联合社应当有自己的名称、组织机构和住所,由联合社全体成员制定并承认的章程,以及符合章程规定的成员出资。"
  },
]

模型输出格式

模型输出存储在 predictions/zero_shotpredictions/one_shot 文件夹下。每个系统都有自己的子文件夹。在每个子文件夹中,任务预测都存储在 <task_id>.json 文件中。 可以通过 json.load 将 json 文件作为字典加载。 数据格式如下(以 GPT-4 零样本预测中的任务 3-2 为例):

{
    "0": {
        "origin_prompt": [
            {
                "role": "HUMAN",
                "prompt": "请根据具体场景与问题给出法律依据,只需要给出具体法条内容,每个场景仅涉及一个法条。\n场景:某个地区的三个以上专业农民合作社想要出资设立农民专业合作社联合社,以提高其在市场中的竞争力和规模效应。根据哪条法律,三个以上的农民专业合作社可以出资设立农民专业合作社联合社?"
            }
        ],
        "prediction": "根据《中华人民共和国农民专业合作社法》第十七条:“三个以上的农民专业合作社可以出资设立农民专业合作社联合社。”",
        "refr": "根据《农民专业合作社法》第五十六条,三个以上的农民专业合作社在自愿的基础上,可以出资设立农民专业合作社联合社。该联合社应当有自己的名称、组织机构和住所,由联合社全体成员制定并承认的章程,以及符合章程规定的成员出资。"
    },

📖 模型列表

我们测试了 51 种热门的大语言模型。我们对它们进行了分组,如下表所示:

Model Parameters SFT RLHF Access Base Model
Multilingual LLMs
MPT 7B Weights -
MPT-Instruct 7B Weights MPT-7B
LLaMA 7/13/30/65B Weights -
LLaMA-2 7/13/70B Weights -
LLaMA-2-Chat 7/13/70B Weights LLaMA-2-7/13/70B
Alpaca-v1.0 7B Weights LLaMA-7B
Vicuna-v1.3 7/13/33B Weights LLaMA-7/13/33B
WizardLM 7B Weights LLaMA-7B
StableBeluga2 70B Weights LLaMA-2-70B
ChatGPT N/A API -
GPT-4 N/A API -
Chinese-oriented LLMs
MOSS-Moon 16B Weights -
MOSS-Moon-SFT 16B Weights MOSS-Moon
TigerBot-Base 7B Weights -
TigerBot-SFT 7B Weights TigerBot-Base
GoGPT 7B Weights LLaMA-7B
ChatGLM2 6B Weights ChatGLM
Ziya-LLaMA 13B Weights LLaMA-13B
Baichuan 7/13B Weights -
Baichuan-13B-Chat 13B Weights Baichuan-13B
XVERSE 13B Weights -
InternLM 7B Weights -
InternLM-Chat 7B Weights InternLM-7B
InternLM-Chat-7B-8K 7B Weights InternLM-7B
Qwen 7B Weights -
Qwen-7B-Chat 7B Weights Qwen-7B
Yulan-Chat-2 13B Weights LLaMA-2-13B
BELLE-LLaMA-2 13B Weights LLaMA-2-13B
Chinese-LLaMA-2 7B Weights LLaMA-2-7B
Chinese-Alpaca-2 7B Weights LLaMA-2-7B
LLaMA-2-Chinese 7/13B Weights LLaMA-2-7/13B
Legal Specific LLMs
HanFei 7B Weights HanFei
LaWGPT-7B-beta1.0 7B Weights Chinese-LLaMA
LaWGPT-7B-beta1.1 7B Weights Chinese-alpaca-plus-7B
LexiLaw 6B Weights ChatGLM-6B
Wisdom-Interrogatory 7B Weights Baichuan-7B
Fuzi-Mingcha 6B Weights ChatGLM-6B
Lawyer-LLaMA 13B Weights LLaMA
ChatLaw 13/33B Weights Ziya-LLaMA-13B/Anima-33B

📊 模型性能

我们测试了模型在两种情况下的性能: (1)zero-shot,即在提示中只提供指令;(2)one-shot,即在提示中将指令和one-shot示例连接起来。

Zero-shot 性能

这51个模型在Zero-Shot上的平均分数排序如下:

我们展示了平均得分最高的前 5 个模型的性能。

注:gpt-3.5-turbo 为 2023.6.13 版本,以下所有 gpt-3.5-turbo 结果均为该版本的结果

Task IDGPT4GPT-3.5-turboStableBeluga2Qwen-7b-chatInternlm-chat-7b-8k
AVG52.3542.1539.2337.0035.73
1-115.3815.8614.5818.5415.45
1-255.2036.0034.6034.0040.40
2-112.539.107.7022.5622.64
2-241.6532.3725.5727.4235.46
2-369.7951.7344.2031.4228.96
2-444.0041.2039.0035.0035.60
2-556.5053.7552.0348.4854.13
2-676.6069.5565.5437.8817.95
2-737.9233.4939.0736.0427.11
2-861.2036.4045.8024.0036.20
2-978.8266.4865.2744.8862.93
2-1065.0939.0541.6418.9020.94
3-152.4729.5016.4144.6234.86
3-227.5431.3024.5233.5019.11
3-341.9935.5222.8240.6741.05
3-482.6278.7576.0676.7463.21
3-581.9176.8465.3577.1967.20
3-648.6027.4034.4026.8034.20
3-777.6061.2056.6042.0043.80
3-819.6517.4513.3919.3213.37

One-Shot 性能

这51个模型在One-Shot上的平均分数排序如下:

我们展示了平均得分最高的前 5 个模型的性能。

Task IDGPT4GPT-3.5-turboQwen-7b-chatStableBeluga2Internlm-chat-7b-8k
AVG53.8544.5238.9938.9737.28
1-117.2116.1517.7315.0315.16
1-254.8037.2028.6036.0040.60
2-118.3113.5025.168.9321.64
2-246.0040.6027.4015.0036.60
2-369.9954.0132.9641.7630.91
2-444.4041.4031.2038.0033.20
2-564.8061.9846.7153.5554.35
2-679.9674.0457.3464.9926.86
2-740.5240.6842.5845.0630.56
2-859.0037.4026.8037.6030.60
2-976.5567.5950.6365.8963.42
2-1065.2640.0421.2740.5420.69
3-153.2030.8152.8616.8738.88
3-233.1534.4934.4932.4428.70
3-341.3034.5539.9123.0742.25
3-483.2177.1278.4775.8067.74
3-582.7473.7273.9263.5971.10
3-649.6031.6026.8033.0036.20
3-777.0066.4044.6056.0044.00
3-819.9017.1720.3916.2412.11

🛠️ 如何评估模型

我们设计了不同的基于规则的解析来从模型预测中提取答案。每个任务的评估脚本都在 evaluation/evaluation_functions

步骤

评估模型预测的步骤如下:

  1. 将所有系统的预测结果放在 F 文件夹中,每个系统有一个子文件夹。
  2. 在每个系统的子文件夹下,每个任务都有一个预测文件。每个任务的名称就是任务 ID。
  3. 进入评估文件夹并运行 "python main.py -i F -o <metric_result>"

数据格式如下:

data/
├── system-1
│   ├── 1-1.json
│   ├── 1-2.json
│   ├── ...
├── system-2
│   ├── 1-1.json
│   ├── 1-2.json
│   ├── ...
├── ...

输出结果将保存在 <metric_result> 中。

例如,51 个测试模型的zero-shot预测结果保存在 predictions/zero_shot

您可以运行

cd evaluation
python main.py -i ../predictions/zero_shot -o ../predictions/zero_shot/results.csv

来获取它们的评估结果,存储为 ../predictions/zero_shot/results.csv

结果格式

结果文件是一个 csv 文件,共有四列:任务、模型名称、得分和舍弃率:

描述
task任务名称。设置为预测文件的名称
model_name模型名称。设置为存储预测文件的文件夹名称
score相应任务的模型得分
abstention_rate相应任务的舍弃率。该比率表示无法从模型预测中提取答案的频率

要求

rouge_chinese==1.0.3
cn2an==0.5.22
ltp==4.2.13
OpenCC==1.1.6
python-Levenshtein==0.21.1
pypinyin==0.49.0
tqdm==4.64.1
timeout_decorator==0.5.0

📌 许可

LawBench是由创建和转换的数据集混合而成。我们要求您遵循数据集创建者的许可证。请查看任务列表以获取每个任务的原始来源。

🔜 未来计划

  • ROUGE-L 并不是评估长表生成结果的好指标。我们将探索使用基于大语言模型的法律任务专用评价指标。
  • 有些模型可能训练时已经见过测试数据的一部分,我们将探索更有效的策略防止数据污染。
  • 我们将不断更新 LawBench 中的任务列表。欢迎外部贡献者与我们合作。

🖊️ Citation

@article{fei2023lawbench,
  title={LawBench: Benchmarking Legal Knowledge of Large Language Models},
  author={Fei, Zhiwei and Shen, Xiaoyu and Zhu, Dawei and Zhou, Fengzhe and Han, Zhuo and Zhang, Songyang and Chen, Kai and Shen, Zongwen and Ge, Jidong},
  journal={arXiv preprint arXiv:2309.16289},
  year={2023}
}

如果您希望进一步完善这个法律数据集或评估自己的模型,请随时联系我们。