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()
代码解释:
- 第一步,统计json文件有多少行。
- 第二步,一行行读取json文件,然后读取追加到新的文件中。
- 第三步,按照行数循环。
查看是否成功
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文件和处理出来的文件,打印第一句看看是否相同。若实在不放心,打印十行二十行看看是否一样。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)