背景
用实体识别的标注数据集微调大模型,往往大模型的效果会好一点。
故笔者提供了将 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 json
instruction_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 = ent
if ent_class in schema:
output[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 链接中,提供了完整的测试文件和运行代码;
进一步阅读
在下述链接中,提供一种便捷的大模型实体识别实战的教程:
-
大模型预测结果导入到Doccano,人工修正预测不准的数据
人工修正大模型预测的结果,从而实现训练出更好的结果
文章评论