NEO4J 案例 1 - 科研导图

523 阅读7分钟

本文将基于互联网上中国知网和万方网站公开可获取的论文作者、论文题目、作者单位、论文关键词、论文摘要、论文参考文献等数据,构建学术科研导图应用平台。该平台可以实现以下功能:

  • 构建科研社交网络:科研人员可以通过科研成果的关键词进行归类,并形成科研人员的网络关系。此时,关键词是科研人员的属性。
  • 专家推荐:根据科研成果数据,通过Neo4j的计算获得某个领域专家的实力排名。
  • 文献快速搜索和整理:通过Neo4j可以快速实现相关文献的快速搜索并以图的形式展示,而不仅仅是科研成果的简单列表,这有利于整理文献综述,而且不会出现把重要文献漏掉的情况。
  • 合作关系图谱:利用Neo4j可以很方便计算任意两个单位之间的合作程度,或任意两位科研人员之间的合作程度。

1 专家推荐

需求描述。在科研人员搜索某个研究领域的文献或查找该领域相关专家的时候, 快速而准确地给出该领域有重要影响力的专家, 将会极大方便科研人员掌握该领域目前的研究状况。查找权威专家的传统方法是根据专家作品的影响力来决定, 也就是基于统计的方法, 这个方法简单而且适用范围比较广, 但是却忽略了专家之间的关系, 也就是专家之的合作网络。

如果用图数据库来存储这些数据就可以有效地解决这样的问题。利用图数据库不仅可以通过专家的作品影响力来推荐,还可以利用专家在图中的位置以及位置的重要性来推荐。通过求出每个专家在图中的介数中心性( Betweenness Centrality)、紧密度中心性( Closeness Centrality)、度中心性( Degree Centrality)和特征向量中心性( Page Rank Centrality),然后就可以根据不同的需求推荐合适的专家,如下图所示。

2 创建科研导图示范案例

2.1 功能

描述研究人员、论文、关键词、学术期刊等之间的关系。

2.2 执行程序

CREATE
(张教授:研究人员{姓名:"张教授"}),
(李老师:研究人员{姓名:"李老师"}),
(王老师:研究人员{姓名:"王老师"}),
(论文1:论文{论文名:"论文1"}),
(论文2:论文{论文名:"论文2"}),
(论文3:论文{论文名:"论文3"}),
(论文4:论文{论文名:"论文4"}),
(论文5:论文{论文名:"论文5"}),
(论文6:论文{论文名:"论文6"}),
(论文7:论文{论文名:"论文7"}),
(论文8:论文{论文名:"论文8"}),
(学术期刊1:期刊{刊名:"学术期刊1"}),
(学术期刊2:期刊{刊名:"学术期刊2"}),
(学术期刊3:期刊{刊名:"学术期刊3"}),
(关键词1_1:关键词{词名:"关键词1_1"}),
(关键词1_2:关键词{词名:"关键词1_2"}),
(关键词1_3:关键词{词名:"关键词1_3"}),
(关键词2_1:关键词{词名:"关键词2_1"}),
(关键词2_2:关键词{词名:"关键词2_2"}),
(关键词2_3:关键词{词名:"关键词2_3"}),
(关键词3_1:关键词{词名:"关键词3_1"}),
(关键词3_2:关键词{词名:"关键词3_2"}),
(关键词3_3:关键词{词名:"关键词3_3"}),
(张教授)-[:作者]->(论文1),
(张教授)-[:作者]->(论文2),
(张教授)-[:作者]->(论文3),
(张教授)-[:作者]->(论文4),
(张教授)-[:作者]->(论文5),
(张教授)-[:作者]->(论文6),
(张教授)-[:作者]->(论文7),
(张教授)-[:作者]->(论文8),
(李老师)-[:作者]->(论文1),
(李老师)-[:作者]->(论文2),
(王老师)-[:作者]->(论文5),
(王老师)-[:作者]->(论文6),
(论文1)-[:发表]->(学术期刊1),
(论文2)-[:发表]->(学术期刊1),
(论文3)-[:发表]->(学术期刊1),
(论文4)-[:发表]->(学术期刊2),
(论文5)-[:发表]->(学术期刊2),
(论文6)-[:发表]->(学术期刊2),
(论文7)-[:发表]->(学术期刊3),
(论文8)-[:发表]->(学术期刊3),
(论文1)-[:关键词]->(关键词1_1),
(论文1)-[:关键词]->(关键词1_2),
(论文1)-[:关键词]->(关键词1_3),
(论文2)-[:关键词]->(关键词2_1),
(论文2)-[:关键词]->(关键词2_2),
(论文2)-[:关键词]->(关键词2_3),
(论文3)-[:关键词]->(关键词2_3),
(论文4)-[:关键词]->(关键词1_2),
(论文5)-[:关键词]->(关键词3_1),
(论文5)-[:关键词]->(关键词3_2),
(论文5)-[:关键词]->(关键词3_3),
(论文6)-[:关键词]->(关键词2_1),
(论文7)-[:关键词]->(关键词3_1),
(论文8)-[:关键词]->(关键词3_2)
RETURN *

