Проблемы с обучением Mallet HMM

#java #mallet #hidden-markov-models

#java #mallet #скрытые-марковские-модели

Вопрос:

В данный момент я борюсь со смехотворно плохой документацией Mallet, касающейся HMM. Мне удалось импортировать данные в экземпляры (адаптированные из ImportExample.java фрагмент), и мне просто было интересно, как их можно использовать для обучения модели HMM. Сначала я начал с создания экземпляра HMM, но я не был уверен, стоит ли идти на:

     HMM hmm = new HMM(instances.getDataAlphabet(), instances.getTargetAlphabet());
  

Или используйте один и тот же алфавит данных дважды, например:

     HMM hmm = new HMM(instances.getDataAlphabet(), instances.getDataAlphabet());
  

В любом случае, когда я доберусь до

     hmm.train(instances);
  

Я получаю следующую ошибку:

cc.mallet.types.FeatureVector не может быть приведен к cc.mallet.types.FeatureVectorSequence

Я был бы благодарен за любую помощь, которую вы можете предоставить.

Приветствия

Ответ №1:

Мне удалось решить эту конкретную проблему, и я подумал, что это может быть полезно другим с такой же проблемой. В пакете примеров в mallet есть решение: http://hg-iesl.cs.umass.edu/hg/mallet/file/83adf71b0824/src/cc/mallet/examples/TrainHMM.java

Основная проблема была связана с тем, как вы импортировали данные через канал. Также из того, что я могу сказать, это помогает, если ваши данные находятся в этом формате:

 TOKEN  TAG 
TOKEN  TAG
  

Я предполагаю, что у вас могут быть функции между ТОКЕНОМ и ТЕГОМ, но я не уверен на 100%. Если кто-нибудь знает какие-либо хорошие примеры и документацию об использовании HMM в mallet, пожалуйста, дайте мне знать.