



'''simple docstring'''



import numpy as np
from scipy.spatial.distance import cdist
from sklearn.metrics import fa_score

import datasets


lowerCamelCase	 =       """\
    @inproceedings{kakwani2020indicnlpsuite,
    title={{IndicNLPSuite: Monolingual Corpora, Evaluation Benchmarks and Pre-trained Multilingual Language Models for Indian Languages}},
    author={Divyanshu Kakwani and Anoop Kunchukuttan and Satish Golla and Gokul N.C. and Avik Bhattacharyya and Mitesh M. Khapra and Pratyush Kumar},
    year={2020},
    booktitle={Findings of EMNLP},
}
"""

lowerCamelCase	 =       """\
    IndicGLUE is a natural language understanding benchmark for Indian languages. It contains a wide
    variety of tasks and covers 11 major Indian languages - as, bn, gu, hi, kn, ml, mr, or, pa, ta, te.
"""

lowerCamelCase	 =       """
Compute IndicGLUE evaluation metric associated to each IndicGLUE dataset.
Args:
    predictions: list of predictions to score (as int64),
        except for 'cvit-mkb-clsr' where each prediction is a vector (of float32).
    references: list of ground truth labels corresponding to the predictions (as int64),
        except for 'cvit-mkb-clsr' where each reference is a vector (of float32).
Returns: depending on the IndicGLUE subset, one or several of:
    \"accuracy\": Accuracy
    \"f1\": F1 score
    \"precision\": Precision@10
Examples:

    >>> indic_glue_metric = datasets.load_metric('indic_glue', 'wnli')  # 'wnli' or any of [\"copa\", \"sna\", \"csqa\", \"wstp\", \"inltkh\", \"bbca\", \"iitp-mr\", \"iitp-pr\", \"actsa-sc\", \"md\"]
    >>> references = [0, 1]
    >>> predictions = [0, 1]
    >>> results = indic_glue_metric.compute(predictions=predictions, references=references)
    >>> print(results)
    {'accuracy': 1.0}

    >>> indic_glue_metric = datasets.load_metric('indic_glue', 'wiki-ner')
    >>> references = [0, 1]
    >>> predictions = [0, 1]
    >>> results = indic_glue_metric.compute(predictions=predictions, references=references)
    >>> print(results)
    {'accuracy': 1.0, 'f1': 1.0}

    >>> indic_glue_metric = datasets.load_metric('indic_glue', 'cvit-mkb-clsr')
    >>> references = [[0.5, 0.5, 0.5], [0.1, 0.2, 0.3]]
    >>> predictions = [[0.5, 0.5, 0.5], [0.1, 0.2, 0.3]]
    >>> results = indic_glue_metric.compute(predictions=predictions, references=references)
    >>> print(results)
    {'precision@10': 1.0}

"""



def   _A       (   _lowerCAmelCase  ,   _lowerCAmelCase					):



       """simple docstring"""



       return float((preds == labels).mean()					)



def   _A       (   _lowerCAmelCase  ,   _lowerCAmelCase					):



       """simple docstring"""



       __lowercase       	=simple_accuracy(a_  ,   a_					)
       __lowercase       	=float(fa_score(y_true=a_  ,   y_pred=a_					)					)
       return {
           "accuracy": acc,
           "f1": fa,
       }



def   _A       (   _lowerCAmelCase  ,   _lowerCAmelCase					):



       """simple docstring"""



       __lowercase       	=np.array(a_					)
       __lowercase       	=np.array(a_					)
       __lowercase       	=en_sentvecs.shape[0]

       # mean centering
       __lowercase       	=en_sentvecs - np.mean(a_  ,   axis=0					)
       __lowercase       	=in_sentvecs - np.mean(a_  ,   axis=0					)

       __lowercase       	=cdist(a_  ,   a_  ,   'cosine'					)
       __lowercase       	=np.array(range(a_					)					)
       __lowercase       	=sim.argsort(axis=1					)[:, :10]
       __lowercase       	=np.any(preds == actual[:, None]  ,   axis=1					)
       return float(matches.mean()					)





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





    '''simple docstring'''





    def 				__lowerCamelCase     (							self  :  str):







           '''simple docstring'''

           if self.config_name not in [
               "wnli",
               "copa",
               "sna",
               "csqa",
               "wstp",
               "inltkh",
               "bbca",
               "cvit-mkb-clsr",
               "iitp-mr",
               "iitp-pr",
               "actsa-sc",
               "md",
               "wiki-ner",
           ]:
                  raise KeyError(
                      'You should supply a configuration name selected in '
                      '["wnli", "copa", "sna", "csqa", "wstp", "inltkh", "bbca", '
                      '"cvit-mkb-clsr", "iitp-mr", "iitp-pr", "actsa-sc", "md", '
                      '"wiki-ner"]')
           return datasets.MetricInfo(
               description=_DESCRIPTION  ,       citation=_CITATION  ,       inputs_description=_KWARGS_DESCRIPTION  ,       features=datasets.Features(
                   {
                       'predictions': datasets.Value('int64')
                       if self.config_name != 'cvit-mkb-clsr'
                       else datasets.Sequence(datasets.Value('float32')),
                       'references': datasets.Value('int64')
                       if self.config_name != 'cvit-mkb-clsr'
                       else datasets.Sequence(datasets.Value('float32')),
                   })  ,       codebase_urls=[]  ,       reference_urls=[]  ,       format='numpy' if self.config_name != 'cvit-mkb-clsr' else None  ,       )

    def 				__lowerCamelCase     (							self  :  List[Any]  ,       _lowerCAmelCase  :  Union[str, Any]  ,       _lowerCAmelCase  :  str):







           '''simple docstring'''

           if self.config_name == "cvit-mkb-clsr":
                  return {"precision@10": precision_at_aa(__snake_case  ,       __snake_case)}
           elif self.config_name in ["wiki-ner"]:
                  return acc_and_fa(__snake_case  ,       __snake_case)
           elif self.config_name in [
               "wnli",
               "copa",
               "sna",
               "csqa",
               "wstp",
               "inltkh",
               "bbca",
               "iitp-mr",
               "iitp-pr",
               "actsa-sc",
               "md",
           ]:
                  return {"accuracy": simple_accuracy(__snake_case  ,       __snake_case)}
           else:
                  raise KeyError(
                      'You should supply a configuration name selected in '
                      '["wnli", "copa", "sna", "csqa", "wstp", "inltkh", "bbca", '
                      '"cvit-mkb-clsr", "iitp-mr", "iitp-pr", "actsa-sc", "md", '
                      '"wiki-ner"]')








'''simple docstring'''



from typing import TYPE_CHECKING

from ...utils import _LazyModule


lowerCamelCase	 =       {"""tokenization_bertweet""": ["""BertweetTokenizer"""]}


if TYPE_CHECKING:
		from .tokenization_bertweet import BertweetTokenizer

else:
		import sys

		lowerCamelCase	 =       _LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)



