知识图谱分析。
项目描述
统一Python框架,用于图分析和共现分析。
关于
BlueGraph是一个Python框架,它整合了来自不同图处理后端的图分析功能。它提供以下一组接口:
预处理和共现分析API,提供语义属性编码器和共现图生成器;
图分析API,提供计算图指标、执行路径搜索和社区检测的接口;
表示学习API,用于应用各种图嵌入技术;
表示学习下游任务API,允许用户执行节点分类、相似性查询和链接预测。
使用内置的PGFrame
数据结构(目前,基于pandas的实现可用)来表示属性图,它提供了一个后端无关的API,支持以下内存和持久化图后端:
NetworkX(用于分析API)
graph-tool(用于分析API)
Neo4j(用于分析和表示学习API);
StellarGraph(用于表示学习API)。
gensim(用于表示学习API)。
这个存储库起源于构建COVID-19相关知识图谱的蓝脑努力,该图谱是从CORD-19数据集构建的,并分析了生成的图谱以进行文献综述,研究糖代谢失调在COVID-19进展中的作用。有关知识图谱的构建、探索和分析的更多细节,请参阅COVID-19共现图谱生成和分析。
bluegraph
包
BlueGraph的API建立在4个主要包之上
bluegraph.core
提供图形表示的交换数据结构,作为基于不同后端(如PGFrame
)的图形处理器的输入,以及针对不同图形分析和嵌入类的接口(如MetricProcessor
、PathFinder
、CommunityDetector
、GraphElementEmbedder
等)。bluegraph.backends
是一个包,收集了针对不同图形后端的多种图形处理和分析接口(例如,NXPathFinder
用于NetworkX提供的路径搜索功能,Neo4jCommunityDetector
用于Neo4j提供的社区检测方法等)。bluegraph.preprocess
是一个包含预处理属性图的实用工具包(例如,SemanticPGEncoder
用于将节点/边属性编码为数值向量,CooccurrenceGenerator
用于生成和分析PGFrames中的共现关系)。bluegraph.downstream
是一个包,提供了一组基于图形和图形元素向量表示的各种下游任务的实用工具(例如,NodeSimilarityProcessor
用于基于节点的向量表示构建和查询节点相似性索引,EdgePredictor
用于根据节点向量表示预测图形的真边和假边,EmbeddingPipeline
用于堆叠图形预处理、嵌入、相似性索引构建等管道)。
BlueGraph API的主要组件如下所示
cord19kg
包
cord19kg
包包含一套工具,用于使用提取的命名实体的共现分析对CORD-19数据集进行交互式探索和分析。它包括数据准备和整理助手、生成和分析共现图的工具。此外,它还提供了一些基于JupyterDash和ipywidgets的交互式迷你应用程序,允许用户交互式地进行
实体整理;
图形可视化和分析;
从Nexus保存/加载数据集。
services
包
收集作为BlueGraph一部分的服务。目前,这个存储库仅包括一个用于检索嵌入向量和相似性计算的迷你服务(请参阅嵌入服务特定的README)。
安装
安装后端依赖项
如果您想使用graph-tool
作为后端,您需要手动安装该库(不能通过运行pip install
简单安装),因为它不是一个普通的Python库,而是围绕C++库的包装器(请参阅graph-tool安装说明)。目前,BlueGraph支持graph-tool<=2.37
。
同样,如果您想使用 bluegraph.downstream.similarity
模块来构建相似性索引(例如在嵌入式节点上),则需要单独安装 Facebook 的 Faiss
库。请参阅Faiss 安装说明(提供 conda
和 conda-forge
安装)。
您可以使用 conda
通过创建具有正确依赖项的新环境来安装 graph-tool
和 Facebook 的 Faiss
库,如下所示
conda create --name <your_environment> -c conda-forge graph-tool==2.37 faiss python=<your_python> conda activate <your_environment>
对于 Neo4j 后端,情况也是如此:为了使用它,数据库应该已安装并启动(请参阅Neo4j 安装说明)。通常,BlueGraph 提供的基于 Neo4j 的接口需要提供数据库 uri(bolt 端口)、用户名和密码。此外,BlueGraph 使用 Neo4j 图数据科学(GDS)库,该库应单独安装到您希望运行分析的数据库上(请参阅安装说明)。当前支持的 Neo4j GDS 版本是 >=1.6.1
。
安装 BlueGraph
BlueGraph 支持 Python 版本 >= 3.7 和 pip >= 21.0.1。要从旧版本更新 pip,请运行
pip install --upgrade pip wheel setuptools
您可以使用以下命令从 PyPI 安装 BlueGraph 的稳定版本
pip install bluegraph
您可以通过以下方式从源代码安装 BlueGraph 的开发版本
git clone https://github.com/BlueBrain/BlueGraph.git cd BlueGraph
仅包括 NetworkX 后端的基本版本可以使用以下方式安装
pip install bluegraph
使用 graph-tool
后端的使用前提在“安装后端依赖项”中可以找到。您还可以通过运行以下命令安装 Neo4j 和 StellarGraph 的附加后端
pip install bluegraph[<backend>]
其中 <backend>
有以下值之一:neo4j
或 stellargraph
。
或者,可以通过运行以下命令安装支持所有后端版本的版本
pip install bluegraph[all]
为了使用 cord19kg
包及其交互式 Jupyter 应用程序,请运行
pip install bluegraph[cord19kg]
入门
示例目录 包含一系列 Jupyter 笔记本,提供 BlueGraph 的教程和使用案例。
要开始使用 BlueGraph 提供的属性图数据结构 PGFrame
,请查看有关语义属性编码的示例,见PGFrames 和语义编码教程 笔记本。
为了熟悉 BlueGraph 提供的共现分析和图分析接口背后的理念,我们建议运行以下示例笔记本
文献探索(PGFrames + 内存分析教程) 说明了如何使用基于
NetworkX
和graph-tool
库的内存图后端的 BlueGraph 的分析 API。NASA 关键字(PGFrames + Neo4j 分析教程) 说明了如何使用基于 Neo4j 的分析 API 来处理持久属性图。
嵌入和下游任务教程 从共现图生成示例开始,指导用户通过图表示学习,以及包括节点相似性查询、节点分类和边预测在内的所有下游任务。
创建和运行嵌入管道 说明了如何使用 BlueGraph 构建 和执行嵌入管道。
最后,在 Nexus 中创建和推送嵌入管道.ipynb 说明了如何创建和推送嵌入管道到 Nexus,而 嵌入服务 API 展示了如何使用从 Nexus 获取嵌入管道的嵌入服务。
开始使用 cord19kg
cord19kg
包提供了 CORD-19 特定共现分析的 示例。请在此处查看有关 Blue Brain Project 的 CORD-19 分析和探索管道的更多详细信息:这里。
我们建议从 共现分析教程 笔记本开始,它提供了一个简单的入门示例。
CORD-19 的主题中心共现网络分析 笔记本提供了对通过查询 “Glucose is a risk factor for COVID-19”(搜索使用 BlueBrainSearch)从 CORD-19 数据集中获得的 3000 篇文章的完整分析管道。
CORD-19 的 Nexus 托管共现网络分析 笔记本提供了一个关于之前提到的 3000 篇文章数据集的示例,其中可以保存和从 Blue Brain Nexus 项目中加载与不同分析步骤相对应的数据集。
最后,generate_10000_network.py
脚本 允许用户生成从整个 CORD-19v47 数据库(基于论文级和段落级实体共现)提取的前 10,000 个最频繁实体的共现网络。要从示例文件夹中运行脚本,请简单执行 python generate_10000_network.py
。
请注意,生成的网络非常密集(包含大量边,例如,基于论文的网络有约 4400 万条边),其生成过程(即使并行化)也非常昂贵。
许可
Blue Graph 在 Apache 2 许可证下分发。
包含的示例脚本和笔记本(BlueGraph/examples 和 BlueGraph/cord19kg/examples)在 3-Clause BSD 许可证下分发。
存储在存储库中的数据文件在 Commons Attribution 4.0 国际许可证 (CC BY 4.0) 许可下分发。
资金与致谢
本项目的发展得到了瑞士联邦理工学院(EPFL)的研究中心 Blue Brain Project 的资助,该资助来自瑞士联邦政府的技术大学委员会。
版权 (c) 2020-2021 Blue Brain Project/EPFL