gpt4 book ai didi

java - 使用 Java 从文件中查找 'n' 最频繁的单词?

转载 作者:行者123 更新时间:2023-11-29 07:33:43 24 4
gpt4 key购买 nike

我想读取一个文件,并希望根据词频收集前n个词。

我尝试了以下代码来计算字符串中的每个单词。

public static void main(String[] args) throws FileNotFoundException, IOException {
FileReader fr = new FileReader("txtFile.txt");
BufferedReader br = new BufferedReader(fr);
String text = "";
String sz = null;
while ((sz = br.readLine()) != null) {
text = text.concat(sz);
}
String[] words = text.split(" ");
String[] uniqueLabels;
int count = 0;
System.out.println(text);
uniqueLabels = getLabels(words);

for (String l: uniqueLabels) {
if ("".equals(l) || null == l) {
break;
}
for (String s: words) {
if (l.equals(s)) {
count++;
}
}
System.out.println("Word :: " + l + " Count :: " + count);
count = 0;
}
}

并且我使用以下代码收集唯一的 lbels(words) get if from link ,

private static String[] getLabels(String[] keys) {
String[] uniqueKeys = new String[keys.length];

uniqueKeys[0] = keys[0];
int uniqueKeyIndex = 1;
boolean keyAlreadyExists = false;

for (int i = 1; i < keys.length; i++) {
for (int j = 0; j <= uniqueKeyIndex; j++) {
if (keys[i].equals(uniqueKeys[j])) {
keyAlreadyExists = true;
}
}

if (!keyAlreadyExists) {
uniqueKeys[uniqueKeyIndex] = keys[i];
uniqueKeyIndex++;
}
keyAlreadyExists = false;
}
return uniqueKeys;
}

这很好用,我想收集排名前 10 位的单词,这取决于它在文件中的出现频率。

最佳答案

首先,如果您希望它运行得比较快,请不要遍历数组中的所有字符串...使用 HashMap...或者甚至为基元查找一些映射。

然后通过单词。如果单词在 map 中,则增加值,否则放 1。最后,对映射条目进行排序并获取前 10 个。

不是完全重复,但这个答案几乎展示了如何完成计数:Calculating frequency of each word in a sentence in java

关于java - 使用 Java 从文件中查找 'n' 最频繁的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38653583/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com