Hashmap单键持有一个类。 计算密钥并检索计数器

我正在开发一个数据库自我项目。 我有一个输入文件来自: http : //ir.dcs.gla.ac.uk/resources/test_collections/cran/

在处理成1400个单独的文件后,每个文件名为00001.txt ,… 01400.txt …)并在对它们应用Stemming之后,我将它们分别存储在特定文件夹中,让我们用以下格式调用它: StemmedFolder

StemmedFolder中: 00001.txt包括:

investig aerodynam wing slipstream brenckman experiment investig aerodynam wing 

StemmedFolder中: 00756.txt包括:

 remark eddi viscos compress mix flow lu ting 

等等….

我写了代码:

  1. 得到StemmedFolder ,统计独特的单词
  2. 按字母顺序排序
  3. 添加文档的ID
  4. 将每个保存到新文件00001.txt到01400.txt,如下所述

{我可以提供这4个部分的代码 ,以防有人需要了解实施或更改或任何编辑的方式}


每个文件的输出将产生一个单独的文件。 (1400,每个名为00001.txt00002.txt …)在特定文件夹中,我们可以使用以下格式调用它FrequenceyFolder

FrequenceyFolder: 00001.txt中包括:

 00001,aerodynam,2 00001,agre,3 00001,angl,1 00001,attack,7 00001,basi,4 .... 

FrequenceyFolder: 00999.txt包括:

 00999,aerodynam,5 00999,evalu,1 00999,lift,3 00999,ratio,2 00999,result,9 .... 

FrequenceyFolder: 01400.txt包括:

 01400,subtract,1 01400,support,1 01400,theoret,1 01400,theori,1 01400,..... 

______________

现在我的问题

我需要再次组合这些1400个文件来输出一个看起来像这种格式的txt文件并进行一些计算:

 'aerodynam' totalFrequency=3docs: [[Doc_00001,5],[Doc_01344,4],[Doc_00123,3]] 'book' totalFrequncy=2docs: [[Doc_00562,6],[Doc_01111,1] .... .... 'result' totalFrequency=1doc: [[Doc_00010,5]] .... .... 'zzzz' totalFrequency=1doc: [[Doc_01235,1]] 

感谢您花时间阅读这篇长篇文章

您可以使用List Map

Map> statistics = new HashMap<>()

在上面的映射中,键将是单词,值将是List对象,描述包含单词的单个文件的统计信息。 FileInformation类可以声明如下:

 class FileInformation { int occurrenceCount; String fileName; //getters and setters } 

要填充上面的Map,请使用以下步骤:

  1. 读取FrequencyFolder每个文件
  2. 当你第一次看到一个单词时,把它作为Map一个键。
  3. 创建一个FileInformation对象并将occurrenceCount设置为找到的出现次数,并将fileName设置为找到的文件的名称。在与步骤2中创建的密钥对应的List添加此对象。
  4. 下次在另一个文件中遇到相同的单词时,创建一个新的FileInfomation对象并将其添加到List中,该单词对应于该单词的地图中的条目。

一旦填充了Map ,打印统计数据应该是小菜一碟。

 for(String word : statistics.keySet()) { List fileInfos = statistics.get(word); for(FileInformation fileInfo : fileInfos) { //sum up the occureneceCount for the word to get the total frequency } }