【python】SemEval 2014数据集 xml文件格式转换为csv+txt

news2024/11/15 12:29:55

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~

【python】SemEval 2014数据集 xml文件格式转换为csv+txt

  • SemEval2014简介
  • 4个子任务
  • 数据格式
  • xml转csv
  • xml转txt

SemEval2014简介

SemEval2014,ABSA( Aspect Based Sentiment Analysis)任务关注的领域是NLP中的细粒度情感分析,即给定一个句子判断其中的aspect以及它的情感极性。数据是基于laptop评论和restaurant评论

4个子任务

1.Aspect term extraction,方面术语抽取
2.Aspect term polarity,方面术语极性分类
3.Aspect category detection,方面类别抽取
4.Aspect category polarity,方面类别极性分类
对于子任务1和子任务2提供了laptop和restaurant数据,而对于子任务3和子任务4只提供了restaurant数据。

数据格式

原始数据为xml格式
在这里插入图片描述

xml转csv

xml_csv.py

import xml.etree.cElementTree as ET
import pandas as pd

def xml_csv(listlist):
    xml = ['SemEval2014_Restaurants.xml']
    csv_name = ['SemEval2014_Restaurants.csv']
    # 解析XML文件
    tree = ET.parse(xml[listlist])
    root = tree.getroot()
    # 提取所有sentence元素
    sentences = root.findall('sentence')
    # 修复提取数据的方法,处理没有<aspectCategories>子元素的情况
    data = []

    # 遍历每个sentence元素
    for sentence in sentences:
        # 提取text内容
        text = sentence.find('text').text

        # 检查是否存在<aspectCategories>子元素
        aspect_categories_element = sentence.find('aspectCategories')
        if aspect_categories_element is not None:
            # 提取aspectCategories中的所有aspectCategory元素
            aspect_categories = aspect_categories_element.findall('aspectCategory')

            # 提取每个aspectCategories的term和polarity
            for aspect_category in aspect_categories:
                category = aspect_category.get('category')
                polarity = aspect_category.get('polarity')
                data.append([text, category, polarity])

    df = pd.DataFrame(data, columns=['text', 'category', 'polarity'])
    df = df[df['polarity'].isin(['positive', 'negative', 'neutral'])]
    df['polarity'] = df['polarity'].map(
        {'positive': 1, 'neutral': 0, 'negative': -1})

    df.to_csv(path_or_buf=csv_name[listlist], index=0)

for i in range(1):
    xml_csv(i)

SemEval2014_Restaurants.csv
在这里插入图片描述

xml转txt

xml_txt.py

import xml.etree.cElementTree as ET

# 写入文件
output_file = open('SemEval2014_Restaurants.txt', 'a', encoding='utf-8')

def xml_txt(listlist):
    xml = ['SemEval2014_Restaurants.xml']
    csv_name = ['SemEval2014_Restaurants.csv']
    # 解析XML文件
    tree = ET.parse(xml[listlist])
    root = tree.getroot()
    # 提取所有sentence元素
    sentences = root.findall('sentence')
    # 修复提取数据的方法,处理没有<aspectCategories>子元素的情况
    data = []

    # 遍历每个sentence元素
    for sentence in sentences:
        # 提取text内容
        text = sentence.find('text').text

        # 检查是否存在<aspectCategories>子元素
        aspect_categories_element = sentence.find('aspectCategories')
        if aspect_categories_element is not None:
            # 提取aspectCategories中的所有aspectCategory元素
            aspect_categories = aspect_categories_element.findall('aspectCategory')

            # 提取每个aspectCategories的term和polarity
            for aspect_category in aspect_categories:
                category = aspect_category.get('category')
                polarity = aspect_category.get('polarity')
                if polarity == "negative":
                    polarity = -1
                elif polarity =="positive":
                    polarity = 1
                else:
                    polarity = 0
                # print(polarity)
                output_file.write(f"{polarity}\t{category}\t{text}\n")

for i in range(1):
    xml_txt(i)

