




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

import datasets


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

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

UpperCamelCase__     =	"\nCompute IndicGLUE evaluation metric associated to each IndicGLUE dataset.\nArgs:\n    predictions: list of predictions to score (as int64),\n        except for \'cvit-mkb-clsr\' where each prediction is a vector (of float32).\n    references: list of ground truth labels corresponding to the predictions (as int64),\n        except for \'cvit-mkb-clsr\' where each reference is a vector (of float32).\nReturns: depending on the IndicGLUE subset, one or several of:\n    \"accuracy\": Accuracy\n    \"f1\": F1 score\n    \"precision\": Precision@10\nExamples:\n\n    >>> 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\"]\n    >>> references = [0, 1]\n    >>> predictions = [0, 1]\n    >>> results = indic_glue_metric.compute(predictions=predictions, references=references)\n    >>> print(results)\n    {\'accuracy\': 1.0}\n\n    >>> indic_glue_metric = datasets.load_metric(\'indic_glue\', \'wiki-ner\')\n    >>> references = [0, 1]\n    >>> predictions = [0, 1]\n    >>> results = indic_glue_metric.compute(predictions=predictions, references=references)\n    >>> print(results)\n    {\'accuracy\': 1.0, \'f1\': 1.0}\n\n    >>> indic_glue_metric = datasets.load_metric(\'indic_glue\', \'cvit-mkb-clsr\')\n    >>> references = [[0.5, 0.5, 0.5], [0.1, 0.2, 0.3]]\n    >>> predictions = [[0.5, 0.5, 0.5], [0.1, 0.2, 0.3]]\n    >>> results = indic_glue_metric.compute(predictions=predictions, references=references)\n    >>> print(results)\n    {\'precision@10\': 1.0}\n\n"





def       _UpperCamelCase       (a__				:Any				,     a__				:str    ):






							"""simple docstring"""





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





def       _UpperCamelCase       (a__				:str				,     a__				:Any    ):






							"""simple docstring"""





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





def       _UpperCamelCase       (a__				:List[Any]				,     a__				:Union[str, Any]    ):






							"""simple docstring"""





							UpperCamelCase__			       =     np.array(lowerCamelCase__    )
							UpperCamelCase__			       =     np.array(lowerCamelCase__    )
							UpperCamelCase__			       =     en_sentvecs.shape[0]

							# mean centering
							UpperCamelCase__			       =     en_sentvecs - np.mean(lowerCamelCase__				,     axis=0    )
							UpperCamelCase__			       =     in_sentvecs - np.mean(lowerCamelCase__				,     axis=0    )

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

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






							def 			_lowerCamelCase						(  self					):
														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					,	__lowerCAmelCase					,	__lowerCAmelCase					):
														if self.config_name == "cvit-mkb-clsr":
																					return {"precision@10": precision_at_aa(__lowerCAmelCase					,	__lowerCAmelCase					)}
														elif self.config_name in ["wiki-ner"]:
																					return acc_and_fa(__lowerCAmelCase					,	__lowerCAmelCase					)
														elif self.config_name in [
														    "wnli",
														    "copa",
														    "sna",
														    "csqa",
														    "wstp",
														    "inltkh",
														    "bbca",
														    "iitp-mr",
														    "iitp-pr",
														    "actsa-sc",
														    "md",
														]:
																					return {"accuracy": simple_accuracy(__lowerCAmelCase					,	__lowerCAmelCase					)}
														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\"]"""					)











UpperCamelCase__     =	{
    "meter": "m",
    "kilometer": "km",
    "megametre": "Mm",
    "gigametre": "Gm",
    "terametre": "Tm",
    "petametre": "Pm",
    "exametre": "Em",
    "zettametre": "Zm",
    "yottametre": "Ym",
}
# Exponent of the factor(meter)
UpperCamelCase__     =	{
    "m": 0,
    "km": 3,
    "Mm": 6,
    "Gm": 9,
    "Tm": 12,
    "Pm": 15,
    "Em": 18,
    "Zm": 21,
    "Ym": 24,
}





def       _UpperCamelCase       (a__				:float				,     a__				:str				,     a__				:str    ):






							"""simple docstring"""





							UpperCamelCase__			       =     from_type.lower().strip("""s"""    )
							UpperCamelCase__			       =     to_type.lower().strip("""s"""    )

							UpperCamelCase__			       =     UNIT_SYMBOL.get(a__				,     a__    )
							UpperCamelCase__			       =     UNIT_SYMBOL.get(a__				,     a__    )

							if from_sanitized not in METRIC_CONVERSION:
														UpperCamelCase__			       =     (
														    f"""Invalid 'from_type' value: {from_type!r}.\n"""
														    f"""Conversion abbreviations are: {", ".join(a__    )}"""
														)
														raise ValueError(a__    )
							if to_sanitized not in METRIC_CONVERSION:
														UpperCamelCase__			       =     (
														    f"""Invalid 'to_type' value: {to_type!r}.\n"""
														    f"""Conversion abbreviations are: {", ".join(a__    )}"""
														)
														raise ValueError(a__    )
							UpperCamelCase__			       =     METRIC_CONVERSION[from_sanitized]
							UpperCamelCase__			       =     METRIC_CONVERSION[to_sanitized]
							UpperCamelCase__			       =     1

							if from_exponent > to_exponent:
														UpperCamelCase__			       =     from_exponent - to_exponent
							else:
														UpperCamelCase__			       =     -(to_exponent - from_exponent)

							return value * pow(10				,     a__    )


if __name__ == "__main__":
					from doctest import testmod

					testmod()




