class_docstr: Maps entities to their synonyms if they appear in the training data.
class_docstr_tok: ["Maps","entities","to","their","synonyms","if","they","appear","in","the","training","data","."]
docstr: Trains the synonym lookup table.
docstr_tok: ["Trains","the","synonym","lookup","table","."]
code: def train(self, training_data: TrainingData) -> Resource:
      """Trains the synonym lookup table."""
      for key, value in list(training_data.entity_synonyms.items()):
          self._add_entities_if_synonyms(key, value)
  
      for example in training_data.entity_examples:
          for entity in example.get(ENTITIES, []):
              entity_val = example.get(TEXT)[
                  entity["start"] : entity["end"]
              ]
              self._add_entities_if_synonyms(
                  entity_val, str(entity.get("value"))
              )
  
      self._persist()
      return self._resource
  
imports: from __future__ import annotations
  import os
  from typing import Any, Dict, List, Optional, Text
  import logging
  from rasa.engine.graph import GraphComponent, ExecutionContext
  from rasa.engine.recipes.default_recipe import DefaultV1Recipe
  from rasa.shared.constants import DOCS_URL_TRAINING_DATA
  from rasa.shared.nlu.constants import ENTITIES, TEXT
  from rasa.shared.nlu.training_data.training_data import TrainingData
  from rasa.shared.nlu.training_data.message import Message
  from rasa.nlu.utils import write_json_to_file
  from rasa.nlu.extractors.extractor import EntityExtractorMixin
  import rasa.utils.io
  import rasa.shared.utils.io
  from rasa.engine.storage.resource import Resource
  from rasa.engine.storage.storage import ModelStorage
label_desc: Use image node_id 3 for calling the EntitySynonymMapper obj's underlying member method code with example usage: obj.train(training_data) and returns: self