private void writeNGramFile(ConditionalFrequencyDistribution<Integer, String> cfd, int level) throws IOException { FrequencyDistribution<String> letterFD = letterFDs.get(level); BufferedWriter writer = ngramWriters.get(level); for (String key : cfd.getFrequencyDistribution(level).getKeys()) { // add starting letter to frequency distribution if (key.length() > 1) { String subsKey = key.substring(0, 2); String subsKeyLowered = subsKey.toLowerCase(); letterFD.addSample(subsKeyLowered, 1); } else { String subsKey = key.substring(0, 1); String subsKeyLowered = subsKey.toLowerCase(); letterFD.addSample(subsKeyLowered, 1); } writer.write(key); writer.write(TAB); writer.write(Long.toString(cfd.getCount(level, key))); writer.write(LF); } writer.flush(); }