From 989c59918c7c5e1b1c61187b53ec893f7358fcb0 Mon Sep 17 00:00:00 2001 From: Ines Montani Date: Sat, 3 Oct 2020 18:53:39 +0200 Subject: [PATCH 1/3] Update docs [ci skip] --- website/docs/api/cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/api/cli.md b/website/docs/api/cli.md index 32d73d762..e51e698dd 100644 --- a/website/docs/api/cli.md +++ b/website/docs/api/cli.md @@ -232,7 +232,7 @@ $ python -m spacy init labels [config_path] [output_path] [--code] [--verbose] [ | `--gpu-id`, `-g` | GPU ID or `-1` for CPU. Defaults to `-1`. ~~int (option)~~ | | `--help`, `-h` | Show help message and available arguments. ~~bool (flag)~~ | | overrides | Config parameters to override. Should be options starting with `--` that correspond to the config section and value to override, e.g. `--paths.train ./train.spacy`. ~~Any (option/flag)~~ | -| **CREATES** | The final trained pipeline and the best trained pipeline. | +| **CREATES** | The best trained pipeline and the final checkpoint (if training is terminated). | ## convert {#convert tag="command"} From 80603f0fa57c9735a9b07a9af315d695cb445568 Mon Sep 17 00:00:00 2001 From: Ines Montani Date: Sat, 3 Oct 2020 18:54:09 +0200 Subject: [PATCH 2/3] Make SentenceRecognizer.label_data return None Overwrite the method from the base class (Tagger) but don't export anything in "init labels" --- spacy/pipeline/senter.pyx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spacy/pipeline/senter.pyx b/spacy/pipeline/senter.pyx index ec635de5c..231072e9c 100644 --- a/spacy/pipeline/senter.pyx +++ b/spacy/pipeline/senter.pyx @@ -71,6 +71,10 @@ class SentenceRecognizer(Tagger): # are 0 return tuple(["I", "S"]) + @property + def label_data(self): + return None + def set_annotations(self, docs, batch_tag_ids): """Modify a batch of documents, using pre-computed scores. From c2401fca411559c66fa4172886a24d4d632de162 Mon Sep 17 00:00:00 2001 From: Ines Montani Date: Sat, 3 Oct 2020 19:12:46 +0200 Subject: [PATCH 3/3] Add tests for Pipe.label_data --- spacy/tests/pipeline/test_pipe_methods.py | 33 ++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/spacy/tests/pipeline/test_pipe_methods.py b/spacy/tests/pipeline/test_pipe_methods.py index ea09d990c..d6d04f158 100644 --- a/spacy/tests/pipeline/test_pipe_methods.py +++ b/spacy/tests/pipeline/test_pipe_methods.py @@ -1,6 +1,6 @@ import pytest from spacy.language import Language -from spacy.util import SimpleFrozenList +from spacy.util import SimpleFrozenList, get_arg_names @pytest.fixture @@ -346,3 +346,34 @@ def test_pipe_methods_frozen(): nlp.components.sort() with pytest.raises(NotImplementedError): nlp.component_names.clear() + + +@pytest.mark.parametrize( + "pipe", + [ + "tagger", + "parser", + "ner", + "textcat", + pytest.param("morphologizer", marks=pytest.mark.xfail), + ], +) +def test_pipe_label_data_exports_labels(pipe): + nlp = Language() + pipe = nlp.add_pipe(pipe) + # Make sure pipe has pipe labels + assert getattr(pipe, "label_data", None) is not None + # Make sure pipe can be initialized with labels + initialize = getattr(pipe, "initialize", None) + assert initialize is not None + assert "labels" in get_arg_names(initialize) + + +@pytest.mark.parametrize("pipe", ["senter", "entity_linker"]) +def test_pipe_label_data_no_labels(pipe): + nlp = Language() + pipe = nlp.add_pipe(pipe) + assert getattr(pipe, "label_data", None) is None + initialize = getattr(pipe, "initialize", None) + if initialize is not None: + assert "labels" not in get_arg_names(initialize)