a ¤‹cèã@sddlTddlTddlZdejd<ddlZddlZddlZddl Z ddl m Z ddl m Z ddl Z ddlZddlZddl m Z ddlmZdZeed d Ze d ¡Ze d ¡Zed ƒZdd„Zd#dd„Zdd„Zdd„Zdd„Zgd¢fdd„Ze dƒfdd„Z!eedgd¢dd fd!d"„Z"dS)$é)Ú*NÚTrueZKMP_DUPLICATE_LIB_OK)Útqdm)Údeepcopy)ÚEasyNMTzsvjack/squad_gen_qst_zh_v0Zcpu)ZdeviceZzh_core_web_smZen_core_web_smzopus-mtcCsft|ƒtdƒksJ‚t |¡}| ¡ ¡}d|vr>d|vr>d}d|vrJd}d|vrVd}|dvsbJ‚|S)NÚÚzhÚenÚothers)r rr )ÚtypeÚ trans_modelZlanguage_detection_fasttextÚlowerÚstrip)ÚtextÚlang©rúA/Users/svjack/temp/docvqa_upl/Question-Generator/qa_on_context.pyÚdetect_language!s   rÚaug_sparql_querycCslt|dƒsJ‚||j ¡vs J‚g}tgƒ}| ¡D],\}}|||vr4| ||¡| |¡q4t |¡S)NÚsize) ÚhasattrÚcolumnsÚtolistÚsetZiterrowsÚaddÚappendÚpdZ DataFrame)ZdfZon_colÚreqZset_ÚiÚrrrrÚdrop_duplicates_by_col/s  r cCs<t|ƒtdƒksJ‚||ƒ}|t |j¡ dd„¡j ¡fS)NrcSs |j|jfS©N)rZlabel_)ÚspanrrrÚ>óz sent_with_ents..)r rÚSeriesÚentsÚmapÚvaluesr)ÚsentÚen_nlpÚdocrrrÚsent_with_ents:s ÿr,csht|ƒtdƒkr|g}|sgSˆ dd¡‰ttdd„|ƒƒ}tt‡fdd„|ƒƒ}tt‡fdd„|ƒƒS)Nrú|cSs | dd¡S)Nr-r)Úreplace©Úxrrrr#Gr$z$gen_ask_by_span_zh..cs d ˆ|¡S)Nz{}|{})Úformatr/)r)rrr#Hr$cs ˆ |¡Sr!)Zpredict)Úy)Úaskerrrr#Jr$)r r.Úlistr')r3r)r"r0r)r3r)rÚgen_ask_by_span_zhAs  þr5cCs0|dvs J‚|dkr t|||ƒStt||ƒSdS)N)r rr)r5Zgen_ask_by_span_enZt2t)r3r)r"rrrrÚgen_ask_by_spanNs  r6)ZDATEZFACZGPEZLOCZPERSONcs|sgStt‡fdd„|ƒƒS)Ncs |dˆvS©Nér)Út2©Úmaintain_cate_listrrr#[r$z!filter_ent_cate..)r4Úfilter)Zent_listr;rr:rÚfilter_ent_cateVsr=i †cCsXg}|D]J}|s| g¡t|dƒ|kr:|d |¡q| g¡|d |¡q|S)Néÿÿÿÿ)rÚlen)ÚaÚ batch_sizerÚelerrrÚ batch_as_list]s  rCé éccs4|dur d}t|ƒtdƒks J‚t|ƒ}|dkr4d}|dkr@tnt}|dur\t||ƒ\}} n t|ƒ\}} |rxt| |d} | d|…} | sŒdSt| |ƒ} t| ƒD]} t t dd„| ƒƒ} t t dd„| ƒƒ} t ||| |ƒ}t | ƒt | ƒkrôt |ƒksúnJ‚t t t j| | |gƒƒ}t j|d d }gd ¢|_|VqždS) Ni'rrr r:cSs|dS)Nrrr/rrrr#„r$zgen_qst_to_df..cSs|dSr7rr/rrrr#…r$r8)Zaxis)ZentityZ entity_cateZquestion)r rr*Úzh_nlpr,rr=rCrr4r'r6r?rr%Úconcatr)Z paragraphZnlpr3Z nlp_inputr;Zlimit_ents_sizerArÚ_Z entity_listÚlrBr&Z ent_catesZ questionsZbatch_lZbatch_dfrrrÚ gen_qst_to_dfis2     & rJ)r)#Z zh_mt5_modelZ en_t2t_modelÚosÚenvironZspacyZpandasrZnumpyZnpÚrerÚcopyrÚpathlibÚjsonÚpickleZpklZeasynmtrÚpathZT5_BZasker_zhÚloadrFr*r rr r,r5r6r=ÚintrCrJrrrrÚsD     ÿ     ú