code: def test_build_vocab(self):
      token_saliencies = [
          {
              "token_grad_sentence": dtypes.TokenSalience(
                  ["a", "b", "c"],
                  np.array([0, 0, 0]),
              )
          },
          {
              "token_grad_sentence": dtypes.TokenSalience(
                  ["d", "e", "f"],
                  np.array([0, 0, 0]),
              )
          },
      ]
  
      clustering_component = salience_clustering.SalienceClustering(
          self.salience_mappers
      )
      vocab_lookup, vocab = clustering_component._build_vocab(
          token_saliencies
      )
      expected_vocab_lookup = {
          "a": 0,
          "b": 1,
          "c": 2,
          "d": 3,
          "e": 4,
          "f": 5,
      }
      expected_vocab = ["a", "b", "c", "d", "e", "f"]
      self.assertEqual(expected_vocab_lookup, vocab_lookup)
      self.assertEqual(expected_vocab, vocab)
  
imports: from absl.testing import absltest
  from absl.testing import parameterized
  from lit_nlp.api import dataset
  from lit_nlp.api import dtypes
  from lit_nlp.components import gradient_maps
  from lit_nlp.components import lime_explainer
  from lit_nlp.components import salience_clustering
  from lit_nlp.lib import testing_utils
  import numpy
label_desc: Use image node_id 3 for calling the SalienceClusteringTest obj's underlying member method code with example usage: obj.test_build_vocab() without return types