
    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  S SKJ r J!r!  S SK"J#r#  \
RH                  S:  a'  \
RJ                  RL                  r
\
RN                  " 5         \#" 5       r(S/r)\RT                  " \!RV                  \RX                  S9 " S S\5      5       r-g)    N)AnyDict)MosesDetokenizerMosesPunctNormalizerMosesTokenizer)	apply_bpe)	Pipelines)Model)
OutputKeys)Pipeline)	PIPELINES)TranslationPipeline)Config)	ModelFileTasks)
get_loggerz2.0InteractiveTranslationPipeline)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                  R                  n[        R
                  " 5         [        R                  " [        R                  " U[        R                  5      S5      n[        [        [        U R                  5      5       VVs/ s H  u  pEUR                  5       U4PM     snn5      U l        [!        U R"                  5      U l        [        R&                  " [        R(                  SS/SS9U l        [        R&                  " [        R(                  SS/SS9U l        [        R&                  " [        R.                  SS/SS9U l        0 U l        U R4                  S:X  a  [6        U l        O0[;        U R4                  S	9U l        [?        U R4                  S	9U l        U R                  U R*                  SU R,                  U R0                  5      nU R2                  RA                  U5        [        RB                  " S
S9nS
URD                  l#        [        RH                  " US9U l%        U RJ                  RM                  5        n[N        RQ                  SU 35        [        RR                  RU                  [        RV                  " 5       5      n	U	RY                  X5        SSS5        gs  snnf ! , (       d  f       g= f)u_  Build a interactive translation pipeline with a model dir or a model id in the model hub.

Args:
    model (`str` or `Model` or module instance): A model instance or a model local dir
        or a model id in the model hub.

Example:
    >>> from modelscope.pipelines import pipeline
    >>> pipeline_ins = pipeline(task=Tasks.translation,
        model='damo/nlp_imt_translation_zh2en')
    >>> input_sequence = 'Elon Musk, co-founder and chief executive officer of Tesla Motors.'
    >>> input_prefix = "特斯拉汽车公司"
    >>> print(pipeline_ins(input_sequence + "<PREFIX_SPLIT>" + input_prefix))
r   zckpt-0N
input_wids)dtypeshapenameprefix_wids
prefix_hitzh)langT)allow_soft_placement)configzloading model from  )-super__init__r   	model_dirtfreset_default_graphospjoinr   TF_CHECKPOINT_FOLDERdict	enumerateopen_trg_vocab_pathstrip
_trg_vocablen_trg_rvocab_len_tgt_vocabplaceholderint64r   r   boolr   output	_tgt_langjieba_tgt_tokr   _tgt_punct_normalizerr   updateConfigProtogpu_optionsallow_growthSession_session
as_defaultloggerinfotrainSaverglobal_variablesrestore)selfr   kwargs
model_pathiwr8   	tf_configsessmodel_loader	__class__s             y/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/pipelines/nlp/interactive_translation_pipeline.pyr%   'InteractiveTranslationPipeline.__init__#   s$    	/u//

$$
 XXHHUI::;XG
 '0d6J6J1K'L 
