これで解決できました。
ここで詳しくお答えし
ます。 Mallet を実行するには 2 つの方法があります。
を。コマンドモード
b.Java API の使用
さまざまな実行で一貫した結果を得るには、「ランダム シード」を修正する必要があり、コマンド ラインにはそれを設定するオプションがあります。そこに驚きはありません。
ただし、API を使用している間は、「ランダム シード」を設定するオプションがありますが、適切な時点で行う必要があることを知っておく必要があります。そうしないと機能しません。(コードを参照)
データからモデル (InstanceList を読み取る) ファイルを作成するコードをここに貼り付けた後、同じモデル ファイルを使用してランダム シードを設定し、実行するたびに一貫した (同じ読み取り) 結果が得られるようにします。 .
後で使用するためにモデルを作成して保存します。
注: このリンクに従って、入力ファイルの形式を確認してください。
http://mallet.cs.umass.edu/ap.txt
public void getModelReady(String inputFile) throws IOException {
if(inputFile != null && (! inputFile.isEmpty())) {
List<Pipe> pipeList = new ArrayList<Pipe>();
pipeList.add(new Target2Label());
pipeList.add(new Input2CharSequence("UTF-8"));
pipeList.add(new CharSequence2TokenSequence());
pipeList.add(new TokenSequenceLowercase());
pipeList.add(new TokenSequenceRemoveStopwords());
pipeList.add(new TokenSequence2FeatureSequence());
Reader fileReader = new InputStreamReader(new FileInputStream(new File(inputFile)), "UTF-8");
CsvIterator ci = new CsvIterator (fileReader, Pattern.compile("^(\\S*)[\\s,]*(\\S*)[\\s,]*(.*)$"),
3, 2, 1); // data, label, name fields
InstanceList instances = new InstanceList(new SerialPipes(pipeList));
instances.addThruPipe(ci);
ObjectOutputStream oos;
oos = new ObjectOutputStream(new FileOutputStream("Resources\\Input\\Model\\Model.vectors"));
oos.writeObject(instances);
oos.close();
}
}
モデルファイルが保存されると、これは上記の保存されたファイルを使用してトピックを生成します
public void applyLDA(ParallelTopicModel model) throws IOException {
InstanceList training = InstanceList.load (new File("Resources\\Input\\Model\\Model.vectors"));
logger.debug("InstanceList Data loaded.");
if (training.size() > 0 &&
training.get(0) != null) {
Object data = training.get(0).getData();
if (! (data instanceof FeatureSequence)) {
logger.error("Topic modeling currently only supports feature sequences.");
System.exit(1);
}
}
// IT HAS TO BE SET HERE, BEFORE CALLING ADDINSTANCE METHOD.
model.setRandomSeed(5);
model.addInstances(training);
model.estimate();
model.printTopWords(new File("Resources\\Output\\OutputFile\\topic_keys_java.txt"), 25,
false);
model.printDocumentTopics(new File ("Resources\\Output\\OutputFile\\document_topicssplit_java.txt"));
}