Commit Graph

34 Commits

Author SHA1 Message Date
Matthew Honnibal 563f46f026 Fix multi-label support for text classification
The TextCategorizer class is supposed to support multi-label
text classification, and allow training data to contain missing
values.

For this to work, the gradient of the loss should be 0 when labels
are missing. Instead, there was no way to actually denote "missing"
in the GoldParse class, and so the TextCategorizer class treated
the label set within gold.cats as complete.

To fix this, we change GoldParse.cats to be a dict instead of a list.
The GoldParse.cats dict should map to floats, with 1. denoting
'present' and 0. denoting 'absent'. Gradients are zeroed for categories
absent from the gold.cats dict. A nice bonus is that you can also set
values between 0 and 1 for partial membership. You can also set numeric
values, if you're using a text classification model that uses an
appropriate loss function.

Unfortunately this is a breaking change; although the functionality
was only recently introduced and hasn't been properly documented
yet. I've updated the example script accordingly.
2017-10-05 18:43:02 -05:00
Matthew Honnibal f1b86dff8c Update textcat example 2017-10-04 15:12:28 +02:00
Matthew Honnibal 79a94bc166 Update textcat exampe 2017-10-04 14:55:30 +02:00
Matthew Honnibal cbb1fbef80 Update train_ner_standalone example 2017-10-03 18:49:38 +02:00
Matthew Honnibal 027a5d8b75 Update train_ner_standalone example 2017-09-15 10:36:46 +02:00
Matthew Honnibal 683d81bb49 Update example for adding entity type 2017-09-14 16:15:59 +02:00
Matthew Honnibal c16ef0a85c Clarify train textcat example 2017-07-29 21:59:27 +02:00
Matthew Honnibal 54a539a113 Finish text classifier example 2017-07-23 00:34:12 +02:00
Matthew Honnibal 2bc7d87c70 Add example for training text classifier 2017-07-22 20:15:32 +02:00
ines 992559bf9a Fix formatting and remove unused imports 2017-06-01 12:47:18 +02:00
Matthew Honnibal 5c30466c95 Update NER training example 2017-05-31 13:42:12 +02:00
Matthew Honnibal 2da16adcc2 Add dropout optin for parser and NER
Dropout can now be specified in the `Parser.update()` method via
the `drop` keyword argument, e.g.

    nlp.entity.update(doc, gold, drop=0.4)

This will randomly drop 40% of features, and multiply the value of the
others by 1. / 0.4. This may be useful for generalising from small data
sets.

This commit also patches the examples/training/train_new_entity_type.py
example, to use dropout and fix the output (previously it did not output
the learned entity).
2017-04-27 13:18:39 +02:00
Matthew Honnibal 0605b95f2e Merge branch 'master' of https://github.com/explosion/spaCy 2017-04-18 13:48:00 +02:00
Matthew Honnibal 2f84626417 Fix train_new_entity_type example 2017-04-18 13:47:36 +02:00
Ines Montani 734b0a4e4a Update train_new_entity_type.py 2017-04-16 23:42:16 +02:00
ines 264af6cd17 Add documentation 2017-04-16 20:37:46 +02:00
ines c7adca58a9 Tidy up example and only save/test if output_directory is not None 2017-04-16 16:55:01 +02:00
Matthew Honnibal 40e3024241 Move standalone NER training script into examples directory 2017-04-15 16:13:42 +02:00
Matthew Honnibal c729d72fc6 Add new example for training new entity types 2017-04-15 16:11:06 +02:00
Matthew Honnibal 97b83c74dc WIP on training example 2017-04-14 23:54:27 +02:00
Matthew Honnibal ab70f6e18d Update NER training example 2017-01-27 12:27:10 +01:00
Christos Savvopoulos c19b83f6ae use model_dir inside of load_model 2016-12-12 20:23:24 +00:00
Christos Savvopoulos 93cf4af701 actually commit load_ner.py 2016-12-12 20:13:33 +00:00
Christos Savvopoulos ad54a929f8 train_ner should save vocab; add load_ner example 2016-12-12 20:09:49 +00:00
kendricktan ba8841234a Fixed training examples
Changes:
1. train_ner won't crash if no data directory is not found
2. Fixed train_tagger expected spacy.gold.GoldParse, got list
2016-10-24 16:09:23 +10:00
kendricktan 9877f3298f updated training examples to v1.1.2 2016-10-24 11:53:33 +10:00
kendricktan f77b3dc677 Fixed train_parser examples when model_dir isn't None 2016-10-20 23:40:51 +10:00
kendricktan d817d57219 Fixed train_ner examples when model_dir isn't None 2016-10-20 21:09:07 +10:00
Matthew Honnibal 3fba897e0f Update train_parser example 2016-10-16 21:41:14 +02:00
Matthew Honnibal f787cd29fe Refactor the pipeline classes to make them more consistent, and remove the redundant blank() constructor. 2016-10-16 21:34:57 +02:00
Matthew Honnibal 4e9727b474 Use new words keyword argument in Doc. 2016-10-16 18:16:25 +02:00
Matthew Honnibal 2508117553 Make train_parser example a bit simpler. 2016-10-16 17:58:37 +02:00
Matthew Honnibal 4574fe87c6 Add example for training parser 2016-10-16 17:05:55 +02:00
Matthew Honnibal 01b42c531f Update train_tagger script 2016-10-16 16:10:23 +02:00