如何将新标注的三元组数据转换成unicoqe可以处理的格式

目录

问题描述:

问题解决:


问题描述:

原始的标注的三元组格式如下:

需要转换的格式如下:

tips:有一个小的难点:

1. 针对多三元组的情况,需要额外考虑

2. 最后一个样本,也记得需要处理

问题解决:

from pdb import set_trace as stop
import os
from tqdm import trange
generated_path= "/public/home/hongy/qtxu/UniCOQE_20230812/data/tuple/ele/train_new_generated.txt"
Unicoqe_path = "/public/home/hongy/qtxu/UniCOQE_20230812/data/tuple/ele/train.txt"

raw_data = []
with open(os.path.join(generated_path), 'r') as f:
    for line in f:
        raw_data.append(line)

with open(Unicoqe_path, 'w') as fw:

    line_id, i = 0, 0
    text_line, label_line = '', ''
    for line_id in trange(len(raw_data), desc= "procesing data ……"):
        cur_line = raw_data[line_id]
        if len(cur_line.split('\t')) != 2:
            label_line += '\n' + cur_line
        else:
            if text_line !='':
                sent, label = text_line.strip().split("\t")
                fw.write(sent+"####")
                label_list = label_line.strip().split('\n\n')
                span_index =[]
                all_span= ()
                for label_i in label_list:
                    cur_span = label_i.strip()[1:-1].split(';')
                    sub, obj,asp = cur_span[0], cur_span[1], cur_span[2]
                    try:
                        sub_index = [int(index) for index, word in (pair.split('&', 1) if '&' in pair else [pair, ''] for pair in sub.strip()[1:-1].split())] # 针对14&&这样的特例,进行处理
                        obj_index = [int(index) for index, word in (pair.split('&', 1) if '&' in pair else [pair, ''] for pair in obj.strip()[1:-1].split())]
                        asp_index = [int(index) for index, word in (pair.split('&')for pair in asp.strip()[1:-1].split())] 
                    except:
                        print(text_line)
                        stop()

                    span_tuple = (sub_index, obj_index, asp_index)
                    span_index.append(span_tuple)
                
                fw.write(str('['+', '.join(str(span) for span in span_index)) + "]\n")


            text_line = cur_line
            label_line=''

    fw.write(text_line.strip().split("\t")[0]+"####")
    label_list = label_line.strip().split('\n\n')
    span_index =[]
    all_span= ()
    for label_i in label_list:
        cur_span = label_i.strip()[1:-1].split(';')
        sub, obj,asp = cur_span[0], cur_span[1], cur_span[2]
        sub_index = [int(index) for index, word in (pair.split('&', 1) if '&' in pair else [pair, ''] for pair in sub.strip()[1:-1].split())] # 针对14&&这样的特例,进行处理
        obj_index = [int(index) for index, word in (pair.split('&', 1) if '&' in pair else [pair, ''] for pair in obj.strip()[1:-1].split())]
        asp_index = [int(index) for index, word in (pair.split('&')for pair in asp.strip()[1:-1].split())] 

        span_tuple = (sub_index, obj_index, asp_index)
        span_index.append(span_tuple)
    
    fw.write(str('['+', '.join(str(span) for span in span_index)) + "]\n")


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/405825.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python程序设计基础:字符串与正则表达式

第四章:字符串与正则表达式 4.1字符串 最早的字符串编码是美国标准信息交换码ASCII,仅对10个数字、26个大写英文字母、26个小写英文字母及一些其他符号进行了编码。ASCII码采用1个字节来对字符进行编码,最多只能表示256个符号。 随着信息技…

SpringBoot和SpringCloud的区别,使用微服务的好处和缺点

SpringBoot是一个用于快速开发单个Spring应用程序的框架,通过提供默认配置和约定大于配置的方式,快速搭建基于Spring的应用。让程序员更专注于业务逻辑的编写,不需要过多关注配置细节。可以看成是一种快速搭建房子的工具包,不用从…

2023年12月CCF-GESP编程能力等级认证C++编程三级真题解析

一、单选题(共15题,共30分) 第1题 下面C++数组的定义中,会丢失数据的是( )。 A:char dict_key[] = {‘p’,‘t’,‘o’}; B:int dict_value[] = {33,22,11}; C:char dict_name[]={‘chen’,‘wang’,‘zhou’}; D:float dict_value[]={3,2,1}; 答案:C 第2题 在下…

通过北辰以太网模块BCnet-FX实现与FX3U系列PLC进行以太网通信的具体方法

通过北辰以太网模块BCnet-FX实现与FX3U系列PLC进行以太网通信的具体方法 首先,在电脑的网络和Internet设置中,找到自己当前使用的网卡,如下图所示,设置该网卡的IP地址和子网掩码,(和想要连接的FX3U PLC设置在同一网段即可), 如下图所示,点击下方的连接目标,然后双击当…

Java学习笔记2024/2/23

今日内容 多态 包 final 权限修饰符 代码块 教学目标 能够说出使用多态的前提条件理解多态的向上转型理解多态的向下转型能够知道多态的使用场景包的作用public和private权限修饰符的作用描述final修饰的类的特点描述final修饰的方法的特点描述final修饰的变量的特点 第…

QEMU之CPU虚拟化

