Hi Sascha
Do you know if you're using an in-memory or on-disk phrase table?
I had a quick look at the code, and it looks like the in-memory phrase table
does not set the source phrase correctly, maybe the on-disk table has the
same problem.
A possible fix would be to implement a copy constructor for TargetPhrase,
which makes a deep copy, including its embedded source Phrase. I'd have to do
a bit more investigation to see if this fix would work, as I'm not so
familiar with this part of the code.
hope that helps - best regards - Barry
On Tuesday 08 February 2011 16:51, Sascha Fendrich wrote:
> Hi All,
>
> I have implemented a stateless feature where I need
> access to the string representation of source and
> target phrase within the member function "Evaluate".
> Everything works well for the target phrase, but I
> get a segmentation fault when I call GetStringRep for
> the source phrase (see code example below).
>
> Has anyone some hints about what I'm doing wrong or
> what I should take into account? (I'm working with
> mira-mtm5-branch as codebase for sake of sparse
> features)
>
> Thanks
> Sascha
>
>
> /* minimal code example */
>
> void MyFeature::Evaluate (const TargetPhrase& tp,
> ScoreComponentCollection* score) const
> {
> string trg = tp.GetStringRep(m_factorsToPrint); // works well
> const Phrase *srcPhrase = tp.GetSourcePhrase(); // works well
> string src = srcPhrase->GetStringRep(m_factorsToPrint); // segfault
> }
>
> _______________________________________________
> Moses-support mailing list
> [email protected]
> http://mailman.mit.edu/mailman/listinfo/moses-support
--
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.
_______________________________________________
Moses-support mailing list
[email protected]
http://mailman.mit.edu/mailman/listinfo/moses-support