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
等等….
我写了代码:
- 得到StemmedFolder ,统计独特的单词
- 按字母顺序排序
- 添加文档的ID
- 将每个保存到新文件00001.txt到01400.txt,如下所述
{我可以提供这4个部分的代码 ,以防有人需要了解实施或更改或任何编辑的方式}
每个文件的输出将产生一个单独的文件。 (1400,每个名为00001.txt , 00002.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
在上面的映射中,键将是单词,值将是List
对象,描述包含单词的单个文件的统计信息。 FileInformation
类可以声明如下:
class FileInformation { int occurrenceCount; String fileName; //getters and setters }
要填充上面的Map,请使用以下步骤:
- 读取
FrequencyFolder
每个文件 - 当你第一次看到一个单词时,把它作为
Map
一个键。 - 创建一个
FileInformation
对象并将occurrenceCount
设置为找到的出现次数,并将fileName
设置为找到的文件的名称。在与步骤2中创建的密钥对应的List
添加此对象。 - 下次在另一个文件中遇到相同的单词时,创建一个新的
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 } }