资源简介
该代码创建了Neo4j数据库,用于存储作者和会议节点及他们之间的关系,并在元路径ACA上,通过PathSim算法计算与某个作者最为相似的K个作者。
代码片段和文件信息
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.List;
import java.util.Map;
import java.util.Map.Entry;
import org.neo4j.graphdb.DynamicRelationshipType;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.ResourceIterable;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;
public class Main {
//作者集合
private static HashMap authorMap = null;
//作者的数量
private static int authorSize = 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/ac.graphdb/“);
//创建Neo4j数据库
createGraphDB(db);
//获取与作者Mike最相似的5个作者
List> list = getTopKSimilarAuthor(db“Mike“9);
//遍历输出k个作者
for (Map.Entry mapping : list) {
System.out.println(mapping.getKey() + “:“ + mapping.getValue());
}
}
/**
* 获取与作者authorName最为相似的前topk个作者
* @param db
* @param authorName
* @param k
* @return
*/
public static List> getTopKSimilarAuthor(GraphDatabaseService dbString authorNameint k){
List> resultList = null;
//获得源作者Mike的会议集合
Map confForOrginAuthorMap = getConfMapOfOneAuthor(dbauthorName);
//计算Wac,即作者Mike在各个会议上面发表的论文数
int[] orginMatrix = getMatrix(confForOrginAuthorMap);
//定义相似作者集合
Map SimilarAuthorMap = new HashMap();
//遍历作者集合
for(Map.Entry entry:authorMap.entrySet()){
//获得该作者的会议集合
Map confForTargetAuthorMap = getConfMapOfOneAuthor(dbentry.getValue());
//计算Wac,即该作者在各个会议上面发表的论文数
int[] targetMatrix = getMatrix(confForTargetAuthorMap);
//计算源作者与该作者的相似性
float similarity = pathSim(orginMatrixtargetMatrix);
//将作者的名字和相似性得分作为key-value存入相似作者集合
SimilarAuthorMap.put(entry.getValue() similarity);
System.out.println(“作者“+entry.getValue()+“与Mike相似性为“+similarity);
}
List> list = sortMap(SimilarAuthorMap);
//取集合中前k个值
resultList = list.subList(1 k+1);
return resultList;
}
/**
* Map集合降序排序
* @param map
* @return
*/
public static List> sortMap(Map map){
List> list = new ArrayList>(map.entrySet());
Collections.sort(list new Comparator>() {
//降序排序
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 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
文件 79 2018-01-05 18:59 Neo4jDemo\data\author.txt
文件 737 2018-01-05 21:28 Neo4jDemo\data\author_conf.txt
文件 31 2018-01-05 19:05 Neo4jDemo\data\conf.txt
文件 908 2018-01-06 11:26 Neo4jDemo\pom.xm
文件 10233 2018-01-07 10:49 Neo4jDemo\src\main\java\Neo4j\Neo4jDemo\Main.java
文件 208 2018-01-06 11:31 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-07 10:49 Neo4jDemo\target\classes\Neo4j\Neo4jDemo\Main$1.class
文件 11308 2018-01-07 10:49 Neo4jDemo\target\classes\Neo4j\Neo4jDemo\Main.class
文件 1050 2018-01-06 13:45 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-06 13:47 Neo4jDemo\data
............此处省略6个文件信息
评论
共有 条评论