【数据集分析】NYT-Wiki关系抽取数据集分析(三)—— 直观的关系实例分布图

    技术2022-07-10  134

    目录: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 def plot_relation_distribution(dataset_path): # 1. 获取 Train Set 的数据 rel_fre_dict = {} with open(dataset_path, 'r', encoding = 'utf-8') as f: # 2. 建立词频表 for line in f.readlines(): line = json.loads(line) # loads(字符串), load(文件名字) if line['relation'] not in rel_fre_dict.keys(): rel_fre_dict[line['relation']] = 1 else: rel_fre_dict[line['relation']] += 1 # print("train set中的Relation个数:",len(train_rel_fre_dict)) # 3. 绘图 x = [] y = [] width = [] sorted_rel_fre_dict = sorted(rel_fre_dict.items(), key=lambda kv: (-kv[1])) # 按值排序 for i in sorted_rel_fre_dict: 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(str(dataset_path)+' relation number statistic') plt.tick_params(axis='x', colors='red', length=13, width=3, rotation=90) plt.savefig(str(dataset_path)+'.png') plot_relation_distribution(train_path) plot_relation_distribution(valid_path) plot_relation_distribution(test_path)
    Processed: 0.010, SQL: 9