what if I don't know the feature names before hand?
In that case, can I set the weights directly during decoding?

On Thu, Nov 13, 2014 at 4:59 PM, Barry Haddow <bhad...@staffmail.ed.ac.uk>
wrote:

> Hi Prashant
>
> You add something like this to your moses.ini:
>
> [weight-file]
> /path/to/sparse/weights/file
>
> The sparse weights file has the form:
>
> name1 weight1
> name2 weight2
> name3 weight3
> .
> .
> .
>
> At least that's how it works in Moses v2.
>
> cheers - Barry
>
> On 13/11/14 15:42, Prashant Mathur wrote:
>
>> Thanks a lot Barry for your answers.
>>
>> I have another question.
>> When I print these sparse features at the end of decoding, all sparse
>> features are assigned a weight of 0 because all of them were initialized
>> during decoding.
>> How can I set these weights for sparse features before they are evaluated?
>>
>>
>> Thanks Hieu for the link..
>> I am going to update the code as soon as I can.. but it will take some
>> time.. will get back to you when I do that.
>>
>> --Prashant
>>
>>
>> On Thu, Nov 13, 2014 at 2:34 PM, Hieu Hoang <hieu.ho...@ed.ac.uk <mailto:
>> hieu.ho...@ed.ac.uk>> wrote:
>>
>>     re-iterating what Barry said, you should use the github moses if
>>     you want to create your own feature functions, especially with
>>     sparse features. The reasons:
>>       1. Adding new feature functions is a pain in v 0.91. It's
>>     trivial now. You can watch my talk to find out why
>>     http://lectures.ms.mff.cuni.cz/video/recordshow/index/44/184
>>       2. It's confusing exactly when the feature functions are
>>     computed. It's clear now (hopefully!)
>>       3. I think you had to set special flags somewhere to use sparse
>>     features. Now, all feature functions can use sparse features as
>>     well as dense features
>>       4. I don't remember the 0.91 code very well. So I can't help you
>>     if you get stuck
>>
>>
>>     On 13 November 2014 11:06, Barry Haddow
>>     <bhad...@staffmail.ed.ac.uk <mailto:bhad...@staffmail.ed.ac.uk>>
>>
>>     wrote:
>>
>>         Hi Prashant
>>
>>         I tried to answer your questions inline:
>>
>>
>>         On 12/11/14 20:27, Prashant Mathur wrote:
>>         > Hi All,
>>         >
>>         > I have a question about implementing sparse feature function.
>>         > I went through the details on its implementation, still
>>         somethings are
>>         > not clear.
>>         > FYI, I am using an old version of moses which dates back to
>>         Release
>>         > 0.91 I guess. So, I am sorry if my questions don't relate to the
>>         > latest implementation.
>>
>>         This is a bad idea. The FF interface has changed a lot since 0.91.
>>
>>         >
>>         > 1. I was looking at the TargetNgramFeature where
>>         MakePrefixNgrams adds
>>         > features in Evaluate function. From the code it seems
>>         MakePrefixNgrams
>>         > is adding sparse features on the fly. Is it correct?
>>
>>         Yes, you can add sparse features on the fly. That's really
>>         what makes
>>         them sparse features.
>>
>>         >
>>         > what is the weight assigned to this newly added feature? 1 or 0?
>>
>>         The weight comes from the weights file that you provide at
>>         start-up. If
>>         the feature is not in the weights file, then it gets a weight
>>         of 0.
>>
>>         >
>>         > 2. What is the difference between these two functions?
>>         >
>>         > /void PlusEquals(const ScoreProducer*sp, const std::string&
>>         name,
>>         > float score)/
>>         > /
>>         > /
>>         > /void SparsePlusEquals(const std::string& full_name, float
>>         score)
>>         > /
>>
>>         In the first, a string from the ScoreProducer is prepended to
>>         the name,
>>         whilst in the second the string full_name is used as the name.
>>         I think
>>         we should really use the first form to keep features in their own
>>         namespace, but the second form has pervaded Moses.
>>
>>         >
>>         > It seems like both of them are used for updating sparse feature
>>         > values.. correct?
>>         > Or, do the first one points to sparse features of a
>>         particular FF and
>>         > second one to generic sparse features?
>>         >
>>         > 3. How is the structure like if I use one
>>         StatelessFeatureFunction
>>         > with unlimited scores? Is it different from having unlimited
>>         sparse
>>         > features?
>>         >
>>         > I assume if there is one FF then there is one weight
>>         assigned to it
>>         > but in the case of sparse features I have one weight for
>>         each feature.
>>         FFs can be dense or sparse. What that really means is that the
>>         number of
>>         feature values for a dense FF is known in advance (and so space is
>>         allocated in the feature value array) but for sparse FFs the
>>         number of
>>         feature values are not known in advance. So even dense FFs can
>>         have
>>         several weights associated with them - e.g. the phrase table
>>         features.
>>         In more recent versions of Moses a given FF can have both
>>         dense and
>>         sparse values.
>>
>>         >
>>         > 4. In general when should I compute the sparse features?
>>
>>         In general, computing them as soon as you can will probably
>>         make your
>>         code more efficient. When you are able to compute your sparse
>>         feature
>>         depends on the feature itself. For example, if the feature
>>         depends on
>>         only on the phrase pair then it could be computed and stored
>>         in the
>>         phrase table. This makes the phrase table bigger (which could
>>         slow you
>>         down) but saves on computation at decoding. On the other hand,
>>         a sparse
>>         reordering feature has to be mainly computed during decoding,
>>         since we
>>         do not know the ordering of segments until decoding. When I
>>         implemented
>>         sparse reordering features though, I precomputed the feature
>>         names since
>>         you don't want to do string concatenation during decoding.
>>
>>
>>         cheers - Barry
>>
>>         >
>>         > Thanks for the patience,
>>         > --Prashant
>>         >
>>         > PS: I am still trying to figure out stuff, so questions
>>         might seem stupid.
>>         >
>>         >
>>         > _______________________________________________
>>         > Moses-support mailing list
>>         > Moses-support@mit.edu <mailto:Moses-support@mit.edu>
>>         > 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
>>         Moses-support@mit.edu <mailto:Moses-support@mit.edu>
>>         http://mailman.mit.edu/mailman/listinfo/moses-support
>>
>>
>>
>>
>>     --     Hieu Hoang
>>     Research Associate
>>     University of Edinburgh
>>     http://www.hoang.co.uk/hieu
>>
>>
>>
>
> --
> The University of Edinburgh is a charitable body, registered in
> Scotland, with registration number SC005336.
>
>
_______________________________________________
Moses-support mailing list
Moses-support@mit.edu
http://mailman.mit.edu/mailman/listinfo/moses-support

Reply via email to