当前位置: 首页 > news >正文

大模型预测结果导入到Doccano,人工修正预测不准的数据

背景

使用大语言模型做实体识别的实验时,发现大模型关于实体的边界预测一直不准。
主要原因在于当时找了很多同学标注数据,由于不同组同学关于实体的边界没有统一,故导致数据集中实体边界也没统一。
(找太多人标,会有这样的缺点)

如果重新标注数据,那么之前的标的数据就浪费了,而且又得折腾人来标。
虽然之前标的数据不好,但训练出的大模型,还是学到了一些东西。于是便打算让训练后的大模型预测,将大模型预测的结果导入到Doccano,再人工修正大模型预测不准的实体,这样可以减轻人工标注压力还能轻易获得更多的数据集。

简介

  • 展示大模型预测输出的数据格式;
  • 展示Doccano 命名实体识别导入的数据集格式;
  • 提供将大模型输出数据转为Doccano 导入数据集格式代码;

大模型预测结果的样例如下:

{"instruction": "你是专门进行实体抽取的专家。请从text中抽取出符合schema定义的实体,不存在的实体类型返回空列表。请按照JSON字符串的格式回答。schema:['数据', '项目', '任务'], text:三大攻坚战取得关键进展", "input": "", "output": "{\"数据\": [], \"项目\": [\"三大攻坚战\"], \"任务\": []}", "predict": {"数据": [], "项目": ["三大攻坚战取得关键进展"], "任务": []}
}

Doccano 导入的数据集样例如下:

{"id":17168,"text":"三大攻坚战取得关键进展","label":[[0,5,"任务"]],"Comments":[]}

大模型输出数据转为Doccano 代码

找出模型预测的实体,在text句子的开始下标和结束下标:

def find_substring_indices(parent_string, substring):  start_index = parent_string.find(substring)  if start_index != -1:end_index = start_index + len(substring)return start_index, end_index  else:  return -1, -1
import redef tran_llm_doccano(input_file, output_file, schema):doccano_format = {"text": None,"label": [],"Comments": []}def _find_text(text):pattern = r'text:(.*?)",'  match = re.search(pattern, text, re.MULTILINE)text_content = match.group(1)return text_contentwith open(input_file, 'r') as f:with open(output_file, 'w') as w:for line in f:text = _find_text(line)doccano_format["text"] = textdata = json.loads(line)predict = data["predict"]tmp = []for ent_cls in schema:for predict_ent_name in predict[ent_cls]:start_idx, end_idx = find_substring_indices(text, predict_ent_name)if start_idx == -1 or end_idx == -1:continuetmp.append([start_idx, end_idx, ent_cls])doccano_format["label"] = tmpw.write(json.dumps(doccano_format, ensure_ascii=False) + '\n')schema = ['数据', '项目', '任务']
tran_llm_doccano('data.jsonl', "doccano_import.jsonl", schema)

tran_llm_doccano(input_file, output_file, schema):

  • input_file 大模型预测的结果文件;
  • output_file 到入到 doccano的文件;
  • schema 实体类别;

将 大模型的预测结果转换后的Doccano格式的 output_file 文件,导入到Doccano的结果如下图所示:
在这里插入图片描述

开源

完整的代码点击查看: https://github.com/JieShenAI/csdn/blob/main/24/04/tran_llm_doccano/tran_llm_doccano.ipynb

http://www.lryc.cn/news/340484.html

相关文章:

  • python三方库_ciscoconfparse学习笔记
  • HDFS详解(Hadoop)
  • python创建word文档并向word中写数据
  • MongoDB的安装配置及使用
  • Go学习路线
  • 安全大脑与盲人摸象
  • 如何使用Git-Secrets防止将敏感信息意外上传至Git库
  • Day 14 网络协议
  • msyql中SQL 错误 [1118] [42000]: Row size too large (> 8126)
  • 实验六 智能手机互联网程序设计(微信程序方向)实验报告
  • Linux环境下,让Jar项目多线程部署成为可能
  • k8s调度场景
  • 基于小程序实现的餐饮外卖系统
  • 家居网购项目(手写分页)
  • goland2024安装包(亲测可用)
  • 35、链表-LRU缓存
  • 数据结构速成--栈
  • 算法练习第15天|226.翻转二叉树
  • C#面向对象——封装、封装案例示例
  • 【InternLM 实战营第二期-笔记3】茴香豆:搭建你的 RAG 智能助理
  • Advanced RAG 03:运用 RAGAs 与 LlamaIndex 评估 RAG 应用
  • leetcode
  • Unity DOTS《群体战斗弹幕游戏》核心技术分析之3D角色动画
  • react异步组件如何定义使用 标准使用方法
  • React + Ts + Vite + Antd 项目搭建
  • js爬虫puppeteer库 解决网页动态渲染无法爬取
  • 代码随想录:二叉树5
  • Tomcat 获取客户端真实IP X-Forwarded-For
  • 记录PS学习查漏补缺
  • Kafka 架构深入探索