You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Jun 14, 2023. It is now read-only.
The reason that I’m asking is that in natural language processing, HMMs have been used for sequence labeling tasks like part-of-speech tagging. In this task, for example, a second-order HMM that conditions on the previous two tags generally seems to do better than a first-order model that just conditions on one previous tag.
maxmouchet:
I’m not very familiar with higher-order models, but right now I see two ways of implementing them:
Writing specialized versions of the functions (e.g. messages_forwards_2);
Implementing more generic algorithms (such as belief propagation) to handle models of arbitrary orders in a single function;
The second option seems cleaner but I’m worried about the performance implications. On the other hand, macros could be used to generate specialized function for an arbitrary order instead.
As for the types, I can add a new parameter like AbstractHMM{F<:VariateForm, N} where N represents the order (1 by default).
Implement serialization/deserialization
Array(HMM), Dict, JSON, ...
Others
Implement iterate(HMM), to be able to write forward(hmm...) instead of forward(hmm.a, hmm.A, hmm.B).
HMM from Mixture Model (and use that to train HMMs with Mixture Models/MMs alone)
Specialized transition matrix types
Array{Float64,2}
)Implementations of forward/backward/MLE dependent on the transition matrix type.
Higher-order models
As per https://discourse.julialang.org/t/ann-hmmbase-jl-a-lightweight-and-efficient-hidden-markov-model-abstraction/21604/2:
dellison:
maxmouchet:
Implement serialization/deserialization
Array(HMM), Dict, JSON, ...
Others
c
and to compute unscaled messages (setc
to 1?)Always use logl. everyhwere? (Removelogl
kwarg (always use log-likelihoods) #22)The text was updated successfully, but these errors were encountered: