NYT-Wiki关系抽取数据集分析(画关系分布图)
程序员文章站
2023-11-17 19:32:28
本节主要介绍用Matlibplot绘制关系分布图,更加直观展示数据集的分布。...
目录:NYT-Wiki数据集分析
【数据集分析】NYT-Wiki关系抽取数据集分析(一)—— 理解单条实例
【数据集分析】NYT-Wiki关系抽取数据集分析(二)—— 统计类别和实例数
【数据集分析】NYT-Wiki关系抽取数据集分析(三)—— 绘制Relation分布图
第二节,获得了三个子集的描述:类别数和实例数。
本节介绍绘制数据集的Relation分布图:
图中横坐标是不同的Relation,纵坐标是每个Relation的Instances数。
1. 查看数据分布
查看数据分布主要包括三步:
- 获取数据集的每条数据(json格式)
- 建立一个词频
dict
,格式为:{"class name 1": count1, "class name 2":count2, ...}
- 使用matplotlib进行图像绘制
2. 代码
import matplotlib as mpl
import matplotlib.pyplot as plt
# 1. 获取 Train Set 的数据
train_rel_fre_dict = {}
with open("train_json.txt", 'r', encoding = 'utf-8') as f:
# 2. 建立词频表
for line in f.readlines():
line = json.loads(line) # loads(字符串), load(文件名字)
if line['relation'] not in train_rel_fre_dict.keys():
train_rel_fre_dict[line['relation']] = 1
else:
train_rel_fre_dict[line['relation']] += 1
# print("train set中的Relation个数:",len(train_rel_fre_dict))
# 3. 绘图
x = []
y = []
width = []
sort = sorted(train_rel_fre_dict.items(), key=lambda kv: (-kv[1])) # 按值排序
for i in sort:
x.append(i[0])
y.append(i[1])
width.append(1)
plt.figure(figsize = [40, 10])
plt.bar(x,y,width, align='center', alpha=0.5, clip_on = True)
plt.ylim([0, 5000]) # 限制y轴数据的取值范围
plt.xlabel("relation name")
plt.ylabel("# of relation")
plt.title("WikidataNYT-- train_data -- relation number statistic")
plt.tick_params(axis='x', colors='red', length=13, width=3, rotation=90)
plt.savefig('wikidata_NYT_train.png')
本文地址:https://blog.csdn.net/xiangduixuexi/article/details/107055012
上一篇: 大时代背景下企业站长如何求生存求发展?
下一篇: 经典SQL语句大全第1/2页