On Nov 6, 8:54 am, "metaperl.com" <[EMAIL PROTECTED]> wrote: > I'm readinghttp://norvig.com/spell-correct.html > > and do not understand the expression listed in the subject which is > part of this function: > > def train(features): > model = collections.defaultdict(lambda: 1) > for f in features: > model[f] += 1 > return model > > Perhttp://docs.python.org/lib/defaultdict-examples.html > > It seems that there is a default factory which initializes each key to > 1. So by the end of train(), each member of the dictionary model will > have value >= 1 > > But why wouldnt he set the value to zero and then increment it each > time a "feature" (actually a word) is encountered? It seems that each > model value would be 1 more than it should be.
The explanation is a little further down on that same page, on the discussion of "novel" words and avoiding the probablity of them being 0 just because they have not yet been seen in the training text. -- Paul -- http://mail.python.org/mailman/listinfo/python-list