

import re
import string

import numpy as np

import datasets


UpperCAmelCase__ :     List[str]				    =	'\nReturns the rate at which the input predicted strings exactly match their references, ignoring any strings input as part of the regexes_to_ignore list.\n'

UpperCAmelCase__ :     Optional[Any]				    =	'\nArgs:\n    predictions: List of predicted texts.\n    references: List of reference texts.\n    regexes_to_ignore: List, defaults to None. Regex expressions of characters to\n        ignore when calculating the exact matches. Note: these regexes are removed\n        from the input data before the changes based on the options below (e.g. ignore_case,\n        ignore_punctuation, ignore_numbers) are applied.\n    ignore_case: Boolean, defaults to False. If true, turns everything\n        to lowercase so that capitalization differences are ignored.\n    ignore_punctuation: Boolean, defaults to False. If true, removes all punctuation before\n        comparing predictions and references.\n    ignore_numbers: Boolean, defaults to False. If true, removes all punctuation before\n        comparing predictions and references.\nReturns:\n    exact_match: Dictionary containing exact_match rate. Possible values are between 0.0 and 100.0, inclusive.\nExamples:\n    >>> exact_match = datasets.load_metric("exact_match")\n    >>> refs = ["the cat", "theater", "YELLING", "agent007"]\n    >>> preds = ["cat?", "theater", "yelling", "agent"]\n    >>> results = exact_match.compute(references=refs, predictions=preds)\n    >>> print(round(results["exact_match"], 1))\n    25.0\n\n    >>> exact_match = datasets.load_metric("exact_match")\n    >>> refs = ["the cat", "theater", "YELLING", "agent007"]\n    >>> preds = ["cat?", "theater", "yelling", "agent"]\n    >>> results = exact_match.compute(references=refs, predictions=preds, regexes_to_ignore=["the ", "yell"], ignore_case=True, ignore_punctuation=True)\n    >>> print(round(results["exact_match"], 1))\n    50.0\n\n\n    >>> exact_match = datasets.load_metric("exact_match")\n    >>> refs = ["the cat", "theater", "YELLING", "agent007"]\n    >>> preds = ["cat?", "theater", "yelling", "agent"]\n    >>> results = exact_match.compute(references=refs, predictions=preds, regexes_to_ignore=["the ", "yell", "YELL"], ignore_case=True, ignore_punctuation=True)\n    >>> print(round(results["exact_match"], 1))\n    75.0\n\n    >>> exact_match = datasets.load_metric("exact_match")\n    >>> refs = ["the cat", "theater", "YELLING", "agent007"]\n    >>> preds = ["cat?", "theater", "yelling", "agent"]\n    >>> results = exact_match.compute(references=refs, predictions=preds, regexes_to_ignore=["the ", "yell", "YELL"], ignore_case=True, ignore_punctuation=True, ignore_numbers=True)\n    >>> print(round(results["exact_match"], 1))\n    100.0\n\n    >>> exact_match = datasets.load_metric("exact_match")\n    >>> refs = ["The cat sat on the mat.", "Theaters are great.", "It\'s like comparing oranges and apples."]\n    >>> preds = ["The cat sat on the mat?", "Theaters are great.", "It\'s like comparing apples and oranges."]\n    >>> results = exact_match.compute(references=refs, predictions=preds)\n    >>> print(round(results["exact_match"], 1))\n    33.3\n\n'

