Mallet HMM 训练问题

Lez*_*zan 5 java hidden-markov-models mallet

目前,我正在为 Mallet 关于 HMM 的糟糕得可笑的文档而苦苦挣扎。我已经设法将数据导入到实例中(改编自 ImportExample.java 片段),我只是想知道如何使用它们来训练 HMM 模型。我首先创建了一个 HMM 实例,但我不确定是否去:

    HMM hmm = new HMM(instances.getDataAlphabet(), instances.getTargetAlphabet());
Run Code Online (Sandbox Code Playgroud)

或者像这样使用相同的数据字母两次:

    HMM hmm = new HMM(instances.getDataAlphabet(), instances.getDataAlphabet());
Run Code Online (Sandbox Code Playgroud)

无论哪种方式,当我到达

    hmm.train(instances);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

cc.mallet.types.FeatureVector 不能转换为 cc.mallet.types.FeatureVectorSequence

如果您能提供任何帮助,我将不胜感激。

干杯

Lez*_*zan 2

我已经设法解决了这个特定问题,并认为它可能对遇到同样问题的其他人有用。mallet 中的示例包中有一个解决方案:http://hg-iesl.cs.umass.edu/hg/mallet/file/83adf71b0824/src/cc/mallet/examples/TrainHMM.java

主要问题与如何通过管道导入数据有关。据我所知,如果您的数据采用以下格式,它会有所帮助:

TOKEN  TAG 
TOKEN  TAG
Run Code Online (Sandbox Code Playgroud)

我假设您可以拥有 TOKEN 和 TAG 之间的功能,但我不能 100% 确定。如果有人知道有关在 mallet 中使用 HMM 的任何好的示例和文档,请告诉我。