NLP应用 | 读取json文件提取单语数据

需求说明:

我们想要收集单语数据,但是有时候数据是json类型的存在,我们想要在json数据中读取单语数据的部分,把它们处理成每行一条单语数据的文件。

数据展示

json数据:

# 一条数据的展示
{"articleId": 2, 
 "sentId": 20,
 "entityMentions": 
	 [{"end": 20, "start": 17, "text": "林某某", "label": "Nh"}, 
 	 {"end": 51, "start": 48, "text": "海洛因", "label": "NDR"}, 
 	 {"end": 85, "start": 82, "text": "徐某某", "label": "Nh"}, 
 	 {"end": 90, "start": 87, "text": "林某某", "label": "Nh"}, 
 	 {"end": 123, "start": 120, "text": "徐某某", "label": "Nh"}, 
 	 {"end": 146, "start": 143, "text": "林某某", "label": "Nh"}, 
 	 {"end": 187, "start": 182, "text": "0.07克", "label": "NW"}, 
 	 {"end": 202, "start": 197, "text": "0.44克", "label": "NW"}, 
 	 {"end": 209, "start": 206, "text": "海洛因", "label": "NDR"}], 
 "sentText": "湛江市麻章区人民检察院指控,被告人林某某为了赚取利润,承诺帮一名不认识名字的青年男子将十粒毒品(海洛因)放在其养猪场代为销售。2014年8月7日早上7时许,吸毒人员徐某某来到林某某的养猪场购买毒品,当两人完成交易时,被公安民警当场抓获,并从徐某某身上扣押到可疑毒品一粒和人民币50元,从林某某处扣押到人民币100元和可疑毒品九小粒。经鉴定,查获的可疑毒品一粒,净重0.07克,可疑毒品九粒,净重0.44克,均检见海洛因成分。", 
 "relationMentions": 
	 [{"e1start": 17, "em2Text": "海洛因", "e21start": 48, "label": "traffic_in", "em1Text": "林某某"}, 
 	 {"e1start": 17, "em2Text": "徐某某", "e21start": 82, "label": "sell_drugs_to", "em1Text": "林某某"}]}

要处理成的数据:

湛江市麻章区人民检察院指控,被告人林某某为了赚取利润,承诺帮一名不认识名字的青年男子将十粒毒品(海洛因)放在其养猪场代为销售。2014年8月7日早上7时许,吸毒人员徐某某来到林某某的养猪场购买毒品,当两人完成交易时,被公安民警当场抓获,并从徐某某身上扣押到可疑毒品一粒和人民币50元,从林某某处扣押到人民币100元和可疑毒品九小粒。经鉴定,查获的可疑毒品一粒,净重0.07克,可疑毒品九粒,净重0.44克,均检见海洛因成分。

处理代码

import json

f1 = open("F:\\...\\datasets\\step1_train.json","r",encoding="utf-8")

# 统计有多少行
count=-1
for count, line in enumerate(f1):
    pass
count+=1
print(count)

f1.close()

f1 = open("F:\\...\\datasets\\step1_train.json","r",encoding="utf-8")
f2 = open("F:\\...\\datasets\\step1_train.txt","a+",encoding="utf-8")
for _ in range(count):
    content = f1.readline()
    content = json.loads(content)
    f2.write(content["sentText"]+'\n')
# print(type(content))
# print(content["sentText"])
f1.close()
f2.close()

代码解释:

  1. 第一步,统计json文件有多少行。
  2. 第二步,一行行读取json文件,然后读取追加到新的文件中。
  3. 第三步,按照行数循环。

查看是否成功

import json

f1 = open("F:\\...\\datasets\\step1_train.json","r",encoding="utf-8")
f2 = open("F:\\...\\datasets\\step1_train.txt","r",encoding="utf-8")

content = f1.readline()
content = json.loads(content)

content1 = f2.readline()

print(content["sentText"])
print(content1)

读取json文件和处理出来的文件,打印第一句看看是否相同。若实在不放心,打印十行二十行看看是否一样。

posted @ 2023-07-09 09:01  张Zong在修行  阅读(37)  评论(0编辑  收藏  举报