'LtqQWWYN'L 
  "$"2"23..((4,\C >>((4,]D ..''$LB  >>T!!DM)=^^*%D&*?DM DOOT43C3C OO-6"NN=	-1	*

)4]]%%'4KK-j\:;88>>"*=*=*?@L  2	 ('C 
B ('s   K
AK
Kinputreturnc                 *   UR                  SS5      u  p#U R                  S:X  a6  U R                  R                  U5      nSR	                  [        U5      5      nO6U R                  R                  U5      nU R                  R                  USSS9nU R                  S:X  a9  U R                  R                  U5      nSR	                  [        U5      S S 5      nOXU R                  R                  U5      nU R                  R                  USSS9R                  5       nSR	                  US S 5      n[        [        U5      5      S:  a  [        U5      S   nOS	nU R                  R                  U5      nU R                  R                  U5      n[         R"                  " UR%                  5       R                  5        V	s/ s H3  n	XR&                  ;   a  U R&                  U	   OU R(                  S
   S   PM5     sn	/5      n
[         R"                  " UR%                  5       R                  5        V	s/ s H3  n	XR*                  ;   a  U R*                  U	   OU R(                  S
   S   PM5     sn	/5      nS/U R,                  S-   -  /nUS	:w  a`  SnU R.                  R1                  5        H'  u  pU	R3                  U5      (       d  M  SUS   U'   SnM)     USL a  S/U R,                  S-   -  /nU
U[         R"                  " U5      S.nU$ s  sn	f s  sn	f )Nz<PREFIX_SPLIT>   r    T)
return_straggressive_dash_splitsr    r   src_vocab_sizetrg_vocab_sizeF)	input_ids
prefix_idsr   )split	_src_lang_tokcutr*   list_punct_normalizer	normalizetokenizer9   r;   lcutr<   r2   _bpeprocess_linenparrayr0   
_src_vocabcfgr1   r4   r3   items
startswith)rJ   rU   	input_srcprefix	input_tok
prefix_toksubword	input_bpe
prefix_bperN   r`   ra   r   	hit_staterM   results                   rS   
preprocess)InteractiveTranslationPipeline.preprocess_   s   !KK(8!<	>>T!		i0Ii1I..88CI		**d4 + II >>T!]]''/F$v,s"34J//99&AF]]++4 , FFKeg &"+.JtF|q 6l2&GGII**95	YY++J7
HH __&,,.
 / OO# OOA)-'):;K)LM.
  	 XX  %%'--/ 
 0 OO# OOA)-'):;K)LM/ 
  
 cT001456
b=I((..0<<(('(JqM!$ $I 1 E! cT%8%81%<=>
"$((:.

 7
 
s   :L3:Lc                    U R                   R                  5          U R                  US   U R                  US   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)Nr`   ra   r   )	feed_dict)rB   rC   r   r   r   runr8   )rJ   rU   r   sess_outputss       rS   forward&InteractiveTranslationPipeline.forward   ss    ]]%%'{!3  %"5|!4I
  ==,,T[[I,NL (''s   AA::
Binputsc                    US   S   n[        US   5      S/-   nUS UR                  S5       nSR                  U Vs/ s H#  nX@R                  ;   a  U R                  U   OSPM%     sn5      R	                  SS5      R	                  SS5      nU R
                  R                  UR                  5       5      n[        R                  U0nU$ s  snf )Noutput_seqsr   rY   z<unk>z@@ r]   z@@)
rf   indexr*   r3   replace_detok
detokenizerb   r   TRANSLATION)rJ   r   r   widswidtranslation_outr{   s          rS   postprocess*InteractiveTranslationPipeline.postprocess   s    ]+A.KN#qc)NTZZ]#(($
 &),<,<%<DS!'I$
  75"ggdB/ 	 ++001F1F1HI((/:$
s   *C)	r4   rB   r<   r;   r1   r   r8   r   r   )__name__
__module____qualname____firstlineno__r
   r%   strr   r   r|   r   r   __static_attributes____classcell__)rR   s   @rS   r   r      sw    :3e :3x5 5S#X 5n T#s(^  S#X  
$sCx. 
T#s(^ 
 
    ).os.pathpathr)   typingr   r   r:   numpyrm   
tensorflowr'   
sacremosesr   r   r   subword_nmtr   modelscope.metainfor	   modelscope.models.baser
   modelscope.outputsr   modelscope.pipelines.baser   modelscope.pipelines.builderr   -modelscope.pipelines.nlp.translation_pipeliner   modelscope.utils.configr   modelscope.utils.constantr   r   modelscope.utils.loggerr   __version__compatv1disable_eager_executionrD   __all__register_moduletranslationinteractive_translationr   r#   r   rS   <module>r      s         M M ! ) ( ) . 2 M * 6 .>>U	B 	+
, 	9#D#DFI%8 IFIr   