code: def _get_span_html(
      cls,
      token: str,
      span_id_prefix: str,
      span_type: Enum,
      data_id: str,
      example_id: int,
      token_id: int,
      trg_span_id_prefix: str,
      trg_token_id: int,
  ):
      attributes = [
          f'id="{span_id_prefix}_{data_id}_{example_id}_{token_id}"',
      ]
      if trg_token_id != cls.NEG_IDX:
          trg_span_id = (
              f"{trg_span_id_prefix}_{example_id}_{trg_token_id}"
          )
          attributes.extend(
              [
                  f'onmouseover="javascript:highlight_span(this, &quot;{trg_span_id}&quot;)"',
                  f'onmouseout="javascript:dehighlight_span(this, &quot;{trg_span_id}&quot;)"',
              ]
          )
      span_style = cls.ALIGNMENT_TYPE_TO_STYLE[span_type]
      if len(span_style) > 0:
          attributes.append(f'style="{span_style}"')
      return "<span " + " ".join(attributes) + " >" + token + "</span>"
  
file_path: vizseq/vizseq/_aligners/text_aligner.py
imports: from typing import List, Tuple, Dict
  from collections import Counter
  from enum import Enum
  from nltk.translate.ribes_score import word_rank_alignment
label_desc: Use image node_id 3 for calling the VizSeqBaseTextAligner obj's underlying member method code with example usage: obj._get_span_html(cls, token, span_id_prefix, span_type, data_id, example_id, token_id, trg_span_id_prefix, trg_token_id) and returns: unknown