示例#1
0
  private static void getStatistics(String dataset, boolean writeAll) {
    if (TOPIC_NAME != null) {
      dataset += ("_" + TOPIC_NAME);
    }
    BookmarkReader reader = new BookmarkReader(0, false);
    reader.readFile(dataset);

    int bookmarks = reader.getBookmarks().size();
    System.out.println("Posts: " + bookmarks);
    int users = reader.getUsers().size();
    System.out.println("Users: " + users);
    int resources = reader.getResources().size();
    System.out.println("Resources: " + resources);
    int tags = reader.getTags().size();
    System.out.println("Tags: " + tags);
    int tagAssignments = reader.getTagAssignmentsCount();
    System.out.println("Tag-Assignments: " + tagAssignments);
    int categories = reader.getCategories().size();
    System.out.println("Topics: " + categories);
    double avgTASPerPost = (double) tagAssignments / bookmarks;
    System.out.println("Avg. TAS per post: " + avgTASPerPost);
    double avgBookmarksPerUser = (double) bookmarks / users;
    System.out.println("Avg. resources/posts per user: "******"Avg. users/posts per resource: " + avgBookmarksPerResource);

    if (writeAll) {
      try {
        getTrainTestSize(dataset);
        FileWriter userWriter =
            new FileWriter(new File("./data/metrics/" + dataset + "_userStats.txt"));
        BufferedWriter userBW = new BufferedWriter(userWriter);
        userBW.write("UserID| NoOfResources| NoOfTopics| Topic-Similarity\n");
        List<Bookmark> trainList = reader.getBookmarks().subList(0, TRAIN_SIZE);
        List<Integer> testUsers = reader.getUniqueUserListFromTestSet(TRAIN_SIZE);
        System.out.println();

        double avgTopicsPerUser = 0.0;
        double avgTopicDiversityPerUser = 0.0;
        List<Map<Integer, Double>> userTopics = Utilities.getRelativeTopicMaps(trainList, false);
        List<List<Bookmark>> userBookmarks = Utilities.getBookmarks(trainList, false);
        for (int userID : testUsers) {
          Map<Integer, Double> topicsOfUser = userTopics.get(userID);
          double topicDiversityOfUser = Bookmark.getBookmarkDiversity(userBookmarks.get(userID));
          userBW.write(
              userID
                  + "| "
                  + reader.getUserCounts().get(userID)
                  + "| "
                  + topicsOfUser.keySet().size()
                  + "| "
                  + topicDiversityOfUser
                  + "\n");
          avgTopicsPerUser += topicsOfUser.keySet().size();
          avgTopicDiversityPerUser += topicDiversityOfUser;
        }
        System.out.println("Avg. topics per user: "******"Avg. topic-similarity per user: "******"Avg. topics per resource: " + avgTopicsPerResource);
        userBW.flush();
        userBW.close();
      } catch (IOException e) {
        System.out.println(e.getMessage());
      }
    }

    System.out.println();
  }