美文网首页
Task5 作者信息关联-知识图谱

Task5 作者信息关联-知识图谱

作者: ShowMeCoding | 来源:发表于2021-01-19 23:20 被阅读0次

5.1 任务说明

  • 学习主题:作者关联(数据建模任务),对论文作者关系进行建模,统计最常出现的作者关系;
  • 学习内容:构建作者关系图,挖掘作者关系
  • 学习成果:论文作者知识图谱、图关系挖掘

5.2 数据处理步骤

  • 将论文第一作者与其他作者(论文非第一作者)构建图;
  • 使用图算法统计图中作者与其他作者的联系;

5.3 社交网络分析

图是复杂网络研究中的一个重要概念。Graph是用点和线来刻画离散事物集合中的每对事物间以某种方式相联系的数学模型。Graph在现实世界中随处可见,如交通运输图、旅游图、流程图等。利用图可以描述现实生活中的许多事物,如用点可以表示交叉口点之间的连线表示路径,这样就可以轻而易举的描绘出一个交通运输网络。

5.4 图类型

  • 无向图,忽略了两节点间边的方向。
  • 指有向图,考虑了边的有向性。
  • 多重无向图,即两个结点之间的边数多于一条,又允许顶点通过同一条边和自己关联。

5.5 具体代码以及讲解

#导入所需的package并读取原始数据
import seaborn as sns
from bs4 import BeautifulSoup   # 用于爬取arxiv的数据
import re
import requests   # 用于向网络发送请求
import json
import pandas as pd  # 数据处理和分析
import matplotlib.pyplot as plt  # 画图工具
def readArxivFile(path, columns=['id','submitter','authors','title','comments','report-no','categories','license','abstract','versions','update_date','authors_parsed'],count=None):
    '''
    定义读取文件的的函数
    path: 文件路径
    columns:需要选择的列
    count:读取的行
    '''
    
    data = []
    with open(path,'r') as f:
        for idx, line in enumerate(f):
            if idx == count:
                break
            
            d = json.loads(line)
            d = {col: d[col] for col in columns}
            data.append(d)
            
    data = pd.DataFrame(data)
    return data

data = readArxivFile('./arxiv-metadata-oai-snapshot.json',
                    ['id','categories','authors_parsed'],
                    200000)
data
image.png
import networkx as nx 

# 创建无向图
G = nx.Graph()

# 只用五篇论文进行构建
for row in data.iloc[:5].itertuples():
    authors = row[3]          # 第三列
    authors = [' '.join(x[:-1]) for x in authors]
    
    # 第一个作者 与 其他作者链接
    for author in authors[1:]:
        G.add_edge(authors[0],author)   # 添加节点2,3并链接2和3节点
# 绘制作者关系图

nx.draw(G, with_labels=True)
image.png

如果我们500篇论文构建图,则可以得到更加完整作者关系,并选择最大联通子图进行绘制,折线图为子图节点度值。

# 用500篇论文进行构建
for row in data.iloc[:500].itertuples():        # 500篇论文
    authors = row[3]                            # 第三列 选择 author
    authors = [' '.join(x[:-1]) for x in authors]
    
    # 第一个作者 与 其他作者链接
    for author in authors[1:]:
        G.add_edge(authors[0],author)   # 添加节点2,3并链接2和3节点
degree_sequence = sorted([d for n, d in G.degree()], reverse=True)
dmax = max(degree_sequence)

plt.loglog(degree_sequence, "b-", marker="o")
plt.title("Degree rank plot")
plt.ylabel("degree")
plt.xlabel("rank")

# draw graph in inset
plt.axes([0.45, 0.45, 0.45, 0.45])
Gcc = G.subgraph(sorted(nx.connected_components(G), key=len, reverse=True)[0])

pos = nx.spring_layout(Gcc)
plt.axis("off")
nx.draw_networkx_nodes(Gcc, pos, node_size=20)
nx.draw_networkx_edges(Gcc, pos, alpha=0.4)
plt.show()
image.png

相关文章

  • Task5 作者信息关联-知识图谱

    5.1 任务说明 学习主题:作者关联(数据建模任务),对论文作者关系进行建模,统计最常出现的作者关系; 学习内容:...

  • 知识图谱技术解剖

    本体、知识库、知识图谱、知识图谱识别之间的关系? 本体:领域术语集合。 知识库:知识集合。 知识图谱:图状具有关联...

  • 结合知识图谱和推荐系统的应用

    1 什么是知识图谱 知识图谱是一种用图模型来描述知识和建模世界万物之间的关联关系的技术方法。知识图谱由节点和边祖成...

  • kg基础(一)—什么是知识图谱

    一、什么是知识图谱 1、知识图谱旨在描述真实世界中存在的各种实体或概念,以及它们之间的关联关系。 2、每个实体或概...

  • 01 基本概念

    1 什么是知识图谱 知识图谱概念:一种图模型来描述知识和建模世界万物之间的关联关系的技术方法组成:节点:实体:一个...

  • 知识图谱信息

    01 源地址:http://geek.csdn.net/news/detail/203338 今天我的分享分为两个...

  • 《知识图谱》理解

    知识图谱的意义 利用知识图谱为查询词赋予丰富的语义信息,建立与现实世界实体的联系,从而帮助用户更快找到所需的信息。...

  • 产品经理视觉——初识知识图谱(一)

    一、什么是知识图谱? 知识图谱(Knowledge Graph)以语义网来描述现实世界中不同信息之间的关系,主要以...

  • 知识图谱的应用前景和挑战如何? | “人工智能+区块链”科普第8

    如果将知识图谱比作小孩玩的磁力棒,把一个个互不相干的知识,根据关联性连成一个“语义网络”,这对机器来说就是图谱。相...

  • 怎样引导孩子进行深度阅读

    深度阅读(Deep Reading)是一种基于知识图谱,集成与书籍相关的知识源,具备内容理解、关联分析以及用户行为...

网友评论

      本文标题:Task5 作者信息关联-知识图谱

      本文链接:https://www.haomeiwen.com/subject/xewlzktx.html