如何计算数据集中每个标签的推文数量,然后按标签拆分数据(java)?

How to count the number of tweets for each label in the dataset and then split data by labels (java)?

这是我的代码,它将数据拆分成句子。每个句子都标有情感。我需要计算每个标签(情感)的句子数量,并根据标签拆分数据集。

public class DataProcessor {

    public static void main(String[] args) throws FileNotFoundException {
        try (Scanner read = new Scanner (new File("E:\blabla.txt"))) {
            read.useDelimiter("::");
            String tweet;
            while(read.hasNext())
            {
                tweet = read.next();            
                System.out.println(tweet + " "+ "\n"); //just for debugging
            }
        }
    }
}

输出看起来像这样

喜悦: 今天考试了但我还是很好

public static void main(String[] args) throws FileNotFoundException {
    HashMap<String, List<String>> map = new HashMap<>();
    try (Scanner read = new Scanner (new File("E:\blabla.txt"))) {
        read.useDelimiter("::");
        String tweet;
        while(read.hasNext())
        {
            tweet = read.next();
            String[] split = tweet.split(":");
            String key = split[0];
            if (!map.containsKey(key)) {
                map.put(key, new ArrayList<>());
            }
            map.get(key).add(split[1]);
        }
    }
}    

map 包含了所有带有句子的情绪。要获得句子的数量,我们称它们为推文,因为有时它们包含多个句子,您可以使用 map.get("joy").size().

如果推文也可以包含:我会把tweet.split(":");改成tweet.split(":", 2);这样只用第一个分隔符来分割

要检查结果 map 您可以使用此代码:

map.forEach((e, t) -> {
    System.out.println(e);
    t.forEach(System.out::println);
} );