
    9i                        S SK Jr  S SKJrJr  S SKrS SKrS SK	r
S SKJrJrJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJrJr  S SK J!r!  \
RD                  S:  a'  \
RF                  RH                  r
\
RJ                  " 5         \!" 5       r&S/r'\RP                  " \RR                  \RT                  S9 " S S\5      5       r+g)    N)AnyDict)MosesDetokenizerMosesPunctNormalizerMosesTokenizer)	apply_bpe)	Pipelines)Model)
OutputKeys)Pipeline)	PIPELINES)Config)	ModelFileTasks)
get_loggerz2.0TranslationPipeline)module_namec                      ^  \ rS rSrS\4U 4S jjrS\S\\\4   4S jr	S\\\4   S\\\4   4S jr
S\\\4   S\\\4   4S	 jrS
rU =r$ )r      modelc           	        > [         TU ]  " SSU0UD6  [        U R                  [        5      (       d   S[
        R                   35       eU R                  R                  n[        R                  " 5         [        R                  " [        R                  " U[
        R                  5      S5      U l        [        R                  " [        R                  " U[
        R                  5      5      U l        [        R                  " XR                   S   S   S   5      U l        [%        ['        [)        U R"                  SS95       VVs/ s H  u  p4UR+                  5       U4PM     snn5      U l        [        R                  " XR                   S   S	   S   5      U l        [%        ['        [)        U R.                  SS95       VVs/ s H  u  p4X4R+                  5       4PM     snn5      U l        [        R2                  " S
S9nS
UR4                  l        [        R8                  " US9U l        [        R<                  " [        R>                  SS/SS9U l         0 U l!        U R                   S   S   U l"        U R                   S   S   U l#        [        R                  " XR                   S   S   S   5      U l$        U RD                  S:X  a  [J        U l&        O0[O        U RD                  S9U l(        [S        U RD                  S9U l&        [U        U RF                  S9U l+        [X        RZ                  " [)        U RH                  SS95      U l.        U R                  U R@                  5      nU RB                  R_                  U5        U R:                  Ra                  5        n[b        Re                  SU R                   35        [        Rf                  Ri                  [        Rj                  " 5       5      U l6        U Rl                  Ro                  XpR                  5        SSS5        gs  snnf s  snnf ! , (       d  f       g= f)zrBuild a translation pipeline with a model dir or a model id in the model hub.

Args:
    model: A Model instance.
r   z,please check whether model config exists in zckpt-0dataset	src_vocabfilezutf-8)encoding	trg_vocabT)allow_soft_placement)configN
input_wids)dtypeshapenamepreprocessorsrc_langtgt_langsrc_bpezh)langzloading model from  )8super__init__
isinstancer   r
   r   CONFIGURATION	model_dirtfreset_default_graphospjoinTF_CHECKPOINT_FOLDER
model_pathr   	from_filecfg_src_vocab_pathdict	enumerateopenstrip
_src_vocab_trg_vocab_path_trg_rvocabConfigProtogpu_optionsallow_growthSession_sessionplaceholderint64r   output	_src_lang	_tgt_lang_src_bpe_pathjieba_tokr   _punct_normalizerr   r   _detokr   BPE_bpeupdate
as_defaultloggerinfotrainSaverglobal_variablesmodel_loaderrestore)	selfr   kwargsiw	tf_configrF   sess	__class__s	           m/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/pipelines/nlp/translation_pipeline.pyr+   TranslationPipeline.__init__"   s@    	/u//$**e,, 	U:9;R;R:ST	U, 

$$
 ((HHUI::;XG ##CHHUI4K4K$LM"xx88I&{3F; =9%%8<:  ; <:41A <:  ; <"xx88I&{3F; =I%%8=: !; =:DA!WWY =: !; < NN=	-1	*

)4..((4,\C .1*=.1*= XX88N+I6v>@ >>T!DI%9t~~%ND"&DNN;DI&DNN;MM$t'9'9G"LM	 DOO,6"]]%%'4KK-doo->?@ "r/B/B/D ED%%dOO<	 ('E ;!;< ('s   P#
P)
A?P//
P=inputreturnc                 P   UR                  S5      nU R                  S:X  aU  U Vs/ s H  o R                  R                  U5      PM     nnU Vs/ s H  nSR	                  [        U5      5      PM     nnOU Vs/ s H  o R                  R                  U5      PM     nnSnU R                  S;   a  U R                  S:X  d   U R                  S:X  a  U R                  S;   a  SnU Vs/ s H  nU R                  R                  USUS9PM      nnU Vs/ s H9  o R                  R                  U5      R                  5       R                  5       PM;     nn[        U Vs/ s H  n[        U5      PM     sn5      n[        R                   " U VVs/ s HZ  nU Vs/ s H6  nXpR"                  ;   a  U R"                  U   OU R$                  S	   S
   S-
  PM8     snS/U[        U5      -
  -  -   PM\     snn5      nSU0n	U	$ s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snnf )N<SENT_SPLIT>r'    T)esfrenF)
return_straggressive_dash_splitsr   src_vocab_size   r   	input_ids)splitrG   rK   cutr2   listrL   	normalizerH   tokenizerO   process_liner;   maxlennparrayr<   r6   )
rY   rb   item	input_tokrk   	input_bpe
MAX_LENGTHr\   rn   results
             r`   
preprocessTranslationPipeline.preprocess^   s*   N+>>T!9>?t,I?:CD)$$t*-)IDIHMN++55d;EN%)",.4>>T3INNd*t~~/M).& "
 "D	 		""#+A # C "   FO
ENTII""4(..0668Y 	 
 	:	#d)	:;
HH 8AB 8At >B
=A #$"6DOOAHHW./!34=A
 C:D	)*+ 8AB C	 y)3 @DN

 ;
 Bs<   $G?$H;$H	)%HA HH
H"
=HH"
H"
c                     U R                   R                  5          U R                  US   0nU R                   R                  U R                  US9nUsS S S 5        $ ! , (       d  f       g = f)Nrn   )	feed_dict)rC   rQ   r   runrF   )rY   rb   r   sess_outputss       r`   forwardTranslationPipeline.forward}   sQ    ]]%%'%*<=I==,,T[[I,NL (''s   7A
A*inputsc                 .   US   R                   u  p#n/ n[        U5       H  nUS   U   n[        US   5      S/-   nUS UR                  S5       nSR	                  U V	s/ s H#  n	XR
                  ;   a  U R
                  U	   OSPM%     sn	5      R                  SS5      R                  SS5      n
UR                  U R                  R                  U
R                  5       5      5        M     SR	                  U5      n[        R                  U0nU$ s  sn	f )	Noutput_seqsr   rf   z<unk>z@@  z@@re   )r!   rangerq   indexr2   r>   replaceappendrM   
detokenizero   r   TRANSLATION)rY   r   xyztranslation_outr[   r   widswidtranslationr}   s               r`   postprocessTranslationPipeline.postprocess   s   '--aqA /2KA'1#-DA'D(($C *-0@0@)@  %gM$  wub!''$"3  ""4;;#9#9+:K:K:M#NO  )--o>((/:$s    *D
)rO   rM   rL   rC   rI   rG   r<   r7   rH   rK   r>   r=   r6   r   rW   r4   rF   )__name__
__module____qualname____firstlineno__r
   r+   strr   r   r~   r   r   __static_attributes____classcell__)r_   s   @r`   r   r      sv    :=e :=x S#X > T#s(^  S#X  $sCx. T#s(^      ),os.pathpathr1   typingr   r   rJ   numpyrw   
tensorflowr/   
sacremosesr   r   r   subword_nmtr   modelscope.metainfor	   modelscope.models.baser
   modelscope.outputsr   modelscope.pipelines.baser   modelscope.pipelines.builderr   modelscope.utils.configr   modelscope.utils.constantr   r   modelscope.utils.loggerr   __version__compatv1disable_eager_executionrR   __all__register_moduler   csanmt_translationr   r)   r   r`   <module>r      s         M M ! ) ( ) . 2 * 6 .>>U	B 	 
! 	9#?#?Ar( rArr   