注意几点:
1.文本文件中的一行就是一条语料,第一列是语种对应的ISO-639-3码,第二列是tab缩进,第三列就是语料文本
2.对于长文本,不要人为的去加换行
3.训练语料必须要有多个不同的语料信息,否则在训练时会报错
有了以上的语料文件,就可以通过几行简单的代码就能将其训练成我们需要的语言检测了
InputStreamFactory inputStreamFactory = new MarkableFileInputStreamFactory(new File("corpus.txt"));
ObjectStream<String> lineStream = new PlainTextByLineStream(inputStreamFactory, StandardCharsets.UTF_8);
ObjectStream<LanguageSample> sampleStream = new LanguageDetectorSampleStream(lineStream);
TrainingParameters params = ModelUtil.createDefaultTrainingParameters();
params.put(TrainingParameters.ALGORITHM_PARAM, PerceptronTrainer.PERCEPTRON_VALUE);
params.put(TrainingParameters.CUTOFF_PARAM, 0);
LanguageDetectorFactory factory = new LanguageDetectorFactory();
LanguageDetectorModel model = LanguageDetectorME.train(sampleStream, params, factory);
model.serialize(new File("langdetect.bin"));
}
最后运行一下,就能在你的本地生成一个langdetect.bin的语料文件了,以后就在程序里用上就好了。
原文:https://blog.51cto.com/biyusheng/2464894