你好,我是方华,一名咨询顾问,计算机硕士。
本次分享一个用于大语言模型指令微调的中文命名实体识别SFT开源数据集,通过微调现有的开源大语言模型,可对比模型微调前后中文实体识别能力差异。同时,提供了个人对于如何使用开源数据集和优化现有模型实体识别能力的几点思考。
(点击阅读原文可以跳转至开源数据集项目主页,对于hf下载数据存在问题的同学,可以公众号“方华Elton”后台回复“nersft”获取网盘链接)
chinese_ner_sft介绍
chinese_ner_sft项目通过收集互联网上开源的实体识别数据集, 并通过设计提示模版(prompt template)将原本的实体识别数据集转换为可用于大语言模型(LLM)微调的指令微调(Instruction tuning)数据集。该数据集可以应用到通用实体识别的LLM研究中。
数据集分为三大类
- 原始开源的NER数据集;
- 用于NER数据集的prompt模板;
- 通过随机组合prompt和NER数据的SFT数据集。
最终的SFT数据集举例
**prompt的内容结构构成为:**实体识别的指令+要进行实体识别的文本+输出实体格式+输出注意事项
{
"prompt": "实体识别 \n
------ \n
交行14年用过,半年准备提额,却直接被降到1K,半年期间只T过一次三千,其它全部真实消费,第六个月的时候为了增加评分提额,还特意分期两万,但降额后电话投诉,申请提... \n
------ \n
请按以下格式输出实体: Text: 实体文本, 必须来自于原句子. Label: 实体类型, 实体文本对应的实体标签.\n
注意: 1. 尽可能多的输出结果, Text, Label 分别占一行. 2. 没有实体时可回答: 没有找到实体.",
"response": [
{ "Text": "交行", "Label": "银行" },
{ "Text": "提额", "Label": "金融名词" },
{ "Text": "降到", "Label": "形容词" },
{ "Text": "消费", "Label": "金融名词" },
{ "Text": "增加", "Label": "金融名词" },
{ "Text": "提额", "Label": "金融名词" },
{ "Text": "分期", "Label": "银行产品" },
{ "Text": "降", "Label": "形容词" }
]
}
项目地址
https://huggingface.co/datasets/qgyd2021/chinese_ner_sft
NER_Dataset清单
数据 | 原始数据/项目地址 | 样本个数 | 实体类型 | 原始数据描述 | 替代数据下载地址 |
---|---|---|---|---|---|
CMeEE | CBLUE; 天池下载 | 20000 | 儿科疾病, 身体部位, 临床表现, 医疗程序, 等 9 大类医学实体 | 医学实体识别任务 | nlhappy/CMeEE Rosenberg/CMeEE-V2 |
CCKS2019_task1 | Yidu-S4K | 1379 | 解剖部位, 手术, 疾病和诊断, 药物, 实验室检验, 影像检查 | CCKS2019面向中文电子病历的命名实体识别数据集 | |
CLUENER2020 | CLUE; CLUENER | 12091 | 游戏, 组织, 政府, 电影, 人名, 书籍, 公司, 场景, 职位, 地址 | CLUENER2020数据集 | |
MSRA | MSRA | 48442 | 地址, 组织, 人名 | MSRA微软亚洲研究院开源命名实体识别数据集 | doushabao4766/msra_ner_k_V3_wc_bioes |
NLPCC2018_task4 | NLPCC2018; NLPCC2018_task4 | 21352 | 歌手, 歌曲, 主题, 情感, 风格, 目的地, 电话号码, 乐器, 聊系人, 年龄, 热门列表, 自定义目的地, 语种, 场景, 出发地 | 任务型对话系统数据数据集 | |
CCFBDCI | CCFBDCI填写申请表后可下载 | 15723 | LOC、GPE、ORG和PER | 中文命名实体识别算法鲁棒性评测数据集 | |
MMC | MMC MMC数据集 | 3498 | 实体类型 | 瑞金医院MMC人工智能辅助构建知识图谱大赛数据集 | |
1890 | LOC.NAM、LOC.NOM、PER.NAM、ORG.NOM、ORG.NAM、GPE.NAM和PER.NOM | 社交媒体中文命名实体识别数据集 | |||
ECommerce | ECommerce | 7998 | MISC、XH、HPPX和HCCX | 面向电商的命名实体识别数据集 | |
YouKu | YouKu | MISC、XH、HPPX和HCCX | 面向电商的命名实体识别数据集 | ||
FinanceSina | FinanceSina | 1579 | LOC、GPE、ORG和PER | 新浪财经爬取中文命名实体识别数据集 | |
Resume | Resume | 4761 | NAME、EDU、LOC、ORG、PRO、TITLE、CONT和RACE | 中国股市上市公司高管的简历 | |
Bank | Bank | 10000 | BANK、COMMENTS_ADJ、COMMENTS_N和PRODUCT | 银行借贷数据数据集 | |
DLNER | DLNER | 28897 | Location、Thing、Abstract、Organization、Metric、Time、Physical、Person和Term | 语篇级命名实体识别数据集 |
NER_SFT使用思考
指令微调语言模型
针对中文命名实体识别(NER)任务,使用已经整理好的SFT(Supervised Fine-Tuning)数据进行指令微调时,可以按照以下步骤进行:
-
数据准备:
- 确保SFT数据集专注于中文命名实体识别。数据集应包含大量的中文文本和对应的实体标注(例如人名、地点、组织等)。
-
模型选择:
- 选择一个适合中文文本处理的大型语言模型,如ChatGLM或LLama。这些模型应该能够理解和生成中文文本。
-
微调准备:
- 将SFT数据集转换为模型可以理解的格式。通常,这包括文本输入和预期的标注输出。
- 确保数据集中的实体标注与模型的输出格式兼容。
-
设计指令微调策略:
- 创建针对中文命名实体识别任务的特定指令或提示(prompts)。
- 这些提示应该清晰地指示模型识别和标注文本中的命名实体。
-
设置微调参数:
- 根据模型的特点和任务的要求设置学习率、批处理大小、训练周期等微调参数。
-
执行微调:
- 在准备好的数据和参数下对模型进行微调。
- 监控训练过程,确保模型正常学习且没有出现过拟合。
-
评估和优化:
- 使用独立的测试集评估微调后模型的性能。
- 评估指标可以包括准确率、召回率和F1得分。
- 根据评估结果调整微调策略或参数。
-
模型部署:
- 将微调后的模型部署到实际应用中,用于中文文本的命名实体识别任务。
优化NER_SFT数据
为了优化现有的 NER_SFT(Named Entity Recognition Supervised Fine-Tuning)数据以提升模型在中文实体抽取方面的能力,可以考虑以下几个方面:
-
数据质量和多样性:
- 清洗和标准化数据:确保数据集中没有错误或不一致的标注。纠正错误,统一实体标注的格式和类别。
- 增加数据多样性:确保数据集涵盖多种类型的文本(如新闻、社交媒体、专业文章等),并包含多种类型的实体(如人名、地点、组织等)。
-
扩展数据集:
- 引入更多数据:如果可能,添加更多的标注数据以增强模型的泛化能力。
- 伪标注技术:可以使用半监督学习或弱监督学习技术生成额外的训练数据。
-
深度理解实体类型:
- 特定域的实体识别:针对特定行业或领域(如医疗、法律)优化实体类型,增强模型在这些领域的表现。
-
模型微调策略优化:
- 高效的微调策略:采用有效的微调技术,如学习率衰减、权重正则化等。
- 特定的提示模板设计:为中文实体识别设计有效的提示模板,以引导模型更准确地识别实体。