
import datasets


UpperCamelCase			:       Tuple									=				"""\
@InProceedings{conneau2018xnli,
  author = \"Conneau, Alexis
                 and Rinott, Ruty
                 and Lample, Guillaume
                 and Williams, Adina
                 and Bowman, Samuel R.
                 and Schwenk, Holger
                 and Stoyanov, Veselin\",
  title = \"XNLI: Evaluating Cross-lingual Sentence Representations\",
  booktitle = \"Proceedings of the 2018 Conference on Empirical Methods
               in Natural Language Processing\",
  year = \"2018\",
  publisher = \"Association for Computational Linguistics\",
  location = \"Brussels, Belgium\",
}
"""

UpperCamelCase			:       Any									=				"""\
XNLI is a subset of a few thousand examples from MNLI which has been translated
into a 14 different languages (some low-ish resource). As with MNLI, the goal is
to predict textual entailment (does sentence A imply/contradict/neither sentence
B) and is a classification task (given two sentences, predict one of three
labels).
"""

UpperCamelCase			:       int									=				"""
Computes XNLI score which is just simple accuracy.
Args:
    predictions: Predicted labels.
    references: Ground truth labels.
Returns:
    'accuracy': accuracy
Examples:

    >>> predictions = [0, 1]
    >>> references = [0, 1]
    >>> xnli_metric = datasets.load_metric(\"xnli\")
    >>> results = xnli_metric.compute(predictions=predictions, references=references)
    >>> print(results)
    {'accuracy': 1.0}
"""






def 							A		(       snake_case   :str       ,      snake_case   :Union[str, Any]	)   ->			Optional[Any]:
 return (preds == labels).mean()





@datasets.utils.file_utils.add_start_docstrings(_DESCRIPTION    ,						_KWARGS_DESCRIPTION    )
class __lowerCAmelCase	(   datasets.Metric    ):





     def 		UpperCAmelCase      (			self   ):

      '''simple docstring'''




      return datasets.MetricInfo(
          description=_DESCRIPTION			,  citation=_CITATION			,  inputs_description=_KWARGS_DESCRIPTION			,  features=datasets.Features(
              {
                  'predictions': datasets.Value('int64' if self.config_name != 'sts-b' else 'float32'   ),
                  'references': datasets.Value('int64' if self.config_name != 'sts-b' else 'float32'   ),
              }   )			,  codebase_urls=[]			,  reference_urls=[]			,  format='numpy'			,  )







     def 		UpperCAmelCase      (			self			,  __UpperCAmelCase			,  __UpperCAmelCase   ):

      '''simple docstring'''




      return {"accuracy": simple_accuracy(snake_case_			,  snake_case_   )}





"""simple docstring"""

import re

from filelock import FileLock


try:
      import nltk

      UpperCamelCase			:       int									=				True
except (ImportError, ModuleNotFoundError):
      UpperCamelCase			:       List[str]									=				False

if NLTK_AVAILABLE:
      with FileLock(".lock") as lock:
            nltk.download("punkt", quiet=True)






def 							A		(       snake_case   :str	)   ->			str:
 re.sub('<n>'       ,      ''       ,      snake_case	)  # remove pegasus newline char
 assert NLTK_AVAILABLE, "nltk must be installed to separate newlines between sentences. (pip install nltk)"
 return "\n".join(nltk.sent_tokenize(snake_case	)	)



