






'''simple docstring'''







import faiss  # noqa: F401 # Here to have a nice missing dependency error message early on
import numpy  # noqa: F401 # Here to have a nice missing dependency error message early on
import requests  # noqa: F401 # Here to have a nice missing dependency error message early on
import sklearn  # noqa: F401 # Here to have a nice missing dependency error message early on
import tqdm  # noqa: F401 # Here to have a nice missing dependency error message early on
from mauve import compute_mauve  # From: mauve-text

import datasets


_A     :      str   					="\\n@inproceedings{pillutla-etal:mauve:neurips2021,\n  title={MAUVE: Measuring the Gap Between Neural Text and Human Text using Divergence Frontiers},\n  author={Pillutla, Krishna and Swayamdipta, Swabha and Zellers, Rowan and Thickstun, John and Welleck, Sean and Choi, Yejin and Harchaoui, Zaid},\n  booktitle = {NeurIPS},\n  year      = {2021}\n}\n\n"

_A     :      Tuple   					="\\nMAUVE is a library built on PyTorch and HuggingFace Transformers to measure the gap between neural text and human text with the eponymous MAUVE measure.\n\nMAUVE summarizes both Type I and Type II errors measured softly using Kullback–Leibler (KL) divergences.\n\nFor details, see the MAUVE paper: https://arxiv.org/abs/2102.01454 (Neurips, 2021).\n\nThis metrics is a wrapper around the official implementation of MAUVE:\nhttps://github.com/krishnap25/mauve\n"

_A     :      Optional[int]   					="\nCalculates MAUVE scores between two lists of generated text and reference text.\nArgs:\n    predictions: list of generated text to score. Each predictions\n        should be a string with tokens separated by spaces.\n    references: list of reference for each prediction. Each\n        reference should be a string with tokens separated by spaces.\nOptional Args:\n    num_buckets: the size of the histogram to quantize P and Q. Options: 'auto' (default) or an integer\n    pca_max_data: the number data points to use for PCA dimensionality reduction prior to clustering. If -1, use all the data. Default -1\n    kmeans_explained_var: amount of variance of the data to keep in dimensionality reduction by PCA. Default 0.9\n    kmeans_num_redo: number of times to redo k-means clustering (the best objective is kept). Default 5\n    kmeans_max_iter: maximum number of k-means iterations. Default 500\n    featurize_model_name: name of the model from which features are obtained. Default 'gpt2-large' Use one of ['gpt2', 'gpt2-medium', 'gpt2-large', 'gpt2-xl'].\n    device_id: Device for featurization. Supply a GPU id (e.g. 0 or 3) to use GPU. If no GPU with this id is found, use CPU\n    max_text_length: maximum number of tokens to consider. Default 1024\n    divergence_curve_discretization_size: Number of points to consider on the divergence curve. Default 25\n    mauve_scaling_factor: \"c\" from the paper. Default 5.\n    verbose: If True (default), print running time updates\n    seed: random seed to initialize k-means cluster assignments.\nReturns:\n    mauve: MAUVE score, a number between 0 and 1. Larger values indicate that P and Q are closer,\n    frontier_integral: Frontier Integral, a number between 0 and 1. Smaller values indicate that P and Q are closer,\n    divergence_curve: a numpy.ndarray of shape (m, 2); plot it with matplotlib to view the divergence curve,\n    p_hist: a discrete distribution, which is a quantized version of the text distribution p_text,\n    q_hist: same as above, but with q_text.\nExamples:\n\n    >>> # faiss segfaults in doctest for some reason, so the .compute call is not tested with doctest\n    >>> import datasets\n    >>> mauve = datasets.load_metric('mauve')\n    >>> predictions = [\"hello there\", \"general kenobi\"]\n    >>> references = [\"hello there\", \"general kenobi\"]\n    >>> out = mauve.compute(predictions=predictions, references=references) # doctest: +SKIP\n    >>> print(out.mauve) # doctest: +SKIP\n    1.0\n"

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




							def 		lowerCamelCase_    (							self:    Any					):
														return datasets.MetricInfo(
														    description=_DESCRIPTION      ,							citation=_CITATION      ,							homepage="""https://github.com/krishnap25/mauve"""      ,							inputs_description=_KWARGS_DESCRIPTION      ,							features=datasets.Features(
														        {
														            """predictions""": datasets.Value("""string"""      ,							id="""sequence"""					),
														            """references""": datasets.Value("""string"""      ,							id="""sequence"""					),
														        }					)      ,							codebase_urls=["""https://github.com/krishnap25/mauve"""]      ,							reference_urls=[
														        """https://arxiv.org/abs/2102.01454""",
														        """https://github.com/krishnap25/mauve""",
														    ]      ,							)




							def 		lowerCamelCase_    (							self:    Union[str, Any]      ,							UpperCamelCase__:    str      ,							UpperCamelCase__:    Optional[int]      ,							UpperCamelCase__:    str=None      ,							UpperCamelCase__:    Union[str, Any]=None      ,							UpperCamelCase__:    List[str]=None      ,							UpperCamelCase__:    int=None      ,							UpperCamelCase__:    Tuple="auto"      ,							UpperCamelCase__:    List[Any]=-1      ,							UpperCamelCase__:    Optional[Any]=0.9      ,							UpperCamelCase__:    Dict=5      ,							UpperCamelCase__:    List[Any]=500      ,							UpperCamelCase__:    str="gpt2-large"      ,							UpperCamelCase__:    List[str]=-1      ,							UpperCamelCase__:    int=1_024      ,							UpperCamelCase__:    str=25      ,							UpperCamelCase__:    Dict=5      ,							UpperCamelCase__:    str=True      ,							UpperCamelCase__:    Union[str, Any]=25      ,							):
														lowerCamelCase__ :     Dict	  =	compute_mauve(
														    p_text=A__      ,							q_text=A__      ,							p_features=A__      ,							q_features=A__      ,							p_tokens=A__      ,							q_tokens=A__      ,							num_buckets=A__      ,							pca_max_data=A__      ,							kmeans_explained_var=A__      ,							kmeans_num_redo=A__      ,							kmeans_max_iter=A__      ,							featurize_model_name=A__      ,							device_id=A__      ,							max_text_length=A__      ,							divergence_curve_discretization_size=A__      ,							mauve_scaling_factor=A__      ,							verbose=A__      ,							seed=A__      ,							)
														return out









