spaCy/website/docs/api/morphology.md
Adriane Boyd 14df00ae98 Add Morphology and MorphAnalsysis API docs
Add initial draft of `Morphology` and `MorphAnalysis` API docs.
2020-07-21 10:33:46 +02:00

6.2 KiB

title tag source
Morphology class spacy/morphology.pyx

Store the possible morphological analyses for a language, and index them by hash. To save space on each token, tokens only know the hash of their morphological analysis, so queries of morphological attributes are delegated to this class.

Morphology.__init__

Create a Morphology object using the tag map, lemmatizer and exceptions.

Example

from spacy.morphology import Morphology

morphology = Morphology(strings, tag_map, lemmatizer)
Name Type Description
strings StringStore The string store.
tag_map Dict[str, Dict] The tag map.
lemmatizer Lemmatizer The lemmatizer.
exc Dict[str, Dict] A dictionary of exceptions in the format {tag: {orth: {"POS": "X", "Feat1": "Val1, "Feat2": "Val2", ...}
RETURNS Morphology The newly constructed object.

Morphology.add

Insert a morphological analysis in the morphology table, if not already present. The morphological analysis may be provided in the UD FEATS format as a string or in the tag map dictionary format. Returns the hash of the new analysis.

Example

feats = "Feat1=Val1|Feat2=Val2"
hash = nlp.vocab.morphology.add(feats)
assert hash == nlp.vocab.strings[feats]
Name Type Description
features Union[Dict, str] The morphological features.

Morphology.get

Example

feats = "Feat1=Val1|Feat2=Val2"
hash = nlp.vocab.morphology.add(feats)
assert nlp.vocab.morphology.get(hash) == feats

Get the FEATS string for the hash of the morphological analysis.

Name Type Description
morph int The hash of the morphological analysis.

Morphology.load_tag_map

Replace the current tag map with the provided tag map.

Name Type Description
tag_map Dict[str, Dict] The tag map.

Morphology.load_morph_exceptions

Replace the current morphological exceptions with the provided exceptions.

Name Type Description
morph_rules Dict[str, Dict] The morphological exceptions.

Morphology.add_special_case

Add a special-case rule to the morphological analyzer. Tokens whose tag and orth match the rule will receive the specified properties.

Example

attrs = {"POS": "DET", "Definite": "Def"}
morphology.add_special_case("DT", "the", attrs)
Name Type Description
tag_str str The fine-grained tag.
orth_str str The token text.
attrs dict The features to assign for this token and tag.

Morphology.exc

The current morphological exceptions.

Name Type Description
YIELDS dict The current dictionary of morphological exceptions.

Morphology.lemmatize

TODO

Morphology.feats_to_dict

Convert a string FEATS representation to a dictionary of features and values in the same format as the tag map.

Example

from spacy.morphology import Morphology
d = Morphology.feats_to_dict("Feat1=Val1|Feat2=Val2")
assert d == {"Feat1": "Val1", "Feat2": "Val2"}
Name Type Description
feats str The morphological features in Universal Dependencies FEATS format.
RETURNS dict The morphological features as a dictionary.

Morphology.dict_to_feats

Convert a dictionary of features and values to a string FEATS representation.

Example

from spacy.morphology import Morphology
f = Morphology.dict_to_feats({"Feat1": "Val1", "Feat2": "Val2"})
assert f == "Feat1=Val1|Feat2=Val2"
Name Type Description
feats_dict Dict[str, Dict] The morphological features as a dictionary.
RETURNS str The morphological features as in Universal Dependencies FEATS format.

Attributes

Name Type Description
FEATURE_SEP str The FEATS feature separator. Default is `
FIELD_SEP str The FEATS field separator. Default is =.
VALUE_SEP str The FEATS value separator. Default is ,.