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