繁体   English   中英

如何计算java中的单词

[英]How to count words in java

我正在寻找可以解决我的以下问题的算法,提示或任何源代码。

我有一个文件夹,它包含许多文本文件。 我读了它们并将所有文本存储在STRING中。 现在我想计算,如果任何单词出现在其他文件中或没有。 (我知道不清楚让我举个例子)

例如我有两个文件:Doc A =>“brown fox jump”Doc B =>“dog not jump”Doc C =>“狐狸跳狗”

让我们说我的程序读了第一个文件,现在第一个单词是“棕色”,现在我的程序将检查这个单词是否也出现在任何其他文件中? 所以答案是0.现在它将再次检查第二个单词“fox”,它将给出输出,它出现在(Doc C)中......现在它将读取Doc B并且它将检查如果狗出现在其他文件中? 答案是(Doc C)等......

任何建议或伪代码?

提示:它也称为逆文档频率(Idf)。 我知道什么是idf。

像GregS所说,使用HashMap。 我没有发布任何代码,因为我认为这是一个功课,我想给你机会自己创建它,但大纲是:

  1. 打开新文档
  2. 对于每个单词,如果已经存在,请查看您的hashmap。 如果不是,请使用此单词在HashMap中创建一个新密钥,并在该位置添加新文档(文件名)。 如果是,只需添加文档的文件名即可。

例如,如果你有:DocA:布朗狐狸跳DocB:Fox跳狗

您将打开DocA并遍历其内容。 'brown'不在您的hashmap中,因此您将添加一个键为'brown'且值为'DocA'的新元素。 与“狐狸”和“跳跃”相同。 然后你会打开DocB。 'fox'已经在你的hashmap中了,所以你要添加它的值DocB(值为'DocA DocB')。 也许使用ArrayList(在Java中)会有所帮助。

提示:HashMap将字符串映射到文件列表。

考虑到“我对所有文档一起使用这组单词”“我可以以某种方式存储每个单词出现在哪个 文档中” ,这可能会有所帮助。 鉴于您的数据的这种表示,很容易确定给定的单词是否出现在多个文档中。 关于如何做到这一点,其他人在这里提供了提示。

只是另一个想法不同然后所有有价值的答案,我承认哈希看起来更好,我只是想从另一个角度看待它。

我会对每个文档中的所有单词进行排序,并将每个文档相互比较。

例如docA> brown,fox,jump; docB-> doc,jump,not docC-> dog,fox,jump

比较他们是这样的

until there is a single document with words
   get first element of documents
   compare the most descending first element if that element exists more than once reserve it
   throw the one that is the most descending (in my case)

所以在第一次比较中

docA - > fox,jump docB - > doc,jump,not docC - > dog,fox,jump

在第二次比较中

docA - > fox,jump docB - > jump,not docC - > dog,fox

在第三次比较中

docA - > fox,jump docB - > jump,not docC - > fox,jump

在第四场比赛中保留狐狸,在第五场比赛中保留跳投。

此代码将所有不同的单词作为键返回,并计为句子中找到的每个单词的值。 只需从文件或命令提示符创建一个String对象作为输入,并在下面的方法中传递它。

public Map<String,Integer> getWordsWithCount(String sentances)
{
    Map<String,Integer> wordsWithCount = new HashMap<String, Integer>();

    String[] words = sentances.split(" ");
    for (String word : words)
    {
        if(wordsWithCount.containsKey(word))
        {
            wordsWithCount.put(word, wordsWithCount.get(word)+1);
        }
        else
        {
            wordsWithCount.put(word, 1);
        }

    }

    return wordsWithCount;

}

HashMap将字符串映射到整数。 整数是不可变的,因此有一些“增量”的喧嚣,但不是太多。 你可以覆盖put()方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM