



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   lowerCamelCase__       (       UpperCamelCase__     :    Optional[Any]    ,      UpperCamelCase__     :    Any  )     ->	Tuple:



					'''simple docstring'''




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





def   lowerCamelCase__       (       UpperCamelCase__     :    Dict    ,      UpperCamelCase__     :    Optional[Any]  )     ->	Tuple:



					'''simple docstring'''




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





def   lowerCamelCase__       (       UpperCamelCase__     :    List[Any]    ,      UpperCamelCase__     :    Any  )     ->	str:



					'''simple docstring'''




					_snake_case													=			np.array(a__  )
					_snake_case													=			np.array(a__  )
					_snake_case													=			en_sentvecs.shape[0]

					# mean centering
					_snake_case													=			en_sentvecs - np.mean(a__    ,      axis=0  )
					_snake_case													=			in_sentvecs - np.mean(a__    ,      axis=0  )

					_snake_case													=			cdist(a__    ,      a__    ,      'cosine'  )
					_snake_case													=			np.array(range(a__  )  )
					_snake_case													=			sim.argsort(axis=1  )[:, :10]
					_snake_case													=			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   ):




					def 		lowerCAmelCase     (						self					)						->							Union[str, Any]:
										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_					)						->							int:
										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\"]'					)










def   lowerCamelCase__       (       UpperCamelCase__     :    Tuple    ,      UpperCamelCase__     :    Optional[int]  )     ->	Tuple:



					'''simple docstring'''




					_snake_case													=			[0 for i in range(r + 1  )]
					# nc0 = 1
					_snake_case													=			1
					for i in range(1    ,      n + 1  ):
										# to compute current row from previous row.
										_snake_case													=			min(UpperCamelCase__    ,      UpperCamelCase__  )
										while j > 0:
															c[j] += c[j - 1]
															j -= 1
					return c[r]




print(binomial_coefficient(n=10, r=5))