SemEval2014_Restaurants.txt

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Dance with Compiler - EP3 ARM64 汇编传参约定以及 restrict 汇编分析

在 ARM64 架构&#xff08;也称为 AArch64&#xff09;中&#xff0c;函数调用约定定义了寄存器如何用于传递参数和返回值。这些约定有助于实现高效的函数调用和返回。在 ARM64 的汇编中&#xff0c;寄存器传参遵循以下约定&#xff1a; 参数传递寄存器 x0 - x7: 这 8 个寄存器…

Golang | Leetcode Golang题解之第396题旋转函数

题目&#xff1a; 题解&#xff1a; func maxRotateFunction(nums []int) int {numSum : 0for _, v : range nums {numSum v}f : 0for i, num : range nums {f i * num}ans : ffor i : len(nums) - 1; i > 0; i-- {f numSum - len(nums)*nums[i]ans max(ans, f)}return…

超声波气象站

超声波气象站的设计优势包括&#xff1a; 非接触式测量&#xff1a;超声波气象站利用超声波技术进行测量&#xff0c;可以在不接触被测物体的情况下进行精确的测量。这意味着测量过程不会受到外界干扰或影响&#xff0c;提高了测量的准确性和可靠性。 多参数测量&#xff1a;超…

LVGL 控件之标签(lv_label)

目录 一、概述二、标签1、设置文本2、长模式3、文本着色4、文本选择5、内置图标6、事件7、API 函数 一、概述 标签部件由三个部分组成&#xff1a;主体背景、滚动条和所选文本&#xff1a; LV_PART_MAIN&#xff08;主体背景&#xff09;使用所有典型的背景属性和文本属性。 …

windows手工杀毒-寻找可疑进程之网络连接

上篇回顾&#xff1a;windows手工杀毒-寻找可疑进程之句柄 上篇我们简单介绍了如何通过句柄发现可疑进程&#xff0c;主要有两个方向&#xff0c;一个是通过命名句柄的名称&#xff0c;利用全局唯一的句柄名反向标识进程&#xff0c;另一个就是通过句柄查看进程占有的资…

二、线性结构及算法

文章目录 一、稀疏数组1.1 实际需求1.2 基本介绍1.3 应用实例 二、队列2.1 引入2.2 基本介绍2.3 数组模拟队列 三、链表3.1 链表介绍3.2 单链表的应用实例3.3 单链表面试题3.4 双向链表应用实例3.5 单向环形链表 四、栈4.1 基本介绍4.2 数组模拟栈4.3 链表模拟栈4.4 栈实现综合…

PMP--一、二、三模--分类--14.敏捷--技巧--宣言

文章目录 技巧一模14.敏捷--宣言--重视实在的--工作的软件大于流程和文档19、 [单选] 一个关键干系人坚持团队用正式的文档广泛地记录软件代码。产品负责人解释说&#xff0c;虽然一定数量的文档是必要的&#xff0c;但团队成员最好把时间花在开发软件上&#xff0c;因为这对客…

Java 每日一刊(第2期):搭建开发环境

文章目录 JVM、JRE、JDKJVM&#xff08;Java Virtual Machine&#xff0c;Java 虚拟机&#xff09;JRE&#xff08;Java Runtime Environment&#xff0c;Java 运行时环境&#xff09;JDK&#xff08;Java Development Kit&#xff0c;Java 开发工具包&#xff09;JVM、JRE、JD…

1765asp.net古镇旅游网站VS开发sqlserver数据库web结构c#编程web网页设计

博主介绍&#xff1a;专注于Java .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的可以…

Python | Leetcode Python题解之第395题至少有K个重复字符的最长子串

题目&#xff1a; 题解&#xff1a; class Solution:def longestSubstring(self, s1: str, k: int) -> int:if k 1: return len(s1)n len(s1)res 0for c in range(1, len(set(s1)) 1):# 滑窗中字母种类个数恰好为 cfreq Counter()l cnt tcnt 0 for r, ch in enu…

