class_docstr: Two-means bias direction. Computes one-dimensional subspace that is the span
  of a specific concept (e.g. gender) as the normalized difference vector of the
  averages of seed word embedding sets.
  
  !!! Note
      It is uncommon to utilize more than one direction to represent a concept.
  
  Based on: Dev, S., & Phillips, J.M. (2019). [Attenuating Bias in Word Vectors]
  (https://api.semanticscholar.org/CorpusID:59158788). AISTATS.
  
  Implementation and terminology based on Rathore, A., Dev, S., Phillips, J.M., Srikumar,
  V., Zheng, Y., Yeh, C.M., Wang, J., Zhang, W., & Wang, B. (2021).
  [VERB: Visualizing and Interpreting Bias Mitigation Techniques for
  Word Representations](https://api.semanticscholar.org/CorpusID:233168618).
  ArXiv, abs/2104.02797.
class_docstr_tok: ["Two-means","bias","direction",".","Computes","one-dimensional","subspace","that","is","the","span","of","a","specific","concept","(","e.g",".","gender",")","as","the","normalized","difference","vector","of","the","averages","of","seed","word","embedding","sets",".","!","!","!","Note","It","is","uncommon","to","utilize","more","than","one","direction","to","represent","a","concept",".","Based","on",":","Dev",",","S.",",","&","Phillips",",","J.M",".","(","2019",")",".","[","Attenuating","Bias","in","Word","Vectors","]","(","https",":","\/\/api.semanticscholar.org\/CorpusID:59158788",")",".","AISTATS",".","Implementation","and","terminology","based","on","Rathore",",","A.",",","Dev",",","S.",",","Phillips",",","J.M.",",","Srikumar",",","V.",",","Zheng",",","Y.",",","Yeh",",","C.M.",",","Wang",",","J.",",","Zhang",",","W.",",","&","Wang",",","B",".","(","2021",")",".","[","VERB",":","Visualizing","and","Interpreting","Bias","Mitigation","Techniques","for","Word","Representations","]","(","https",":","\/\/api.semanticscholar.org\/CorpusID:233168618",")",".","ArXiv",",","abs\/2104.02797","."]
docstr: # Parameters
  
  !!! Note
      In the examples below, we treat gender identity as binary, which does not accurately
      characterize gender in real life.
  
  seed_embeddings1 : `torch.Tensor`
      A tensor of size (embeddings1_batch_size, ..., dim) containing seed word
      embeddings related to a specific concept group. For example, if the concept is gender,
      seed_embeddings1 could contain embeddings for linguistically masculine words, e.g.
      "man", "king", "brother", etc.
  seed_embeddings2: `torch.Tensor`
      A tensor of size (embeddings2_batch_size, ..., dim) containing seed word
      embeddings related to a different group for the same concept. For example,
      seed_embeddings2 could contain embeddings for linguistically feminine words, , e.g.
      "woman", "queen", "sister", etc.
  
  !!! Note
      seed_embeddings1 and seed_embeddings2 need NOT be the same size. Furthermore,
      the embeddings at the same positions in each of seed_embeddings1 and seed_embeddings2
      are NOT expected to form seed word pairs.
  
  !!! Note
      All tensors are expected to be on the same device.
  
  # Returns
  
  bias_direction : `torch.Tensor`
      A unit tensor of size (dim, ) representing the concept subspace.
docstr_tok: ["#","Parameters","!","!","!","Note","In","the","examples","below",",","we","treat","gender","identity","as","binary",",","which","does","not","accurately","characterize","gender","in","real","life",".","seed_embeddings1",":","`","torch.Tensor","`","A","tensor","of","size","(","embeddings1_batch_size",",","...",",","dim",")","containing","seed","word","embeddings","related","to","a","specific","concept","group",".","For","example",",","if","the","concept","is","gender",",","seed_embeddings1","could","contain","embeddings","for","linguistically","masculine","words",",","e.g",".","``","man","''",",","``","king","''",",","``","brother","''",",","etc",".","seed_embeddings2",":","`","torch.Tensor","`","A","tensor","of","size","(","embeddings2_batch_size",",","...",",","dim",")","containing","seed","word","embeddings","related","to","a","different","group","for","the","same","concept",".","For","example",",","seed_embeddings2","could","contain","embeddings","for","linguistically","feminine","words",",",",","e.g",".","``","woman","''",",","``","queen","''",",","``","sister","''",",","etc",".","!","!","!","Note","seed_embeddings1","and","seed_embeddings2","need","NOT","be","the","same","size",".","Furthermore",",","the","embeddings","at","the","same","positions","in","each","of","seed_embeddings1","and","seed_embeddings2","are","NOT","expected","to","form","seed","word","pairs",".","!","!","!","Note","All","tensors","are","expected","to","be","on","the","same","device",".","#","Returns","bias_direction",":","`","torch.Tensor","`","A","unit","tensor","of","size","(","dim",",",")","representing","the","concept","subspace","."]
code: def __call__(
      self,
      seed_embeddings1: torch.Tensor,
      seed_embeddings2: torch.Tensor,
  ):
      """
  
      # Parameters
  
      !!! Note
          In the examples below, we treat gender identity as binary, which does not accurately
          characterize gender in real life.
  
      seed_embeddings1 : `torch.Tensor`
          A tensor of size (embeddings1_batch_size, ..., dim) containing seed word
          embeddings related to a specific concept group. For example, if the concept is gender,
          seed_embeddings1 could contain embeddings for linguistically masculine words, e.g.
          "man", "king", "brother", etc.
      seed_embeddings2: `torch.Tensor`
          A tensor of size (embeddings2_batch_size, ..., dim) containing seed word
          embeddings related to a different group for the same concept. For example,
          seed_embeddings2 could contain embeddings for linguistically feminine words, , e.g.
          "woman", "queen", "sister", etc.
  
      !!! Note
          seed_embeddings1 and seed_embeddings2 need NOT be the same size. Furthermore,
          the embeddings at the same positions in each of seed_embeddings1 and seed_embeddings2
          are NOT expected to form seed word pairs.
  
      !!! Note
          All tensors are expected to be on the same device.
  
      # Returns
  
      bias_direction : `torch.Tensor`
          A unit tensor of size (dim, ) representing the concept subspace.
      """
      # Some sanity checks
      if seed_embeddings1.ndim < 2 or seed_embeddings2.ndim < 2:
          raise ConfigurationError(
              "seed_embeddings1 and seed_embeddings2 must have at least two dimensions."
          )
      if seed_embeddings1.size(-1) != seed_embeddings2.size(-1):
          raise ConfigurationError(
              "All seed embeddings must have same dimensionality."
          )
  
      with torch.set_grad_enabled(self.requires_grad):
          seed_embeddings1_mean = torch.mean(seed_embeddings1, dim=0)
          seed_embeddings2_mean = torch.mean(seed_embeddings2, dim=0)
          bias_direction = seed_embeddings1_mean - seed_embeddings2_mean
          return self._normalize_bias_direction(bias_direction)
  
file_path: allennlp/allennlp/fairness/bias_direction.py
imports: import torch
  import sklearn
  import numpy
  from allennlp.common.checks import ConfigurationError
label_desc: Use image node_id 1 for calling the TwoMeansBiasDirection obj's underlying member method code with example usage: obj.__call__(seed_embeddings1, seed_embeddings2) and returns: self