class_docstr: Computes labeled and unlabeled attachment scores for a
  dependency parse, as well as sentence level exact match
  for both labeled and unlabeled trees. Note that the input
  to this metric is the sampled predictions, not the distribution
  itself.
  
  # Parameters
  
  ignore_classes : `List[int]`, optional (default = `None`)
      A list of label ids to ignore when computing metrics.
docstr: # Parameters
  
  predicted_indices : `torch.Tensor`, required.
      A tensor of head index predictions of shape (batch_size, timesteps).
  predicted_labels : `torch.Tensor`, required.
      A tensor of arc label predictions of shape (batch_size, timesteps).
  gold_indices : `torch.Tensor`, required.
      A tensor of the same shape as `predicted_indices`.
  gold_labels : `torch.Tensor`, required.
      A tensor of the same shape as `predicted_labels`.
  mask : `torch.BoolTensor`, optional (default = `None`).
      A tensor of the same shape as `predicted_indices`.
code: def __call__(  # type: ignore
      self,
      predicted_indices: torch.Tensor,
      predicted_labels: torch.Tensor,
      gold_indices: torch.Tensor,
      gold_labels: torch.Tensor,
      mask: Optional[torch.BoolTensor] = None,
  ):
      """
      # Parameters
  
      predicted_indices : `torch.Tensor`, required.
          A tensor of head index predictions of shape (batch_size, timesteps).
      predicted_labels : `torch.Tensor`, required.
          A tensor of arc label predictions of shape (batch_size, timesteps).
      gold_indices : `torch.Tensor`, required.
          A tensor of the same shape as `predicted_indices`.
      gold_labels : `torch.Tensor`, required.
          A tensor of the same shape as `predicted_labels`.
      mask : `torch.BoolTensor`, optional (default = `None`).
          A tensor of the same shape as `predicted_indices`.
      """
      detached = self.detach_tensors(
          predicted_indices,
          predicted_labels,
          gold_indices,
          gold_labels,
          mask,
      )
      (
          predicted_indices,
          predicted_labels,
          gold_indices,
          gold_labels,
          mask,
      ) = detached
  
      if mask is None:
          mask = torch.ones_like(predicted_indices).bool()
  
      predicted_indices = predicted_indices.long()
      predicted_labels = predicted_labels.long()
      gold_indices = gold_indices.long()
      gold_labels = gold_labels.long()
  
      # Multiply by a mask denoting locations of
      # gold labels which we should ignore.
      for label in self._ignore_classes:
          label_mask = gold_labels.eq(label)
          mask = mask & ~label_mask
  
      correct_indices = predicted_indices.eq(gold_indices).long() * mask
      unlabeled_exact_match = (correct_indices + ~mask).prod(dim=-1)
      correct_labels = predicted_labels.eq(gold_labels).long() * mask
      correct_labels_and_indices = correct_indices * correct_labels
      labeled_exact_match = (correct_labels_and_indices + ~mask).prod(
          dim=-1
      )
      total_sentences = correct_indices.size(0)
      total_words = correct_indices.numel() - (~mask).sum()
  
      self._unlabeled_correct += dist_reduce_sum(correct_indices).sum()
      self._exact_unlabeled_correct += dist_reduce_sum(
          unlabeled_exact_match
      ).sum()
      self._labeled_correct += dist_reduce_sum(
          correct_labels_and_indices
      ).sum()
      self._exact_labeled_correct += dist_reduce_sum(
          labeled_exact_match
      ).sum()
      self._total_sentences += dist_reduce_sum(total_sentences)
      self._total_words += dist_reduce_sum(total_words)
  
file_path: allennlp/allennlp/training/metrics/attachment_scores.py
imports: from typing import Optional, List
  import torch
  from allennlp.nn.util import dist_reduce_sum
  from allennlp.training.metrics.metric import Metric
label_desc: Use image node_id 2 for calling the AttachmentScores obj's underlying member method code with example usage: obj.__call__(predicted_indices, predicted_labels, gold_indices, gold_labels, mask) without return types