* Remove projectivity constraint in train.py, but raise Exception if non-projective sentence is encountered, since we've told GoldParse to projectivize

This commit is contained in:
Matthew Honnibal 2015-06-23 05:04:46 +02:00
parent ee3e56f27b
commit 59e9f9153c

View File

@ -130,14 +130,13 @@ def train(Language, gold_tuples, model_dir, n_iter=15, feat_set=u'basic',
raw_text = add_noise(raw_text, corruption_level) raw_text = add_noise(raw_text, corruption_level)
tokens = nlp.tokenizer(raw_text) tokens = nlp.tokenizer(raw_text)
nlp.tagger(tokens) nlp.tagger(tokens)
gold = GoldParse(tokens, annot_tuples, make_projective=False) gold = GoldParse(tokens, annot_tuples, make_projective=True)
if not gold.is_projective: if not gold.is_projective:
raise Exception( raise Exception(
"Non-projective sentence in training, after we should " "Non-projective sentence in training, after we should "
"have enforced projectivity: %s" % annot_tuples "have enforced projectivity: %s" % annot_tuples
) )
loss += nlp.parser.train(tokens, gold) loss += nlp.parser.train(tokens, gold)
nlp.entity.train(tokens, gold) nlp.entity.train(tokens, gold)
nlp.tagger.train(tokens, gold.tags) nlp.tagger.train(tokens, gold.tags)
random.shuffle(gold_tuples) random.shuffle(gold_tuples)