



'''simple docstring'''

from typing import List

import jiwer
import jiwer.transforms as tr
from packaging import version

import datasets
from datasets.config import PY_VERSION


if PY_VERSION < version.parse('3.8'):
				import importlib_metadata
else:
				import importlib.metadata as importlib_metadata


UpperCAmelCase     		=   ''


if version.parse(importlib_metadata.version('jiwer')) < version.parse('2.3.0'):

				class __snake_case(				tr.AbstractTransform ):


										'''simple docstring'''



										def __init__( self     ,	A_ = " "				)     ->     int:
											lowerCAmelCase   =     sentence_delimiter


										def     __snake_case   ( self     ,	A_				)     ->     Dict:
											return list(A_				)




										def     __snake_case   ( self     ,	A_				)     ->     List[str]:
											lowerCAmelCase   =     []
											for sent_idx, sentence in enumerate(A_				):
												chars.extend(self.process_string(A_				)				)
												if self.sentence_delimiter is not None and self.sentence_delimiter != "" and sent_idx < len(A_				) - 1:
													chars.append(self.sentence_delimiter				)
											return chars







				UpperCAmelCase     		=   tr.Compose(
				    [tr.RemoveMultipleSpaces(), tr.Strip(), SentencesToListOfCharacters(SENTENCE_DELIMITER)]
				)
else:
				UpperCAmelCase     		=   tr.Compose(
				    [
				        tr.RemoveMultipleSpaces(),
				        tr.Strip(),
				        tr.ReduceToSingleSentence(SENTENCE_DELIMITER),
				        tr.ReduceToListOfListOfChars(),
				    ]
				)


UpperCAmelCase     		=   '\\n@inproceedings{inproceedings,\n    author = {Morris, Andrew and Maier, Viktoria and Green, Phil},\n    year = {2004},\n    month = {01},\n    pages = {},\n    title = {From WER and RIL to MER and WIL: improved evaluation measures for connected speech recognition.}\n}\n'

UpperCAmelCase     		=   '\\nCharacter error rate (CER) is a common metric of the performance of an automatic speech recognition system.\n\nCER is similar to Word Error Rate (WER), but operates on character instead of word. Please refer to docs of WER for further information.\n\nCharacter error rate can be computed as:\n\nCER = (S + D + I) / N = (S + D + I) / (S + D + C)\n\nwhere\n\nS is the number of substitutions,\nD is the number of deletions,\nI is the number of insertions,\nC is the number of correct characters,\nN is the number of characters in the reference (N=S+D+C).\n\nCER\'s output is not always a number between 0 and 1, in particular when there is a high number of insertions. This value is often associated to the percentage of characters that were incorrectly predicted. The lower the value, the better the\nperformance of the ASR system with a CER of 0 being a perfect score.\n'

UpperCAmelCase     		=   '\nComputes CER score of transcribed segments against references.\nArgs:\n    references: list of references for each speech input.\n    predictions: list of transcribtions to score.\n    concatenate_texts: Whether or not to concatenate sentences before evaluation, set to True for more accurate result.\nReturns:\n    (float): the character error rate\n\nExamples:\n\n    >>> predictions = ["this is the prediction", "there is an other sample"]\n    >>> references = ["this is the reference", "there is another one"]\n    >>> cer = datasets.load_metric("cer")\n    >>> cer_score = cer.compute(predictions=predictions, references=references)\n    >>> print(cer_score)\n    0.34146341463414637\n'

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


						'''simple docstring'''



						def     __snake_case   ( self				)     ->     List[str]:
							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"""				),
							        }				)     ,	codebase_urls=["""https://github.com/jitsi/jiwer/"""]     ,	reference_urls=[
							        """https://en.wikipedia.org/wiki/Word_error_rate""",
							        """https://sites.google.com/site/textdigitisation/qualitymeasures/computingerrorrates""",
							    ]     ,	)




						def     __snake_case   ( self     ,	A_     ,	A_     ,	A_=False				)     ->     int:
							if concatenate_texts:
								return jiwer.compute_measures(
								    A_     ,	A_     ,	truth_transform=A_     ,	hypothesis_transform=A_     ,	)["wer"]

							lowerCAmelCase   =     0
							lowerCAmelCase   =     0
							for prediction, reference in zip(A_     ,	A_				):
								lowerCAmelCase   =     jiwer.compute_measures(
								    A_     ,	A_     ,	truth_transform=A_     ,	hypothesis_transform=A_     ,	)
								incorrect += measures["substitutions"] + measures["deletions"] + measures["insertions"]
								total += measures["substitutions"] + measures["deletions"] + measures["hits"]

							return incorrect / total




