o Zwg&@s2ddlZddlZddlZddlZddlZddlZddZddZddZ dd Z d d Z d d Z ddZ ddZddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd>d/d0ZddlZdd1lmZd2d3Zd4d5Z d6d7Z!d8d9Z"d:d;Z#d0z-average..avg_func..r)axis)printlenrrarraytolist)datasetresultsr r r avg_func.s zaverage..avg_funcr )r!r+r r r average- r,cCs4dd}dd}dd}dd}|||||S) NcSstdd|S)Nz\b(a|an|the)\b )resubr r r r remove_articles8z)normalize_answer..remove_articlescSsd|S)Nr.)joinrr1r r r white_space_fix;r3z)normalize_answer..white_space_fixcs"ttjdfdd|DS)Nrc3s|] }|vr|VqdSNr )rchexcluder r @sz8normalize_answer..remove_punc..)setstring punctuationr4r1r r8r remove_punc>s z%normalize_answer..remove_punccSs|Sr6)lowerr1r r r r?Bznormalize_answer..lowerr )sr2r5r>r?r r r normalize_answer7s rBc Csdd}||}||}t|t|@}t|}t|dks(t|dkr.t||kS|dkr4dSd|t|}d|t|}d||||} | S)z%Compute F1 score between two strings.cSs|sgSt|Sr6)rBr)rAr r r _get_tokensJs zcompute_f1.._get_tokensrg?N) collectionsCountersumvaluesr&r) a_golda_predrCZ gold_toksZ pred_tokscommonZnum_same precisionZrecallf1r r r compute_f1Gs  rNcCstt|t|kS)z8Check whether two strings are equal up to normalization.N)rrB)rIrJr r r compute_exactcsrOcCs2dd|D}t|}|D] }||vrdSq dS)aVerify if any of the answers is present in the given context. Args: short_answers: list of short answers to look for in the context context: a paragraph to search for short answers Returns: true if any of the short answers is present in the context cSsg|]}t|qSr rB)rsar r r r"rr#z"exact_presence..TFNrP)rcontextZn_short_answersZ n_contextansr r r ris rcdtffdd }|S)Nreturncs|jdtkSr6) last_messagestripr?r&selfwordr r f|szoutput_begin_with..fboolr[r\r rZr output_begin_with{r`crT)NrUcs t|jt dkSr6)rrVrWr&rXrZr r r\s zoutput_end_with..fr]r_r rZr output_end_withrarbcr)Ncs|iSr6r Zpassagedatakeyr r r\r@zmake_as..fr rer\r rdr make_as rgcr)Ncs t|iSr6)r rcrdr r r\s zcut_and_make_as..fr rfr rdr cut_and_make_asrhric Cs0tddtdd|ddddddS)Nz{\d+rz {\d+ |}{r/r0replacesentr r r remove_citationss0rqc Cs(tddtdd|ddddS)Nz\[\d+rz \[\d+rj]rmror r r rqs(c Cst}g}|D]R}t|}||vrY||d}t|dkr<|dd}t|dkr<|d}|r<|t|||dd} t| dkrT|| dq|dqt ||fS)N[rrrr:r) r;strrr&rWisdigitaddrrlist) Zref_markZoutput_ref_spanrefZref_spannumZref_strZ ref_partsZ ref_id_partsZref_idZref_span_partsr r r match_documents$      r{csHttjdd}|ddtj}fddt|DS)zHGet the maximum memory available for the current GPU for loading models.ri@GBcsi|]}|qSr r )riZ max_memoryr r sz"get_max_memory..N)rtorchcuda mem_get_info device_countrange)Z free_in_GBZn_gpusr rr get_max_memorys  rcr)Ncs8tt|}t|dkr|dd}fdd|DS)Ncg|]}t|qSr rgrrpkeyr r r"z2each_make_as..function..)nltk sent_tokenizer r&rsentsrr r function  zeach_make_as..functionr rrr rr each_make_as rcr)Ncs8t|d}t|dkr|dd}fdd|DS)Nrrcrr rrrr r r"rz6each_par_make_as..function..)r rr&rrr r rrz"each_par_make_as..functionr rr rr each_par_make_asrrcr)NcsDtt|}|D]}td|}|rt|Sq tdS)Nz\[\d+\]r)rrr r/findallrg)rrrprefsrr r rs  zsentence..functionr rr rr sentencer-rcr)Nc(tt|}fdd|DddS)Ncrr rrrr r r"rz/sentences..function..rrrr rrr r rzsentences..functionr rr rr sentences rcr)Ncr)Ncrr rrrr r r"rz5three_sentences..function..rrrrr r rrz!three_sentences..functionr rr rr three_sentencesrrcCs"tt|}|D]}|SdS)Nrr)r rrpr r r first_sentencesrr_cCshg}|D])\}}|r|||n|}t|tr(|t|||dq|||fqt|S)N)sep)items isinstancedictextend flatten_dictr)dZ parent_keyrrkvnew_keyr r r rs r) BeautifulSoupc CsTt|d}|ddd}tdd|}|ddd dd d}i}|jd d d D]6}|jd dd d}|rD|jddnd}|jd dd }|} tdd| } | ddd d||<q0i} |jd dd D]3}|jd dd d}|r|jddnd}|jd dd }|r|jddnd} | ddd d| |<qp||| dS)N html.parserpz
rz]*>(.*?)z<\1>z
rr.z
divzcomponent-item)class_z component-keyspanTrWzcomponent-valuez{\1}zself-info-item)template components self_prompt) rfindZdecode_contentsrnr/r0rWfind_allget_text) input_strsoupZ p_contentrrrZkey_spanrZ value_divZ value_contentrvaluer r r parse_html_prompts.  rcCs6t|d}|djdd}|djdd}||fS)Nr destinationTr prompt_keyrrr)rrrrr r r parse_html_destinations rcCsJt|d}|djdd}|djdd}|djdd}|||fS)Nr model_typeTrmodelrr)rrr model_namerr r r parse_html_new_models  rcC t|d}|djdd}|S)NrdeletedestinationTrr)rrrr r r parse_delete_destination rcCr)Nrto_headTrr)rrheaderr r r parse_html_header#rrcCs~d}d|vr t}d}n&d|vrt}d}nd|vrt}d}nd|vr&d }t}n d |vr/d }t}nt||}t|d |||fS) Nrzclass="component-value"promptzrz Z new_modelrdelete_destinationrrz parsed as)rrrrrNotImplementedErrorr%)infoconfigr!resultr r r parse_html_config(s( r)rr)%numpyrr<r/rErrr rrr,rBrNrOrr`rbrgrirqr{rrrrrrrrZbs4rrrrrrrr r r r sJ    "