
import re
import string

import numpy as np

import datasets


__a  			=					'\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'

__a  			=					'\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'

__a  			=					'\n'
@datasets.utils.file_utils.add_start_docstrings(_DESCRIPTION ,						_KWARGS_DESCRIPTION							)
class  lowercase__(				datasets.Metric							):



	"""simple docstring"""




	def 						_lowercase  (       self  :			str       )       ->     Optional[int]:
					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[int]       ,							SCREAMING_SNAKE_CASE_  :			Optional[Any]       ,							SCREAMING_SNAKE_CASE_  :			Tuple       ,							SCREAMING_SNAKE_CASE_  :			Optional[Any]=None       ,							SCREAMING_SNAKE_CASE_  :			Optional[Any]=False       ,							SCREAMING_SNAKE_CASE_  :			int=False       ,							SCREAMING_SNAKE_CASE_  :			Tuple=False       ,							)       ->     Dict:






					if regexes_to_ignore is not None:
									for s in regexes_to_ignore:
													lowercase_       =					np.array([re.sub(UpperCamelCase__       ,							''''''       ,							UpperCamelCase__       ) for x in predictions]       )
													lowercase_       =					np.array([re.sub(UpperCamelCase__       ,							''''''       ,							UpperCamelCase__       ) for x in references]       )
					else:
									lowercase_       =					np.asarray(UpperCamelCase__       )
									lowercase_       =					np.asarray(UpperCamelCase__       )

					if ignore_case:
									lowercase_       =					np.char.lower(UpperCamelCase__       )
									lowercase_       =					np.char.lower(UpperCamelCase__       )

					if ignore_punctuation:
									lowercase_       =					string.punctuation.maketrans(''''''       ,							''''''       ,							string.punctuation       )
									lowercase_       =					np.char.translate(UpperCamelCase__       ,							table=UpperCamelCase__       )
									lowercase_       =					np.char.translate(UpperCamelCase__       ,							table=UpperCamelCase__       )

					if ignore_numbers:
									lowercase_       =					string.digits.maketrans(''''''       ,							''''''       ,							string.digits       )
									lowercase_       =					np.char.translate(UpperCamelCase__       ,							table=UpperCamelCase__       )
									lowercase_       =					np.char.translate(UpperCamelCase__       ,							table=UpperCamelCase__       )

					lowercase_       =					predictions == references

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






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


__lowerCAmelCase			:     List[Any]           =   logging.get_logger(__name__)

__lowerCAmelCase			:     int           =   {
    'microsoft/biogpt': 'https://huggingface.co/microsoft/biogpt/resolve/main/config.json',
    # See all BioGPT models at https://huggingface.co/models?filter=biogpt
}




class        UpperCAmelCase_			( _A     ):


  '''simple docstring'''







  a__           =		"""biogpt"""
  def __init__( self			: List[str]			,							UpperCamelCase__			: Optional[Any]=4_2384			,							UpperCamelCase__			: Union[str, Any]=1024			,							UpperCamelCase__			: Any=24			,							UpperCamelCase__			: Union[str, Any]=16			,							UpperCamelCase__			: Tuple=4096			,							UpperCamelCase__			: Tuple="gelu"			,							UpperCamelCase__			: Dict=0.1			,							UpperCamelCase__			: Dict=0.1			,							UpperCamelCase__			: str=1024			,							UpperCamelCase__			: Any=0.02			,							UpperCamelCase__			: List[str]=1E-12			,							UpperCamelCase__			: Dict=True			,							UpperCamelCase__			: Optional[int]=True			,							UpperCamelCase__			: Union[str, Any]=0.0			,							UpperCamelCase__			: Any=0.0			,							UpperCamelCase__			: List[str]=1			,							UpperCamelCase__			: Dict=0			,							UpperCamelCase__			: List[str]=2			,							**UpperCamelCase__			: Optional[int]			,							)			->	Tuple:







    """simple docstring"""






    __magic_name__				     =       vocab_size
    __magic_name__				     =       max_position_embeddings
    __magic_name__				     =       hidden_size
    __magic_name__				     =       num_hidden_layers
    __magic_name__				     =       num_attention_heads
    __magic_name__				     =       intermediate_size
    __magic_name__				     =       hidden_act
    __magic_name__				     =       hidden_dropout_prob
    __magic_name__				     =       attention_probs_dropout_prob
    __magic_name__				     =       initializer_range
    __magic_name__				     =       layer_norm_eps
    __magic_name__				     =       scale_embedding
    __magic_name__				     =       use_cache
    __magic_name__				     =       layerdrop
    __magic_name__				     =       activation_dropout
    super().__init__(pad_token_id=UpperCamelCase__			,							bos_token_id=UpperCamelCase__			,							eos_token_id=UpperCamelCase__			,							**UpperCamelCase__    )

