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
> >>> Moses-support@mit.edu
> >>> http://mailman.mit.edu/mailman/listinfo/moses-support
> > 
> > --
> > Barry Haddow
> > University of Edinburgh
> > +44 (0) 131 651 3173
> 
> _______________________________________________
> Moses-support mailing list
> Moses-support@mit.edu
> http://mailman.mit.edu/mailman/listinfo/moses-support
_______________________________________________
Moses-support mailing list
Moses-support@mit.edu
http://mailman.mit.edu/mailman/listinfo/moses-support

Reply via email to