文章目录
- 背景
- 简介
- 数据集样例
- 转换代码
- 代码公开
- 进一步阅读
背景
用实体识别的标注数据集微调大模型,往往大模型的效果会好一点。
故笔者提供了将 Doccano 实体标注格式的数据集转为大模型微调数据集的代码;
简介
- 展示 Doccano 实体识别导出的数据集格式;
- 展示 大模型实体识别微调的数据集格式;
- 提供 从Doccano 实体 转换到大模型微调数据集格式的代码;
数据集样例
Doccano 样例:
点击查看 Doccano 样例文件:https://github.com/JieShenAI/csdn/blob/main/24/04/convert_doccano_llm/data/guihua_10.jsonl
下述是一个样例:
{"id":6281,"text":"支持有实力的大企业牵头组建创新联合体,承担国家重大科技项目","Comments":[],"label":[[21,29,"重要项目"]]
}
点击查看 LLM 实体微调的样例文件:https://github.com/JieShenAI/csdn/blob/main/24/04/convert_doccano_llm/data/llm_10.jsonl
下述是一个样例:
{"instruction": "你是专门进行实体抽取的专家。请从text中抽取出符合schema定义的实体,不存在的实体类型返回空列表。请按照JSON字符串的格式回答。,'schema': ['重要项目', '功能定位', '主要任务', '基本遵循', '关键数据', '数值'], 'text': '支持有实力的大企业牵头组建创新联合体,承担国家重大科技项目'", "input": "", "output": {"重要项目": ["国家重大科技项目"], "功能定位": [], "主要任务": [], "基本遵循": [], "关键数据": [], "数值": []}
}
转换代码
查看代码:https://github.com/JieShenAI/csdn/blob/main/24/04/convert_doccano_llm/convert_doccano_llm.ipynb
import jsoninstruction_format = "你是专门进行实体抽取的专家。请从text中抽取出符合schema定义的实体,不存在的实体类型返回空列表。请按照JSON字符串的格式回答。, 'schema': {schema}, 'text': '{text}'"def convert_coccano2LLM(input_file, output_file, schema):with open(input_file, 'r') as f:with open(output_file, 'w') as w:for line in f:d = json.loads(line)text = d['text']ent_labels = d['label']output = {}for ent_class in schema:output[ent_class] = []for ent in ent_labels:start, end, ent_class = entoutput[ent_class].append(text[start:end])llm_data = {'instruction':instruction_format.format(schema=schema, text=text),"input":"","output": json.dumps(output, ensure_ascii=False)}w.write(json.dumps(llm_data, ensure_ascii=False) + '\n')
convert_coccano2LLM('data/guihua_10.jsonl', 'data/llm_10.jsonl', schema=['重要项目', '功能定位', '主要任务','基本遵循','关键数据','数值']
)
convert_coccano2LLM(input_file, output_file, schema)
:
input_file
: Doccano 实体导出文件;out_file
: 大模型实体微调导入数据集文件;特别注意:json.dumps(output)
, 这里是 label 要转成字符串,使用 json.dumps 将字典转成字符串,不然后面在数据集导入时会报错;- schema: 实体类别;
代码公开
在上述给出的github 链接中,提供了完整的测试文件和运行代码;
进一步阅读
在下述链接中,提供一种便捷的大模型实体识别实战的教程:
-
llama-factory SFT系列教程 (三),chatglm3-6B 大模型命名实体识别实战
-
大模型预测结果导入到Doccano,人工修正预测不准的数据
人工修正大模型预测的结果,从而实现训练出更好的结果