'''simple docstring'''







from math import asin, atan, cos, radians, sin, sqrt, tan

_A     :      List[str]   					=637_8137.0
_A     :      Dict   					=635_6752.31_4245
_A     :      int   					=6_378_137





def 			SCREAMING_SNAKE_CASE_	(UpperCamelCase    ,      UpperCamelCase    ,      UpperCamelCase    ,      UpperCamelCase				)				->	float:
							lowerCamelCase__ :     str	  =	(AXIS_A - AXIS_B) / AXIS_A
							lowerCamelCase__ :     Dict	  =	atan((1 - flattening) * tan(radians(UpperCamelCase				)				)				)
							lowerCamelCase__ :     Dict	  =	atan((1 - flattening) * tan(radians(UpperCamelCase				)				)				)
							lowerCamelCase__ :     Optional[Any]	  =	radians(UpperCamelCase				)
							lowerCamelCase__ :     List[Any]	  =	radians(UpperCamelCase				)
							# Equation
							lowerCamelCase__ :     Tuple	  =	sin((phi_a - phi_a) / 2				)
							lowerCamelCase__ :     List[Any]	  =	sin((lambda_a - lambda_a) / 2				)
							# Square both values
							sin_sq_phi *= sin_sq_phi
							sin_sq_lambda *= sin_sq_lambda
							lowerCamelCase__ :     Tuple	  =	sqrt(sin_sq_phi + (cos(UpperCamelCase				) * cos(UpperCamelCase				) * sin_sq_lambda)				)
							return 2 * RADIUS * asin(UpperCamelCase				)


if __name__ == "__main__":
			import doctest

			doctest.testmod()

