资源简介
本java代码实现了将部分DBLP数据添加到Neo4j图数据库中构成网络,并实现了用PathSim算法获得与某个作者最为相似的TopK 个作者
代码片段和文件信息
package Neo4j.Neo4jDemo;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.neo4j.graphdb.Direction;
import org.neo4j.graphdb.DynamicRelationshipType;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Path;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.RelationshipType;
import org.neo4j.graphdb.ResourceIterable;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;
import org.neo4j.graphdb.traversal.Evaluator;
import org.neo4j.graphdb.traversal.Evaluators;
import org.neo4j.graphdb.traversal.TraversalDescription;
import org.neo4j.graphdb.traversal.Traverser;
import org.neo4j.graphdb.traversal.Uniqueness;
import org.neo4j.graphdb.traversal.UniquenessFactory;
import org.neo4j.kernel.Traversal;
public class Main {
//作者集合
private static HashMap authorMap = null;
//作者的数量
private static int authorSize = 0;
private static int relativeAuthorSize = 0;
private static HashMap confMap = null;
//会议的数量
private static int confSize = 0;
public static void main(String args[]){
//定义Neo4j数据库,文件夹命名为ac.graphdb,后缀不能舍弃,否则neo4j community找不到数据位置
GraphDatabaseService db = new GraphDatabaseFactory().newembeddedDatabase(“D:/Neo4jDB/dblp.graphdb/“);
//创建Neo4j数据库
createGraphDB(db);
long authorNodeId = getAuthorNodeIdByName(db “Christos Faloutsos“);
List> list = calTopKSimilarity(dbauthorNodeId10);
for (Map.Entry mapping : list) {
System.out.println(mapping.getKey() + “:“ + mapping.getValue());
}
}
/**
* 计算与源作者最为相似的前K个作者
* @param db
* @param authorNodeId
* @param k
* @return
*/
public static List> calTopKSimilarity(GraphDatabaseService dblong authorNodeIdint k){
Map AuthorSimilarMap = new HashMap();
Map confsForA = getConfsForAuthor(dbauthorNodeId);
//获得ACA元路径下相关的作者 NodeId和姓名
Map relativeAuthorMap = getDep2ForAuthor(dbauthorNodeId);
for (Map.Entry author : relativeAuthorMap.entrySet()) {
//获得相关作者的发表会议信息
Map confsForB = getConfsForAuthor(dbauthor.getKey());
float similarity = calPathSim(confsForAconfsForB);
AuthorSimilarMap.put(author.getValue() similarity);
}
List> list = sortMap(AuthorSimilarMap);
if(k>relativeAuthorSize){
k=relativeAuthorSize;
}
return list.subList(0 k);
}
/**
* 根据作者名称找到图数据库中作者节点的ID
* @param db
* @param
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 791 2018-01-06 13:45 Neo4jDemo\.classpath
文件 561 2018-01-06 11:21 Neo4jDemo\.project
文件 88 2018-01-06 11:24 Neo4jDemo\.settings\org.eclipse.core.resources.prefs
文件 664 2018-01-06 13:45 Neo4jDemo\.settings\org.eclipse.jdt.core.prefs
文件 90 2018-01-06 11:21 Neo4jDemo\.settings\org.eclipse.m2e.core.prefs
文件 1373018 2017-05-20 14:34 Neo4jDemo\data\author.txt
文件 2349080 2017-05-18 21:42 Neo4jDemo\data\author_conf.txt
文件 11485 2017-05-20 14:34 Neo4jDemo\data\conf.txt
文件 908 2018-01-06 11:26 Neo4jDemo\pom.xm
文件 11962 2018-01-08 19:22 Neo4jDemo\src\main\java\Neo4j\Neo4jDemo\Main.java
文件 209 2018-01-07 18:47 Neo4jDemo\src\main\java\Neo4j\Neo4jDemo\Relationships.java
文件 222 2018-01-07 09:54 Neo4jDemo\src\main\java\Neo4j\Neo4jDemo\Type.java
文件 1279 2018-01-08 19:22 Neo4jDemo\target\classes\Neo4j\Neo4jDemo\Main$1.class
文件 14017 2018-01-08 19:22 Neo4jDemo\target\classes\Neo4j\Neo4jDemo\Main.class
文件 1051 2018-01-07 18:47 Neo4jDemo\target\classes\Neo4j\Neo4jDemo\Relationships.class
文件 1018 2018-01-07 09:54 Neo4jDemo\target\classes\Neo4j\Neo4jDemo\Type.class
文件 617 2018-01-06 11:21 Neo4jDemo\target\test-classes\Neo4j\Neo4jDemo\AppTest.class
目录 0 2018-01-06 17:16 Neo4jDemo\src\main\java\Neo4j\Neo4jDemo
目录 0 2018-01-06 11:21 Neo4jDemo\src\main\java\Neo4j
目录 0 2018-01-06 20:34 Neo4jDemo\target\classes\Neo4j\Neo4jDemo
目录 0 2018-01-06 11:21 Neo4jDemo\target\test-classes\Neo4j\Neo4jDemo
目录 0 2018-01-06 11:21 Neo4jDemo\src\main\java
目录 0 2018-01-06 13:45 Neo4jDemo\target\classes\Neo4j
目录 0 2018-01-06 11:21 Neo4jDemo\target\test-classes\Neo4j
目录 0 2018-01-06 11:21 Neo4jDemo\src\main
目录 0 2018-01-06 11:24 Neo4jDemo\src\test
目录 0 2018-01-06 13:45 Neo4jDemo\target\classes
目录 0 2018-01-06 11:21 Neo4jDemo\target\test-classes
目录 0 2018-01-06 11:21 Neo4jDemo\.settings
目录 0 2018-01-07 16:26 Neo4jDemo\data
............此处省略6个文件信息
评论
共有 条评论