Hashmap单键保存一个类.计算密钥和检索计数器



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

处理成1400个独立文件后,每个文件命名为00001.txt,…01400.txt…),在应用词干之后,我将它们分别存储在一个特定的文件夹中,我们将其命名为StemmedFolder,格式如下:

在<<p> strong> StemmedFolder: 00001. txt包括:
investig
aerodynam
wing
slipstream
brenckman
experiment
investig
aerodynam
wing

in StemmedFolder: 00756.txt包括:

remark
eddi
viscos
compress
mix
flow
lu
ting

等等....

我写了这样的代码:

  1. 获取StemmedFolder, Count the Unique words
  2. 按字母顺序排序
  3. 添加文件ID
  4. 将每个保存到新文件00001.txt到01400.txt,如下所述

{我可以提供我的代码为这4部分,以防有人需要看到如何实现或更改或任何编辑}


每个文件的

输出将被输出到一个单独的文件。(1400,每个命名为00001.txt00002.txt…)在一个特定的文件夹中,我们将其命名为FrequenceyFolder,格式如下:

in FrequenceyFolder: 00001.txt包括:

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

in FrequenceyFolder: 00999.txt包括:

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

in 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]]

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

您可以使用ListMap

Map<String,List<FileInformation>> statistics = new HashMap<>()

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

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

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新