docstr: Process a Doc object with the component.
  
  doc (Doc): The document to process.
  RETURNS (Doc): The processed document.
docstr_tok: ["Process","a","Doc","object","with","the","component",".","doc","(","Doc",")",":","The","document","to","process",".","RETURNS","(","Doc",")",":","The","processed","document","."]
code: def __call__(self, doc: Doc) -> Doc:
      """Process a Doc object with the component.
  
      doc (Doc): The document to process.
      RETURNS (Doc): The processed document.
      """
      if self.first_run:
          self.init_component()
          self.first_run = False
      # Store reference to s2v object on Doc to make sure it's right
      doc._._s2v = self.s2v
      if self.merge_phrases:
          merge_phrases_id = doc._._s2v.cfg.get(
              "merge_phrases", "default"
          )
          merge_phrases = registry.merge_phrases.get(merge_phrases_id)
          doc = merge_phrases(doc)
      return doc
  
imports: from typing import Tuple, Union, List, Dict, Callable, Iterable, Optional
  from spacy.language import Language
  from spacy.tokens import Doc, Token, Span
  from spacy.training import Example
  from spacy.vocab import Vocab
  from spacy.util import SimpleFrozenDict
  from pathlib import Path
  import numpy
  from .sense2vec import Sense2Vec
  from .util import registry
label_desc: Use image node_id 3 for calling the Sense2VecComponent obj's underlying member method code with example usage: obj.__call__(doc) and returns: doc