• 大小: 14KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: 其他
  • 标签: Neo4j  

资源简介

该代码创建了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.xml

     文件      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个文件信息

评论

共有 条评论