批量提取SemEval 2014 Task 4-aspect_term的xml文件为csv

文章介绍了如何使用Python的xml.etree.ElementTree库和pandas库,将SemEval2014Task4中的aspect-termXML数据结构转换为CSV格式,以便于进一步分析和处理。
摘要由CSDN通过智能技术生成

批量提取SemEval 2014 Task 4-aspect_term的xml文件为csv

数据data

格式

<sentence id="892:1">
<text>Boot time is super fast, around anywhere from 35 seconds to 1 minute.</text>
<aspectTerms>
<aspectTerm term="Boot time" polarity="positive" from="0" to="9"/>
</aspectTerms>
</sentence>

目的

把XML数据转换为csv文件

代码

import xml.etree.cElementTree as ET
import pandas as pd
def xml_csv(listlist):
   xml = ['Laptop_Train.xml','Laptops_Test.xml','laptops-trial.xml',
      'Restaurants_Test.xml','Restaurants_Train.xml','Restaurants-trial.xml']
   csv_name = ['Laptop_Train.csv','Laptops_Test.csv','laptops-trial.csv',
      'Restaurants_Test.csv','Restaurants_Train.csv','Restaurants-trial.csv']
    # 解析XML文件
   tree = ET.parse(xml[listlist])
   root = tree.getroot()
   # 提取所有sentence元素
   sentences = root.findall('sentence')
   # 修复提取数据的方法,处理没有<aspectTerms>子元素的情况
   data=[]

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

      # 检查是否存在<aspectTerms>子元素
      aspect_terms_element = sentence.find('aspectTerms')
      if aspect_terms_element is not None:
         # 提取aspectTerms中的所有aspectTerm元素
         aspect_terms = aspect_terms_element.findall('aspectTerm')

         # 提取每个aspectTerm的term和polarity
         for aspect_term in aspect_terms:
               term = aspect_term.get('term')
               polarity = aspect_term.get('polarity')
               data.append([text,term,polarity])
   
   df = pd.DataFrame(data,columns=['text', 'term', '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)
# 生成csv
for i in range(6):
    xml_csv(i)

最后生成

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bessie_Lee_gogogo

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值