查找文本中最常见的词

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了查找文本中最常见的词相关的知识,希望对你有一定的参考价值。

我有一个问题,我不知道确切从哪里开始。给我多行文字,我必须找到最常用的单词,如果出现的单词与我要找的单词一样多,那么我必须显示最小的词典。我知道我应该使用“哈希图”,但是我不知道该如何开始。我试图写这个...

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Main{
public static void main(String[] args) throws Exception {
    String line, word = "";
    int count = 0, maxCount = 0;
    ArrayList<String> words = new ArrayList<String>();
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    while((line = br.readLine()) != null) {
        String string[] = line.toLowerCase().split("([,.\s]+) ");
        for(String s : string){
            words.add(s);
        }
    }
    for(int i = 0; i < words.size(); i++){
        count = 1;
        for(int j = i+1; j < words.size(); j++){
            if(words.get(i).equals(words.get(j))){
                count++;
            }
        }
        if(count > maxCount){
            maxCount = count;
            word = words.get(i);
        }
    }
    System.out.println(word);
}

}

答案

遍历所有单词

    创建HashMap<String, Integer>。字符串是关键,这将是您存储单词的地方。整数是值,它将存储单词的出现频率。
  1. 遍历单词时,将它们放入HashMap,如果该键(单词)已经存在,则用(当前值+ 1)替换该值。这将跟踪单词出现的次数。
  2. 当您遍历单词时,请遍历HashMap,记住当前已知的最大值以及与之配对的键。完成后,您将获得最大的收益。
另一答案
[HashMap可以包含一个唯一的单词,它是一个键,而它的频率是一个值。

Map<String, Integer> wordCounts = new HashMap<>();

您也不需要使用列表来包含您的单词。将它们直接放在地图上。

这里是一个例子:

String[] words = line.toLowerCase().split("([,.\s]+) "); for(String s: words){ //get a current frequency or set to be 0 if it doesn't exist. Integer freq = wordCounts.getOrDefault(s, 0); wordCounts.put(s, freq+1); }

以上是关于查找文本中最常见的词的主要内容,如果未能解决你的问题,请参考以下文章

txt文件中最常用的词

在SQLAlchemy中查找数组列中最常见的值

在 python 解释中查找列表中最常见的元素? [复制]

查找字符串数组中最常见的元素 GO

使用 sklearn_pandas 查找 k-means 聚类最重要的词

Java 中最常见的 5 个错误