概述 KVM是由以色列初创公司Qumranet在CPU推出硬件虚拟化之后开发的一个基于内核的虚拟机监控器。 KVM是一个虚拟化的统称方案,除了x86外,ARM等其他架构也有自己的方案,所以KVM的主体代码位于内核树virt/kvm目录下面,表示所有CP…

音频常用测试参数(一)

一、总谐波失真(THDN) 总谐波失真指音频信号源通过功率放大器时,由于非线性元件所引起的输出信号比输入信号多出的额外谐波成份。谐波失真是由于系统不是完全线性造成的,我们用新增加总谐波成份的均方根与原来信号有效值的百分比来…

【更新】ARCGIS之成片区开发方案报备坐标txt格式批量导出工具(定制开发版)

序言 之前开发的成片区开发方案报备格式是按湖北省的标准定制的,目前,自然资源部又有了新的格式要求,现在新增国标版的成片区开发方案报备格式导出。 之前版本软件详见:软件介绍 一、软件简介 本软件是基于arcgis二次开发的工具&…

如何避免软件测试的遗漏或重复?

在实际软件测试中,经常遇到遗漏测试点,测试不充分;或者重复测试,造成资源浪费的情况。因此如何避免软件测试遗漏或重复,非常重要。 1、实施过程 首先,通过梳理某个领域的相关项目,分析相关业务规…

第九届大数据与计算国际会议 (ICBDC 2024) 即将召开!

2024年第九届大数据与计算国际会议(ICBDC 2024)将于2024年5月24至26日在泰国曼谷举行。本次会议由朱拉隆功大学工程学院工业工程系主办。ICBDC 2024的宗旨是展示大数据和计算主题相关科学家的最新研究和成果,为来自不同地区的专家代表们提供一…

TSL四次握手

HTTPS 常用的密钥交换算法有两种,分别是 RSA 和 ECDHE 算法。 其中,RSA 是比较传统的密钥交换算法,它不具备前向安全的性质,因此现在很少服务器使用的。而 ECDHE 算法具有前向安全,所以被广泛使用。 1. ECDHE算法 1.…

台式电脑电源功率越大越费电吗?装机选购多少W电源

要组装一台电脑,我们首先需要选择硬件。 硬件搭配最关键的一点就是CPU和主板的兼容性。 硬件、电源等之间的平衡都需要仔细考虑。 那么台式电脑电源多大功率合适呢? 下面分享组装电脑电源瓦数选购指南,教您正确选择合适的电源瓦数。 让我们来…

备战蓝桥杯————双指针技巧巧解数组1

利用双指针技巧来解决七道与数组相关的题目。 两数之和 II - 输入有序数组: 给定一个按升序排列的数组,找到两个数使它们的和等于目标值。可以使用双指针技巧,在数组两端设置左右指针,根据两数之和与目标值的大小关系移动指针。 …

C++的queue容器->基本概念、常用接口

#include<iostream> using namespace std; #include <queue> #include <string> //队列 queue class Person { public: Person(string name, int age) { this->m_Name name; this->m_Age age; } string m_Name; int…

基于Tomcat+MySQL+JAVA开发的酒店管理信息系统(无须Eclipse直接可在Tomcat中运行)

基于TomcatMySQLJAVA开发的酒店管理信息系统 项目介绍&#x1f481;&#x1f3fb; 介绍思路 1 《酒店管理系统》 资源目录介绍 2 安装配置 1&#xff09;前期准备 a、安装好MySQL数据库&#xff0c;用户名root&#xff0c;密码root b、安装配置java环境&#xff08;JDK1.7&…

【Docker 的安装:centos】

文章目录 1 :peach:各版本平台支持情况:peach:2 :peach:CentOS 安装:peach:2.1 :apple:安装依赖:apple:2.2 :apple:安装 Docker:apple:2.3 :apple:实战经验:apple:2.3.1 :lemon:Docker 镜像源修改:lemon:2.3.2 :lemon:Docker 目录修改:lemon: 1 &#x1f351;各版本平台支持情况…

python程序设计基础:文件操作

第七章&#xff1a;文件操作 为了长期保存数据以便重复使用、修改和共享,必须将数据以文件的形式存储到外部存储介质(如磁盘、U盘、光盘或云盘、网盘、快盘等)中。 文件操作在各类应用软件的开发中均占有重要的地位: 管理信息系统是使用数据库来存储数据的,而数据库最终还是…

C++的string容器->基本概念、构造函数、赋值操作、字符串拼接、查找和替换、字符串比较、字符存取、插入和删除、子串

#include<iostream> using namespace std; #include <string> //string的构造函数 /* -string(); //创建一个空的字符串 例如: string str; -string(const char* s); //使用字符串s初始化 -string(const string& str); //使…

力扣hot100题解(python版7-9题)

7、接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,…

音视频剪辑|Windows|抽帧和合帧

什么是抽帧&#xff1f; FFmpeg 抽帧&#xff08;Extracting frames&#xff09;的作用是从视频文件中按需提取单张或多张静止图像&#xff08;帧&#xff09;&#xff0c;并将它们保存为图片文件&#xff08;如 JPEG、PNG 等格式&#xff09;。这一功能在以下场合十分有用&am…