#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, пожалуйста, дайте мне знать.