安防监控/视频汇聚平台EasyCVR无法启动并报错“error while loading shared libraries”,如何解决?

安防监控/视频汇聚平台EasyCVR视频管理系统以其强大的拓展性、灵活的部署方式、高性能的视频能力和智能化的分析能力&#xff0c;为各行各业的视频监控需求提供了优秀的解决方案。通过简单的配置和操作&#xff0c;用户可以轻松地进行远程视频监控、存储和查看&#xff0c;满足…

AI基础 L10 Adversarial Search I 对抗性搜索

Multiagent Environments In multiagent environments, each agent must: — Consider everyone else’s actions — Coordinate in order to act coherently 多个智能体&#xff08;agent&#xff09;相互作用&#xff0c;每个智能体都具有自己的目标和行动策略。在多智能体环…

C++ | Leetcode C++题解之第396题旋转图像

题目&#xff1a; 题解&#xff1a; class Solution { public:int maxRotateFunction(vector<int>& nums) {int f 0, n nums.size();int numSum accumulate(nums.begin(), nums.end(), 0);for (int i 0; i < n; i) {f i * nums[i];}int res f;for (int i …

【经纬度坐标系、墨卡托投影坐标系和屏幕坐标系转换详解】

地图坐标系转换详解 1. 引言2. 坐标系定义2.1 经纬度坐标系2.2 墨卡托投影坐标系3.3 屏幕坐标系 2. 坐标系间的转换2.1 经纬度坐标系到墨卡托投影坐标系2.2 墨卡托投影坐标系到经纬度坐标系2.3 墨卡托投影坐标系到屏幕坐标系2.4 屏幕坐标系到墨卡托投影坐标系2.5 经纬度坐标系到…

mfc140u.dll文件错误的相关修复方法,4种方法修复mfc140u.dll

当面对基于Microsoft Visual C开发的应用程序出现启动或运行失败时&#xff0c;mfc140u.dll文件错误往往是罪魁祸首之一。这个动态链接库&#xff08;DLL&#xff09;文件对于许多Windows软件来说是必不可少的&#xff0c;因为它包含了重要的编程代码和数据。如果发现此文件损坏…

数据结构(7.1)——查找的基本概念

基本概念 查找——在数据结构集合中寻找满足某种条件的数据元素的过程称为查找 查找表&#xff08;查找结构&#xff09;——用于查找的数据集合称为查找表&#xff0c;它由同一类型的数据元素(或记录)组成 关键字——数据元素中唯一标识该元素的某个数据项的值&#xff0c;…

【C++二分查找 贪心】1488. 避免洪水泛滥

本文涉及的基础知识点 C二分查找 贪心&#xff1a;决策包容性 LeetCode1488. 避免洪水泛滥 你的国家有无数个湖泊&#xff0c;所有湖泊一开始都是空的。当第 n 个湖泊下雨前是空的&#xff0c;那么它就会装满水。如果第 n 个湖泊下雨前是 满的 &#xff0c;这个湖泊会发生 洪…

【Canvas与艺术】菊花孔雀螺旋

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>菊花孔雀螺旋</title><style type"text/css">…

HTML 揭秘:HTML 编码快速入门

HTML 揭秘&#xff1a;HTML 编码快速入门 一 . 前端知识介绍二 . HTML 介绍三 . HTML 快速入门四 . HTML 编辑器 - VSCode4.1 插件安装4.2 修改主题配色4.3 修改快捷键4.4 设置自动保存4.5 创建 HTML 文件4.5 书写 HTML 代码4.6 常见快捷键 五 . 基础标签5.1 字体标签5.1.1 col…

SpringCloud之配置中心git示例

SpringCloud之配置中心git示例 随着线上项目变的日益庞大&#xff0c;每个项目都散落着各种配置文件&#xff0c;如果采用分布式的开发模式&#xff0c;需要的配置文件随着 服务增加而不断增多。 某一个基础服务信息变更&#xff0c;都会引起一系列的更新和重启&#xff0c;…