package cn.edu.bjut.textmining.chapter5.support; import java.io.BufferedWriter; import java.io.IOException; import java.io.UncheckedIOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.ArrayList; import java.util.List; /** 结果表使用UTF-8,运行入口只需指定文件名和行。 */ public final class ResultWriter { private ResultWriter() {} public static void lines(String name, List lines) { try (BufferedWriter writer = Files.newBufferedWriter(ProjectPaths.output(name), StandardCharsets.UTF_8)) { for (String line : lines) { writer.write(line); writer.newLine(); } } catch (IOException e) { throw new UncheckedIOException("保存结果失败:" + name, e); } } public static void features(String prefix, TextFeatures.Result result) { List vocab = new ArrayList<>(); vocab.add("column\tfeature\tdf"); for (int j = 0; j < result.vocabulary.size(); j++) { vocab.add(j + "\t" + result.vocabulary.get(j) + "\t" + result.documentFrequencies[j]); } lines(prefix + "_vocabulary.tsv", vocab); List rows = new ArrayList<>(); for (double[] vector : result.vectors) { StringBuilder line = new StringBuilder(); for (int j = 0; j < vector.length; j++) { if (j > 0) { line.append(','); } line.append(Double.toString(vector[j])); } rows.add(line.toString()); } lines(prefix + "_vectors.csv", rows); } }