






import numpy as np







def 						a_      (__A			)							->	Dict:



					"""simple docstring"""
					__a			, __a				:	Dict			=				a.shape
					__a				:	List[Any]			=				min(__A							,					__A			)
					__a				:	Optional[int]			=				np.eye(__A			)
					__a				:	List[Any]			=				a.copy()

					for k in range(t - 1			):
										# select a column of modified matrix A':
										__a				:	Tuple			=				r[k:, [k]]
										# construct first basis vector
										__a				:	List[Any]			=				np.zeros_like(__A			)
										__a				:	Optional[int]			=				1.0
										# determine scaling factor
										__a				:	Dict			=				np.linalg.norm(__A			)
										# construct vector v for Householder reflection
										__a				:	List[str]			=				x + np.sign(x[0]			) * alpha * ea
										v /= np.linalg.norm(__A			)

										# construct the Householder matrix
										__a				:	Optional[int]			=				np.eye(m - k			) - 2.0 * v @ v.T
										# pad with ones and zeros as necessary
										__a				:	Optional[Any]			=				np.block([[np.eye(__A			), np.zeros((k, m - k)			)], [np.zeros((m - k, k)			), q_k]]			)

										__a				:	List[Any]			=				q @ q_k.T
										__a				:	Dict			=				q_k @ r

					return q, r


if __name__ == "__main__":
			import doctest

			doctest.testmod()













import argparse
import json
import re
import string
import sys
from collections import Counter







def 						a_      (__A			)							->	Optional[Any]:



					"""simple docstring"""

					def remove_articles(__A			):
										return re.sub(r"\b(a|an|the)\b"							,					" "							,					__A			)

					def white_space_fix(__A			):
										return " ".join(text.split()			)

					def remove_punc(__A			):
										__a				:	Union[str, Any]			=				set(string.punctuation			)
										return "".join(ch for ch in text if ch not in exclude			)

					def lower(__A			):
										return text.lower()

					return white_space_fix(remove_articles(remove_punc(lower(__A			)			)			)			)







def 						a_      (__A							,					__A			)							->	Union[str, Any]:



					"""simple docstring"""
					__a				:	str			=				normalize_answer(__A			).split()
					__a				:	Dict			=				normalize_answer(__A			).split()
					__a				:	List[Any]			=				Counter(__A			) & Counter(__A			)
					__a				:	List[Any]			=				sum(common.values()			)
					if num_same == 0:
										return 0
					__a				:	Optional[Any]			=				1.0 * num_same / len(__A			)
					__a				:	int			=				1.0 * num_same / len(__A			)
					__a				:	List[str]			=				(2 * precision * recall) / (precision + recall)
					return fa







def 						a_      (__A							,					__A			)							->	Dict:



					"""simple docstring"""
					return normalize_answer(__A			) == normalize_answer(__A			)







def 						a_      (__A							,					__A							,					__A			)							->	Optional[Any]:



					"""simple docstring"""
					__a				:	str			=				[]
					for ground_truth in ground_truths:
										__a				:	Tuple			=				metric_fn(__A							,					__A			)
										scores_for_ground_truths.append(__A			)
					return max(__A			)







def 						a_      (__A							,					__A			)							->	Union[str, Any]:



					"""simple docstring"""
					__a				:	str			=				0
					for article in dataset:
										for paragraph in article["paragraphs"]:
															for qa in paragraph["qas"]:
																				total += 1
																				if qa["id"] not in predictions:
																									__a				:	str			=				"Unanswered question " + qa["id"] + " will receive score 0."
																									print(__A							,					file=sys.stderr			)
																									continue
																				__a				:	Any			=				[x["text"] for x in qa["answers"]]
																				__a				:	List[Any]			=				predictions[qa["id"]]
																				exact_match += metric_max_over_ground_truths(__A							,					__A							,					__A			)
																				fa += metric_max_over_ground_truths(__A							,					__A							,					__A			)

					__a				:	Any			=				100.0 * exact_match / total
					__a				:	List[Any]			=				100.0 * fa / total

					return {"exact_match": exact_match, "f1": fa}


if __name__ == "__main__":
			UpperCAmelCase__			 =	'''1.1'''
			UpperCAmelCase__			 =	argparse.ArgumentParser(description='''Evaluation for SQuAD ''' + expected_version)
			parser.add_argument('''dataset_file''', help='''Dataset file''')
			parser.add_argument('''prediction_file''', help='''Prediction File''')
			UpperCAmelCase__			 =	parser.parse_args()
			with open(args.dataset_file) as dataset_file:
						UpperCAmelCase__			 =	json.load(dataset_file)
						if dataset_json["version"] != expected_version:
									print(
									    '''Evaluation expects v-''' + expected_version + ''', but got dataset with v-''' + dataset_json['''version'''],
									    file=sys.stderr,
									)
						UpperCAmelCase__			 =	dataset_json['''data''']
			with open(args.prediction_file) as prediction_file:
						UpperCAmelCase__			 =	json.load(prediction_file)
			print(json.dumps(evaluate(dataset, predictions)))





