--- title: MorphAnalysis tag: class source: spacy/tokens/morphanalysis.pyx --- Stores a single morphological analysis. ## MorphAnalysis.\_\_init\_\_ {#init tag="method"} Initialize a MorphAnalysis object from a UD FEATS string or a dictionary of morphological features. > #### Example > > ```python > from spacy.tokens import MorphAnalysis > > feats = "Feat1=Val1|Feat2=Val2" > m = MorphAnalysis(nlp.vocab, feats) > ``` | Name | Type | Description | | ----------- | ------------------ | ----------------------------- | | `vocab` | `Vocab` | The vocab. | | `features` | `Union[Dict, str]` | The morphological features. | | **RETURNS** | `MorphAnalysis` | The newly constructed object. | ## MorphAnalysis.\_\_contains\_\_ {#contains tag="method"} Whether a feature/value pair is in the analysis. > #### Example > > ```python > feats = "Feat1=Val1,Val2|Feat2=Val2" > morph = MorphAnalysis(nlp.vocab, feats) > assert "Feat1=Val1" in morph > ``` | Name | Type | Description | | ----------- | ----- | ------------------------------------- | | **RETURNS** | `str` | A feature/value pair in the analysis. | ## MorphAnalysis.\_\_iter\_\_ {#iter tag="method"} Iterate over the feature/value pairs in the analysis. > #### Example > > ```python > feats = "Feat1=Val1|Feat2=Val2" > morph = MorphAnalysis(nlp.vocab, feats) > for feat in morph: > print(feat) > ``` | Name | Type | Description | | ---------- | ----- | ------------------------------------- | | **YIELDS** | `str` | A feature/value pair in the analysis. | ## MorphAnalysis.\_\_len\_\_ {#len tag="method"} Returns the number of features in the analysis. > #### Example > > ```python > feats = "Feat1=Val1,Val2|Feat2=Val2" > morph = MorphAnalysis(nlp.vocab, feats) > assert len(morph) == 3 > ``` | Name | Type | Description | | ----------- | ----- | --------------------------------------- | | **RETURNS** | `int` | The number of features in the analysis. | ## MorphAnalysis.\_\_str\_\_ {#str tag="method"} Returns the morphological analysis in the UD FEATS string format. > #### Example > > ```python > feats = "Feat1=Val1,Val2|Feat2=Val2" > morph = MorphAnalysis(nlp.vocab, feats) > assert str(morph) == feats > ``` | Name | Type | Description | | ----------- | ----- | ---------------------------------| | **RETURNS** | `str` | The analysis in UD FEATS format. | ## MorphAnalysis.get {#get tag="method"} Retrieve a feature by field. > #### Example > > ```python > feats = "Feat1=Val1,Val2" > morph = MorphAnalysis(nlp.vocab, feats) > assert morph.get("Feat1") == ['Feat1=Val1', 'Feat1=Val2'] > ``` | Name | Type | Description | | ----------- | ------ | ----------------------------------- | | `field` | `str` | The field to retrieve. | | **RETURNS** | `list` | A list of the individual features. | ## MorphAnalysis.to_dict {#to_dict tag="method"} Produce a dict representation of the analysis, in the same format as the tag map. > #### Example > > ```python > feats = "Feat1=Val1,Val2|Feat2=Val2" > morph = MorphAnalysis(nlp.vocab, feats) > assert morph.to_dict() == {'Feat1': 'Val1,Val2', 'Feat2': 'Val2'} > ``` | Name | Type | Description | | ----------- | ------ | -----------------------------------------| | **RETURNS** | `dict` | The dict representation of the analysis. | ## MorphAnalysis.from_id {#from_id tag="classmethod"} Create a morphological analysis from a given hash ID. > #### Example > > ```python > feats = "Feat1=Val1|Feat2=Val2" > hash = nlp.vocab.strings[feats] > morph = MorphAnalysis.from_id(nlp.vocab, hash) > assert str(morph) == feats > ``` | Name | Type | Description | | ------- | ------- | -------------------------------- | | `vocab` | `Vocab` | The vocab. | | `key` | `int` | The hash of the features string. |