Java 如何根据单词的不同形式统计单词的出现次数单词的不同形式

Java 如何根据单词的不同形式统计单词的出现次数单词的不同形式

我已经写了一段,怎么修改

   public static void main(String [] sgrs){
       /**
        * 如:"1王235868asda17394利3@@89我0我2342";统计出每个字符出现的次数。
        */
       String str="1王235868asda17394利3@@89我0我2342";
       int[] count=new int[str.length()];//每个字符出现的次数
       String b=new String();//存储去除重复之后的字符串
       for(int i=0;i<str.length();i++){
            if(!b.contains(String.valueOf(str.charAt(i)))){
                b+=String.valueOf(str.charAt(i));
            }
            else{
                for(int j=0;j<b.length();j++){
                        if(str.charAt(i)==b.charAt(j)){
                            count[j]++;
                    }
                }
            }
        }
       System.out.println("原字符串str:");
       System.out.println(str);
       //System.out.println(b);
       for(int i=0;i<b.length();i++){
            System.out.println(b.charAt(i)+":出现的次数:"+(count[i]+1));
       }
   }


基于Monster 组和GPT的调写:

  • 这个代码的主要问题是,它并不是根据单词来统计,而是根据字符来统计。并且它没有处理单词的不同形式(例如,“run”和“running”应被视为相同的词根)。如果你希望根据单词来统计,且能够处理单词的不同形式,那么要做一些修改。
  • 首先,你需要一个文本处理库来处理单词的不同形式。这个库可以是自己编写的,也可以是第三方的。其中,Stanford NLP是一个常用的Java文本处理库,可以帮助我们对单词进行词干提取,将不同形式的单词转化为同一形式。不过这个库的使用需要一些NLP(自然语言处理)的基础知识。

另外,要将字符串按照空格分割成单词,然后对每个单词进行处理。

以下是一个基础的例子,该例子将根据空格来分割单词,并使用HashMap来统计每个单词的数量。这个例子并没有处理单词的不同形式,但是给出了基础的框架,你可以在此基础上添加词干提取的功能。

import java.util.HashMap;
import java.util.Map;

public class WordCount {
    public static void main(String[] args) {
        String str = "I am a student. He is a student. She is also a student.";
        str = str.toLowerCase().replaceAll("[^a-z ]", ""); // 将非字母和非空格的字符替换为空
        String[] words = str.split(" "); // 按空格分割字符串
        Map<String, Integer> wordCount = new HashMap<>();
        for (String word : words) {
            wordCount.put(word, wordCount.getOrDefault(word, 0) + 1); // 计算每个单词的数量
        }
        for (Map.Entry<String, Integer> entry : wordCount.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}

在这个例子中,用了Java的HashMap数据结构,这个数据结构可以快速地查找和插入元素。对于每个单词,将其数量存储在HashMap中,如果这个单词在HashMap中不存在,那么将其数量设为1,否则将其数量加1。