UpperCAmelCase__ :     Union[str, Any]				    =	'\n'







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







  """simple docstring"""




  def  _lowercase      (			self    : Optional[int]		)					->int:
        """simple docstring"""







        return datasets.MetricInfo(
            description=_DESCRIPTION				,				citation=_CITATION				,				inputs_description=_KWARGS_DESCRIPTION				,				features=datasets.Features(
                {
                    """predictions""": datasets.Value("""string"""				,				id="""sequence"""		),
                    """references""": datasets.Value("""string"""				,				id="""sequence"""		),
                }		)				,				reference_urls=[]				,				)




  def  _lowercase      (			self    : Optional[Any]				,				UpperCAmelCase__    : Optional[Any]				,				UpperCAmelCase__    : Tuple				,				UpperCAmelCase__    : int=None				,				UpperCAmelCase__    : Optional[int]=False				,				UpperCAmelCase__    : Dict=False				,				UpperCAmelCase__    : Union[str, Any]=False				,				)					->Optional[int]:
        """simple docstring"""







        if regexes_to_ignore is not None:
              for s in regexes_to_ignore:
                    SCREAMING_SNAKE_CASE :      int       =   np.array([re.sub(UpperCamelCase__				,				""""""				,				UpperCamelCase__		) for x in predictions]		)
                    SCREAMING_SNAKE_CASE :      List[Any]       =   np.array([re.sub(UpperCamelCase__				,				""""""				,				UpperCamelCase__		) for x in references]		)
        else:
              SCREAMING_SNAKE_CASE :      Optional[Any]       =   np.asarray(UpperCamelCase__		)
              SCREAMING_SNAKE_CASE :      str       =   np.asarray(UpperCamelCase__		)

        if ignore_case:
              SCREAMING_SNAKE_CASE :      Dict       =   np.char.lower(UpperCamelCase__		)
              SCREAMING_SNAKE_CASE :      List[str]       =   np.char.lower(UpperCamelCase__		)

        if ignore_punctuation:
              SCREAMING_SNAKE_CASE :      Optional[int]       =   string.punctuation.maketrans(""""""				,				""""""				,				string.punctuation		)
              SCREAMING_SNAKE_CASE :      List[str]       =   np.char.translate(UpperCamelCase__				,				table=UpperCamelCase__		)
              SCREAMING_SNAKE_CASE :      List[Any]       =   np.char.translate(UpperCamelCase__				,				table=UpperCamelCase__		)

        if ignore_numbers:
              SCREAMING_SNAKE_CASE :      Any       =   string.digits.maketrans(""""""				,				""""""				,				string.digits		)
              SCREAMING_SNAKE_CASE :      Tuple       =   np.char.translate(UpperCamelCase__				,				table=UpperCamelCase__		)
              SCREAMING_SNAKE_CASE :      Union[str, Any]       =   np.char.translate(UpperCamelCase__				,				table=UpperCamelCase__		)

        SCREAMING_SNAKE_CASE :      Any       =   predictions == references

        return {"exact_match": np.mean(UpperCamelCase__		) * 1_0_0}







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


UpperCAmelCase__ :     Dict				    =    logging.get_logger(__name__)

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







class        a__       (   UpperCAmelCase       ):







  """simple docstring"""




  UpperCAmelCase__      : Any			       ="""gpt_neox_japanese"""


  def __init__(			self    : Any				,				UpperCAmelCase__    : Any=3_2_0_0_0				,				UpperCAmelCase__    : Dict=2_5_6_0				,				UpperCAmelCase__    : List[str]=3_2				,				UpperCAmelCase__    : Optional[int]=3_2				,				UpperCAmelCase__    : List[str]=4				,				UpperCAmelCase__    : List[str]="gelu"				,				UpperCAmelCase__    : Optional[int]=1.00				,				UpperCAmelCase__    : List[Any]=1_0_0_0_0				,				UpperCAmelCase__    : Tuple=2_0_4_8				,				UpperCAmelCase__    : Optional[int]=0.02				,				UpperCAmelCase__    : Dict=1e-5				,				UpperCAmelCase__    : Dict=True				,				UpperCAmelCase__    : Tuple=3_1_9_9_6				,				UpperCAmelCase__    : Tuple=3_1_9_9_9				,				UpperCAmelCase__    : Dict=0.1				,				UpperCAmelCase__    : Union[str, Any]=0.0				,				**UpperCAmelCase__    : Optional[Any]				,				)					->Optional[Any]:
        """simple docstring"""







        super().__init__(bos_token_id=UpperCAmelCase__				,				eos_token_id=UpperCAmelCase__				,				**UpperCAmelCase__		)
        SCREAMING_SNAKE_CASE :      List[str]       =   vocab_size
        SCREAMING_SNAKE_CASE :      List[str]       =   max_position_embeddings
        SCREAMING_SNAKE_CASE :      Tuple       =   hidden_size
        SCREAMING_SNAKE_CASE :      Union[str, Any]       =   num_hidden_layers
        SCREAMING_SNAKE_CASE :      Optional[int]       =   num_attention_heads
        SCREAMING_SNAKE_CASE :      Any       =   intermediate_multiple_size
        SCREAMING_SNAKE_CASE :      Tuple       =   hidden_act
        SCREAMING_SNAKE_CASE :      Any       =   rotary_pct
        SCREAMING_SNAKE_CASE :      Tuple       =   rotary_emb_base
        SCREAMING_SNAKE_CASE :      Union[str, Any]       =   initializer_range
        SCREAMING_SNAKE_CASE :      Optional[Any]       =   layer_norm_eps
        SCREAMING_SNAKE_CASE :      str       =   use_cache
        SCREAMING_SNAKE_CASE :      Any       =   attention_dropout
        SCREAMING_SNAKE_CASE :      str       =   hidden_dropout