'''simple docstring'''

from typing import List, Optional, Union

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


UpperCAmelCase     		=   logging.get_logger(__name__)

UpperCAmelCase     		=   {
    'huggingface/time-series-transformer-tourism-monthly': (
        'https://huggingface.co/huggingface/time-series-transformer-tourism-monthly/resolve/main/config.json'
    ),
    # See all TimeSeriesTransformer models at https://huggingface.co/models?filter=time_series_transformer
}

class __snake_case(				_lowerCAmelCase ):


						'''simple docstring'''



						UpperCAmelCase							:   List[Any]									=		"time_series_transformer"
						UpperCAmelCase							:   int									=		{
						    "hidden_size": "d_model",
						    "num_attention_heads": "encoder_attention_heads",
						    "num_hidden_layers": "encoder_layers",
						}


						def __init__( self     ,	A_ = None     ,	A_ = None     ,	A_ = "student_t"     ,	A_ = "nll"     ,	A_ = 1     ,	A_ = [1, 2, 3, 4, 5, 6, 7]     ,	A_ = "mean"     ,	A_ = 0     ,	A_ = 0     ,	A_ = 0     ,	A_ = 0     ,	A_ = None     ,	A_ = None     ,	A_ = 32     ,	A_ = 32     ,	A_ = 2     ,	A_ = 2     ,	A_ = 2     ,	A_ = 2     ,	A_ = True     ,	A_ = "gelu"     ,	A_ = 64     ,	A_ = 0.1     ,	A_ = 0.1     ,	A_ = 0.1     ,	A_ = 0.1     ,	A_ = 0.1     ,	A_ = 100     ,	A_ = 0.0_2     ,	A_=True     ,	**A_     ,	)     ->     Optional[Any]:
							# time series specific configuration
							lowerCAmelCase   =     prediction_length
							lowerCAmelCase   =     context_length or prediction_length
							lowerCAmelCase   =     distribution_output
							lowerCAmelCase   =     loss
							lowerCAmelCase   =     input_size
							lowerCAmelCase   =     num_time_features
							lowerCAmelCase   =     lags_sequence
							lowerCAmelCase   =     scaling
							lowerCAmelCase   =     num_dynamic_real_features
							lowerCAmelCase   =     num_static_real_features
							lowerCAmelCase   =     num_static_categorical_features
							if cardinality and num_static_categorical_features > 0:
								if len(A_				) != num_static_categorical_features:
									raise ValueError(
									    """The cardinality should be a list of the same length as `num_static_categorical_features`"""				)
								lowerCAmelCase   =     cardinality
							else:
								lowerCAmelCase   =     [0]
							if embedding_dimension and num_static_categorical_features > 0:
								if len(A_				) != num_static_categorical_features:
									raise ValueError(
									    """The embedding dimension should be a list of the same length as `num_static_categorical_features`"""				)
								lowerCAmelCase   =     embedding_dimension
							else:
								lowerCAmelCase   =     [min(50     ,	(cat + 1) // 2				) for cat in self.cardinality]
							lowerCAmelCase   =     num_parallel_samples

							# Transformer architecture configuration
							lowerCAmelCase   =     input_size * len(A_				) + self._number_of_features
							lowerCAmelCase   =     d_model
							lowerCAmelCase   =     encoder_attention_heads
							lowerCAmelCase   =     decoder_attention_heads
							lowerCAmelCase   =     encoder_ffn_dim
							lowerCAmelCase   =     decoder_ffn_dim
							lowerCAmelCase   =     encoder_layers
							lowerCAmelCase   =     decoder_layers

							lowerCAmelCase   =     dropout
							lowerCAmelCase   =     attention_dropout
							lowerCAmelCase   =     activation_dropout
							lowerCAmelCase   =     encoder_layerdrop
							lowerCAmelCase   =     decoder_layerdrop

							lowerCAmelCase   =     activation_function
							lowerCAmelCase   =     init_std

							lowerCAmelCase   =     use_cache

							super().__init__(is_encoder_decoder=A_     ,	**A_				)




						@property
						def     __snake_case   ( self				)     ->     int:
							return (
							    sum(self.embedding_dimension				)
							    + self.num_dynamic_real_features
							    + self.num_time_features
							    + self.num_static_real_features
							    + self.input_size * 2  # the log1p(abs(loc)) and log(scale) features
							)