我正在尝试使用Java训练语言模型。这涉及读取文件,从文件中提取单词标记,以及获取文件中每个唯一单词标记的频率。
我创建了一个Java对象来保存每个单词及其频率,然后将所有单词和频率的对象保存在ArrayList中。当提取密切相关的单词(例如,那个,然后,十个等)时,我想首先用hiest频率得到单词。
到目前为止,我已经实现了上述功能,但是,每次查询都需要我的PC执行大约25分钟,因为对于每个查询,它必须读取文本文件,计算单词频率,将它们保存在ArrayList中,以及然后在数组中搜索所需的单词。我相信用字和相应的频率缓存ArrayList会大大减少我的程序运行所花费的时间。
但是,我想实现自己的纯Java对象缓存。我已经搜索了这个,但大多数缓存解决方案都引用了第三方实现,我非常希望避免这种情况。
任何人都可以帮助我了解如何创建纯Java对象缓存的详细信息和/或教程以及示例代码吗? 我的问题的任何其他建议的解决方案是非常受欢迎的。
由于
答案 0 :(得分:0)
你的基本方法应该是这样的:
Map<String,Integer> freqs = new HashMap<String,Integer>();
String[] words = inputString.split(" ");
for (String word: words) {
Integer count = freqs.get(word);
if (count == null) {
freqs.put(1);
}
else {
freqs.put(word,count + 1);
}
}
否则我肯定会看第三方图书馆。 ESP。如果你正在使用大型套装。