
"""simple docstring"""





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

import datasets


SCREAMING_SNAKE_CASE_												= '''\
    @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},
}
'''

SCREAMING_SNAKE_CASE_												= '''\
    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.
'''

SCREAMING_SNAKE_CASE_												= '''
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__ ( A__      ,      A__		)		->			List[Any]:





   '''simple docstring'''




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







def   A__ ( A__      ,      A__		)		->			Optional[Any]:





   '''simple docstring'''




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







def   A__ ( A__      ,      A__		)		->			Dict:





   '''simple docstring'''




   _UpperCAmelCase         =      np.array(UpperCAmelCase__		)
   _UpperCAmelCase         =      np.array(UpperCAmelCase__		)
   _UpperCAmelCase         =      en_sentvecs.shape[0]

   # mean centering
   _UpperCAmelCase         =      en_sentvecs - np.mean(UpperCAmelCase__      ,      axis=0		)
   _UpperCAmelCase         =      in_sentvecs - np.mean(UpperCAmelCase__      ,      axis=0		)

   _UpperCAmelCase         =      cdist(UpperCAmelCase__      ,      UpperCAmelCase__      ,      "cosine"		)
   _UpperCAmelCase         =      np.array(range(UpperCAmelCase__		)		)
   _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 				a ( datasets.Metric							):





       """simple docstring"""







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



from ...configuration_utils import PretrainedConfig
from ...utils import logging


lowercase   =	logging.get_logger(__name__)

lowercase   =	{
    '''abeja/gpt-neox-japanese-2.7b''': '''https://huggingface.co/abeja/gpt-neox-japanese-2.7b/resolve/main/config.json''',
}





class    __A(					UpperCAmelCase							):
					SCREAMING_SNAKE_CASE           =     '''gpt_neox_japanese'''

					def __init__(						self       :  Union[str, Any] ,       __UpperCamelCase       :  str=3_2_0_0_0 ,       __UpperCamelCase       :  List[Any]=2_5_6_0 ,       __UpperCamelCase       :  Any=3_2 ,       __UpperCamelCase       :  List[str]=3_2 ,       __UpperCamelCase       :  List[str]=4 ,       __UpperCamelCase       :  Dict="gelu" ,       __UpperCamelCase       :  List[Any]=1.00 ,       __UpperCamelCase       :  Any=1_0_0_0_0 ,       __UpperCamelCase       :  Optional[Any]=2_0_4_8 ,       __UpperCamelCase       :  Tuple=0.02 ,       __UpperCamelCase       :  List[str]=1E-5 ,       __UpperCamelCase       :  str=True ,       __UpperCamelCase       :  str=3_1_9_9_6 ,       __UpperCamelCase       :  int=3_1_9_9_9 ,       __UpperCamelCase       :  Optional[Any]=0.1 ,       __UpperCamelCase       :  Tuple=0.0 ,       **__UpperCamelCase       :  List[str] ,       ):
												super().__init__(bos_token_id=__UpperCamelCase ,       eos_token_id=__UpperCamelCase ,       **__UpperCamelCase )
												lowerCamelCase_					=       vocab_size
												lowerCamelCase_					=       max_position_embeddings
												lowerCamelCase_					=       hidden_size
												lowerCamelCase_					=       num_hidden_layers
												lowerCamelCase_					=       num_attention_heads
												lowerCamelCase_					=       intermediate_multiple_size
												lowerCamelCase_					=       hidden_act
												lowerCamelCase_					=       rotary_pct
												lowerCamelCase_					=       rotary_emb_base
												lowerCamelCase_					=       initializer_range
												lowerCamelCase_					=       layer_norm_eps
												lowerCamelCase_					=       use_cache
												lowerCamelCase_					=       attention_dropout
												lowerCamelCase_					=       hidden_dropout





