一尘不染

如何在Java中计算单词

algorithm

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

我有一个文件夹,其中包含许多文本文件。我阅读了所有内容并将其存储在STRING中。现在,我想计算一下是否有其他单词出现在其他文件中。(我知道不清楚,让我举个例子)

例如,我有两个文档:Doc A =>“棕狐跳” Doc B =>“狗不跳” Doc C =>“ fox跳狗”

假设我的程序读取了第一个文档,而第一个单词是“棕色”,那么我的程序将检查该单词是否也出现在其他文档中吗?因此答案将为0。现在它将再次检查第二个单词“
fox”,它将给出输出,结果是出现在(Doc C)中,依此类推……现在,它将读取Doc B并进行检查狗是否出现在其他文件中?答案是(Doc C),依此类推。

有什么建议或伪代码吗?

提示:也称为反向文档频率(Idf)。我知道什么是IDF。


阅读 284

收藏
2020-07-28

共1个答案

一尘不染

就像GregS所说的那样,使用HashMap。我没有发布任何代码,因为我认为这是一项作业,并且我想给您机会自己创建它,但是提纲是:

  1. 打开新文件
  2. 对于每个单词,请查看您的哈希图(如果已经存在)。如果不是,请使用此单词在HashMap中创建一个新键,然后在该位置添加新文档(文件名)。如果是这样,只需添加文档的文件名。

例如,如果您有:DocA:棕色狐狸跳DocB:狐狸跳狗

您将打开DocA并遍历其内容。“棕色”不在哈希图中,因此您将添加一个新元素,其键为“棕色”,值为“ DocA”。“ fox”和“
jump”相同。然后,您将打开DocB。’fox’已经在您的哈希图中,因此您需要在其值DocB中添加(该值将为’DocA
DocB’)。也许使用ArrayList(在Java中)会有所帮助。

2020-07-28