Hi Kenneth
Thank you for this detailed answer. I'll try to make it work using
m_gram functionnality, since the features I'm computing only make
sense for n-gram models. I let you know if it worked.
Thanks again!
Sylvain
On Tuesday 07 February 2012 10:17:26 Kenneth Heafield wrote:
> Hi,
>
> Moses server wants to keep one copy of a language model even if it
has
> different feature weights. The problem is that
StatefulFeatureFunction
> knows its own weight (a design I disagree with), so it can't just keep
> one StatefulFeatureFunction.
>
> LanguageModel is a child of StatefulFeatureFunction. All language
> models are child classes of LanguageModel.
>
> For KenLM, the object hierarchy looks like:
>
> ScoreProducer < FeatureFunction < StatefulFeatureFunction <
> LanguageModel < LanguageModelKen
>
> and LanguageModelKen has boost::shared_ptr<lm::ngram::Model>
m_ngram.
> There is no LanguageModelImplementation intermediary any more
but
> m_ngram provides similar functionality with a different interface.
>
> For all other language models, the object hierarchy is:
>
> ScoreProducer < FeatureFunction < StatefulFeatureFunction <
> LanguageModel < LMRefCount
>
> LMRefCount's sole purpose is to delegate to its member
> boost::shared_ptr<LanguageModelImplementation> m_impl
> thereby passing calls to the LanguageModelImplementation class.
>
> LanguageModelImplementation implements CalcScore, Evaluate, and
> EvaluateChart. These call virtual methods. SRILM's hierarchy is
>
> LanguageModelImplementation < LanguageModelSingleFactor <
> LanguageModelPointerState < LanguageModelSRI
>
> The interaction between these is somewhat messy and there's some
old
> code in there. I have simple wrappers for SRILM, IRSTLM, and RandLM
> that implement the same interface as lm::ngram::Model (except for
> ExtendLeft) and was considering making these wrappers template
arguments
> to LanguageModelKen (which would then be renamed). But it also
makes
> people suspect foul play if I break anything in the process.
>
> Kenneth
>
> On 02/07/2012 09:03 AM, Barry Haddow wrote:
> > Hi Sylvain
> >
> > I've updated the doxygen docs, if that helps,
> >
> > cheers - Barry
> >
> > On Tuesday 07 February 2012 12:24:07 Sylvain Raybaud wrote:
> >> Hi, List
> >>
> >> I've been digging into this but I'm still clueless... I really need to
> >> get
> >>
> >> the LanguageModelImplementation object, but nowhere in
Base.h/cpp or in
> >> specific implementations like Ken.h/cpp could I find where it
refers to
> >>
> >> LanguageModelImplementation. Is it still used at all?
> >>
> >> By the way, I think mosesserver has got the same problem since
its
> >> implementation uses the same methods I used.
> >>
> >> regards,
> >>
> >> Sylvain
> >>
> >> On Monday 06 February 2012 13:20:07 Sylvain Raybaud wrote:
> >>> Hello
> >>>
> >>> I'm trying to update a software that makes use of Moses API. It
uses
> >>> (among others) Moses' LanguageModel and
LanguageModelImplementation
> >>> classes. It used to call method GetLMImplementation of an
object of type
> >>> LanguageModel, in order to use methods NewState and
GetValueForgotState
> >>> of class LanguageModelImplementation. That was in august.
> >>> Unfortunatelly,
> >>> now I've pulled a new version of Moses from git, and method
> >>> GetLMImplementation seems to have vanished. Methods
NewState and
> >>> GetValueForgotState seems to still be implemented in class
> >>>
> >>> LanguageModelImplementation. Now I can get the LM using:
> >>> TranslationSystem ts =
> >>>
> >>>
StaticData::Instance().GetTranslationSystem(std::string("default"));
> >>> LMList list = ts.GetLanguageModels();
> >>>
> >>> LanguageModel *lm = *(list.begin());
> >>>
> >>> But I could not find a way to get the
LanguageModelImplementation object
> >>> in order to call aforementioned method. Do you have an idea of
what I
> >>> should change in the code?
> >>>
> >>> By the way, documentation on
> >>> http://www.statmt.org/moses/html/hierarchy.html seems to be
obsolete, as
> >>> it seems to be lacking many files, classes and functions.
> >>>
> >>> regards,
> >>>
> >>> Sylvain
> >>> _______________________________________________
> >>> Moses-support mailing list
> >>> [email protected]
> >>> http://mailman.mit.edu/mailman/listinfo/moses-support
> >
> > --
> > Barry Haddow
> > University of Edinburgh
> > +44 (0) 131 651 3173
>
> _______________________________________________
> Moses-support mailing list
> [email protected]
> http://mailman.mit.edu/mailman/listinfo/moses-support
_______________________________________________
Moses-support mailing list
[email protected]
http://mailman.mit.edu/mailman/listinfo/moses-support