2.3 执行结果

2.4 汇总计算三位作者所发表的文章数量

MATCH (p:研究人员)-[a:作者]->()
RETURN p.姓名 AS 作者姓名, COUNT(a) AS 发表论文数

3 文献搜索

3.1 需求描述

科研文献检索是每个科研工作者在日常科研工作中常常要面临的问题, 但是现存的检索系统往往采用的是全文检索, 全文检索的好处是精确度较高, 可是也存在着效率较低, 并且可靠性关联度不高的问题。

如果使用Neo4j进行检索, 不仅可以快速地检索出匹配度最高的论文, 还可以把关联度较高的论文也一同检索出来, 极大地丰富了检索内容的多样性。

首先利用全文检索出最相似的论文, 再根据查找出来的论文寻找与它具有“相似”关系的论文即为相似论文。确立目标论文, 然后通过计算找到相似的论文, 建立相似关系, 用Neo4j把这种相似性表达出来。

3.2 功能

创建相似论文图谱

3.3 执行程序

CREATE
(论文1:论文图谱{论文名:"论文1"}),
(论文2:论文图谱{论文名:"论文2"}),
(论文3:论文图谱{论文名:"论文3"}),
(论文4:论文图谱{论文名:"论文4"}),
(论文5:论文图谱{论文名:"论文5"}),
(论文6:论文图谱{论文名:"论文6"}),
(论文7:论文图谱{论文名:"论文7"}),
(论文1)-[:相似]->(论文2),
(论文1)-[:相似]->(论文3),
(论文2)-[:相似]->(论文4),
(论文2)-[:相似]->(论文5),
(论文3)-[:相似]->(论文5),
(论文5)-[:相似]->(论文6),
(论文7)-[:相似]->(论文2),
(论文7)-[:相似]->(论文6)
RETURN *

3.4 执行结果

3.5 找出论文1与论文6这两篇论文之间相似传递的路径

MATCH n = allshortestPaths((论文1:论文图谱{论文名:"论文1"})-[*..6]->(论文6:论文图谱{论文名:"论文6"}))
RETURN n

4 科研合作图谱

4.1 需求描述

在科研导图的分析中还有一个重要的工作, 那就是研究不同科研人员之间的合作和不同科研机构之间的合作。当某个科研人员或者是某个科研机构有意向寻找合作伙伴时, 合作图谱可以起到较大的辅助作用, 科研合作示意如下图所示。

假设作者1想和作者5进行合作,那么首先查找作者1和作者5之间的最短路径,可以找到两条最短路径为作者1->作者2->作者5 和 作者1->作者3->作者5,其次通过作者3或作者2的介绍可以让作者1和作者5能够相互认识。

4.2 功能

创建科研合作图谱

4.3 执行程序

CREATE
(作者1:论文作者{作者名:"作者1"}),
(作者2:论文作者{作者名:"作者2"}),
(作者3:论文作者{作者名:"作者3"}),
(作者4:论文作者{作者名:"作者4"}),
(作者5:论文作者{作者名:"作者5"}),
(作者6:论文作者{作者名:"作者6"}),
(作者1)-[:论文合作]->(作者2),
(作者1)-[:论文合作]->(作者3),
(作者2)-[:论文合作]->(作者4),
(作者2)-[:论文合作]->(作者5),
(作者3)-[:论文合作]->(作者5),
(作者5)-[:论文合作]->(作者6)
RETURN *

4.4 执行结果

4.5 查找两位作者的最短路径

MATCH n = allshortestPaths((作者1:论文作者{作者名:"作者1"})-[*..6]->(作者5:论文作者{作者名:"作者5"}))
RETURN n

参考资料:Neo4j权威指南,清华大学出版社