§
    ‚Štj8  ã                   ó²   — d dl mZmZmZmZmZmZ d dlmZ ddl	m
Z
mZ ddlmZ ddlmZ  ej        e¦  «        Zddd	œZg d
¢Z G d„ de¦  «        ZdgZeZdS )é    )ÚRegexÚ	TokenizerÚdecodersÚnormalizersÚpre_tokenizersÚ
processors)ÚUnigramé   )Ú
AddedTokenÚBatchEncoding)ÚTokenizersBackend)Úloggingzsentencepiece.bpe.modelztokenizer.json)Ú
vocab_fileÚtokenizer_file)4Úar_ARÚcs_CZÚde_DEÚen_XXÚes_XXÚet_EEÚfi_FIÚfr_XXÚgu_INÚhi_INÚit_ITÚja_XXÚkk_KZÚko_KRÚlt_LTÚlv_LVÚmy_MMÚne_NPÚnl_XXÚro_ROÚru_RUÚsi_LKÚtr_TRÚvi_VNÚzh_CNÚaf_ZAÚaz_AZÚbn_INÚfa_IRÚhe_ILÚhr_HRÚid_IDÚka_GEÚkm_KHÚmk_MKÚml_INÚmn_MNÚmr_INÚpl_PLÚps_AFÚpt_XXÚsv_SEÚsw_KEÚta_INÚte_INÚth_THÚtl_XXÚuk_UAÚur_PKÚxh_ZAÚgl_ESÚsl_SIc                   ó„  ‡ — e Zd ZU dZeZddgZeZg Z	e
e         ed<   g Ze
e         ed<   	 	 	 	 	 	 	 	 	 	 d"deez  e
z  dz  dedz  fˆ fd„Zd„ Zd„ Zedefd„¦   «         Zej        deddfd„¦   «         Z	 	 	 d#de
e         dede
e         dz  dedef
ˆ fd„Zd„ Zd„ Zdeddfd„Zdeddfd„Zd ededz  dedz  fd!„Zˆ xZS )$ÚMBart50Tokenizeruð	  
    Construct a MBart50 tokenizer (backed by HuggingFace's *tokenizers* library). Based on
    [Unigram](https://huggingface.co/docs/tokenizers/python/latest/components.html?highlight=unigram#models).

    This tokenizer inherits from [`TokenizersBackend`] which contains most of the main methods. Users should
    refer to this superclass for more information regarding those methods.

    Args:
        vocab_file (`str`, *optional*):
            Path to the vocabulary file.
        src_lang (`str`, *optional*):
            A string representing the source language.
        tgt_lang (`str`, *optional*):
            A string representing the target language.
        eos_token (`str`, *optional*, defaults to `"</s>"`):
            The end of sequence token.
        sep_token (`str`, *optional*, defaults to `"</s>"`):
            The separator token, which is used when building a sequence from multiple sequences, e.g. two sequences for
            sequence classification or for a text and a question for question answering. It is also used as the last
            token of a sequence built with special tokens.
        cls_token (`str`, *optional*, defaults to `"<s>"`):
            The classifier token which is used when doing sequence classification (classification of the whole sequence
            instead of per-token classification). It is the first token of the sequence when built with special tokens.
        unk_token (`str`, *optional*, defaults to `"<unk>"`):
            The unknown token. A token that is not in the vocabulary cannot be converted to an ID and is set to be this
            token instead.
        pad_token (`str`, *optional*, defaults to `"<pad>"`):
            The token used for padding, for example when batching sequences of different lengths.
        mask_token (`str`, *optional*, defaults to `"<mask>"`):
            The token used for masking values. This is the token used when training this model with masked language
            modeling. This is the token which the model will try to predict.

    Examples:

    ```python
    >>> from transformers import MBart50Tokenizer

    >>> tokenizer = MBart50Tokenizer.from_pretrained("facebook/mbart-large-50", src_lang="en_XX", tgt_lang="ro_RO")
    >>> src_text = " UN Chief Says There Is No Military Solution in Syria"
    >>> tgt_text = "Åžeful ONU declarÄƒ cÄƒ nu existÄƒ o soluÅ£ie militarÄƒ Ã®n Siria"
    >>> model_inputs = tokenizer(src_text, text_target=tgt_text, return_tensors="pt")
    >>> # model(**model_inputs) should work
    ```Ú	input_idsÚattention_maskÚprefix_tokensÚsuffix_tokensNú</s>ú<s>ú<unk>ú<pad>ú<mask>ÚvocabÚ_spm_precompiled_charsmapc                 ó–  •‡‡— t          |
t          ¦  «        rt          |
dd¬¦  «        n|
}
t          |t          ¦  «        rüd„ |D ¦   «         }d„ |D ¦   «         Št	          ˆfd„t
          D ¦   «         ¦  «        }|r	|| _        �nPt          |¦  «        dft          |	¦  «        dft          |¦  «        dft          |¦  «        dfg}|                     |dd …         ¦  «         t
          D ]&}|                     t          |¦  «        df¦  «         Œ'|                     t          |
¦  «        df¦  «         || _        n—t          |¦  «        dft          |	¦  «        dft          |¦  «        dft          |¦  «        dfd	g| _        t
          D ]}| j                             |df¦  «         Œ| j                             t          |
¦  «        df¦  «         t          t          | j        dd¬
¦  «        ¦  «        | _        t          j        t          d¦  «        d¦  «        g}|�t          j        |¦  «        g|z   }t          j        |¦  «        | j        _        t%          j        ddd¬¦  «        | j        _        t+          j        ddd¬¦  «        | j        _        |                     dg ¦  «        pg }|                     t
          ¦  «          t1          ¦   «         j        d|||||||	|
|dœ	|¤Ž d| _        	 d„ t
          D ¦   «         }n$# t6          $ r t          t
          ¦  «        }Y nw xY wt9          | dg ¦  «        pg }d„ |D ¦   «         Št          |¦  «        ˆfd„|D ¦   «         z   }|| _        |�|nd| _        || _        |                       ¦   «          | j!        | j                 | _"        |  #                    | j        ¦  «         d S )NTF)ÚlstripÚrstripc                 ób   — g | ],}t          |d          ¦  «        t          |d         ¦  «        f‘Œ-S )r   é   )ÚstrÚfloat©Ú.0Úitems     ún/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/mbart50/tokenization_mbart50.pyú
<listcomp>z-MBart50Tokenizer.__init__.<locals>.<listcomp>n   s1   € ÐFÐFÐF¸•c˜$˜qœ'‘l”l¥E¨$¨q¬'¡N¤NÐ3ÐFÐFÐFó    c                 ó   — g | ]
}|d          ‘ŒS )r   © rY   s     r\   r]   z-MBart50Tokenizer.__init__.<locals>.<listcomp>p   s   € Ð6Ð6Ð6¨˜D œGÐ6Ð6Ð6r^   c              3   ó    •K  — | ]}|‰v V — Œ	d S ©Nr`   )rZ   Ú	lang_codeÚvocab_tokenss     €r\   ú	<genexpr>z,MBart50Tokenizer.__init__.<locals>.<genexpr>q   s(   øè è € Ð$gÐ$gÀ9 Y°,Ð%>Ð$gÐ$gÐ$gÐ$gÐ$gÐ$gr^   g        r
   )õ   â–�g       À)Úunk_idÚbyte_fallbackz {2,}ú rf   Úalways)ÚreplacementÚprepend_schemeÚsplitÚadditional_special_tokens)	Úsrc_langÚtgt_langÚ	eos_tokenÚ	sep_tokenÚ	cls_tokenÚ	unk_tokenÚ	pad_tokenÚ
mask_tokenrn   rV   c                 ó0   — g | ]}t          |d ¬¦  «        ‘ŒS )T)Úspecial)r   )rZ   Úcodes     r\   r]   z-MBart50Tokenizer.__init__.<locals>.<listcomp>¾   s%   € Ð]Ð]Ð]¸d�: d°DÐ9Ñ9Ô9Ð]Ð]Ð]r^   Ú_extra_special_tokensc                 ó,   — h | ]}t          |¦  «        ’ŒS r`   ©rW   )rZ   Úts     r\   ú	<setcomp>z,MBart50Tokenizer.__init__.<locals>.<setcomp>Ã   s   € Ð8Ð8Ð8 A�˜Q™œÐ8Ð8Ð8r^   c                 ó6   •— g | ]}t          |¦  «        ‰v¯|‘ŒS r`   r|   )rZ   r}   Úexisting_strss     €r\   r]   z-MBart50Tokenizer.__init__.<locals>.<listcomp>Ä   s*   ø€ Ð.eÐ.eÐ.e°QÍÈQÉÌÐWdÐIdÐId¨qÐIdÐIdÐIdr^   r   r`   )$Ú
isinstancerW   r   ÚlistÚanyÚFAIRSEQ_LANGUAGE_CODESÚ_vocab_scoresÚextendÚappendr   r	   Ú
_tokenizerr   ÚReplacer   ÚPrecompiledÚSequenceÚ
normalizerr   Ú	MetaspaceÚpre_tokenizerr   ÚdecoderÚpopÚsuperÚ__init__Úfairseq_offsetÚ	ExceptionÚgetattrrz   Ú	_src_langrp   Ú_build_language_code_mappingsÚlang_code_to_idÚcur_lang_code_idÚset_src_lang_special_tokens)ÚselfrP   rQ   ro   rp   rq   rr   rs   rt   ru   rv   ÚkwargsÚhas_language_codesÚ
vocab_listrc   Únormalizers_rn   Úlang_tokensÚexisting_extraÚmerged_extrar€   rd   Ú	__class__s                       @@€r\   r’   zMBart50Tokenizer.__init__U   s<  øøø€ õ KUÐU_ÕadÑJeÔJeÐu•Z 
°4ÀÐFÑFÔFÐFÐkuˆ
õ �e�TÑ"Ô"ð -	>ð GÐFÀÐFÑFÔFˆEà6Ð6°Ð6Ñ6Ô6ˆLÝ!$Ð$gÐ$gÐ$gÐ$gÕPfÐ$gÑ$gÔ$gÑ!gÔ!gÐà!ð 0Ø%*�Ô"Ñ"õ ˜‘^”^ SÐ)Ý˜‘^”^ SÐ)Ý˜‘^”^ SÐ)Ý˜‘^”^ SÐ)ð	�
ð ×!Ò! %¨¨¨¤)Ñ,Ô,Ð,õ "8ð =ð =�IØ×%Ò%¥s¨9¡~¤~°sÐ&;Ñ<Ô<Ð<Ð<ð ×!Ò!¥3 z¡?¤?°CÐ"8Ñ9Ô9Ð9à%/�Ô"Ð"õ �Y‘” Ð%Ý�Y‘” Ð%Ý�Y‘” Ð%Ý�Y‘” Ð%Øð"ˆDÔõ 4ð <ð <�	ØÔ"×)Ò)¨9°cÐ*:Ñ;Ô;Ð;Ð;ØÔ×%Ò%¥s¨:¡¤¸Ð&<Ñ=Ô=Ð=õ $ÝØÔ"ØØ#ðñ ô ñ
ô 
ˆŒõ $Ô+­E°(©O¬O¸SÑAÔAÐBˆØ$Ð0Ý'Ô3Ð4MÑNÔNÐOÐR^Ñ^ˆLå%0Ô%9¸,Ñ%GÔ%GˆŒÔ"Ý(6Ô(@ÈUÐckÐswÐ(xÑ(xÔ(xˆŒÔ%å"*Ô"4ÀÐW_ÐgkÐ"lÑ"lÔ"lˆŒÔØ$*§J¢JÐ/JÈBÑ$OÔ$OÐ$UÐSUÐ!Ø!×(Ò(Õ)?Ñ@Ô@Ð@Ø�‰ŒÔð 	
ØØØØØØØØ!Ø&?ð	
ð 	
ð ð	
ð 	
ð 	
ð  ˆÔð	7Ø]Ð]ÕF\Ð]Ñ]Ô]ˆKˆKøÝð 	7ð 	7ð 	7ÝÕ5Ñ6Ô6ˆKˆKˆKð	7øøøå  Ð'>ÀÑCÔCÐIÀrˆà8Ð8¨Ð8Ñ8Ô8ˆÝ˜NÑ+Ô+Ð.eÐ.eÐ.eÐ.e¸+Ð.eÑ.eÔ.eÑeˆØ%1ˆÔ"à%-Ð%9˜˜¸wˆŒØ ˆŒð 	×*Ò*Ñ,Ô,Ð,à $Ô 4°T´^Ô DˆÔØ×(Ò(¨¬Ñ8Ô8Ð8Ð8Ð8s   Ë8L
 Ì
L+Ì*L+c                 ó¤  ‡ — ˆ fd„t           D ¦   «         ‰ _        d„ ‰ j                             ¦   «         D ¦   «         ‰ _        dddddœ‰ _        ‰ j                             ‰ j        ¦  «         t          ‰ dd	¦  «        }‰                      t          |¦  «        ¦  «        ‰ j        d	<   d
„ ‰ j                             ¦   «         D ¦   «         ‰ _	        dS )zFBuild language code to ID mappings and fairseq compatibility mappings.c                 ó<   •— i | ]}|‰                      |¦  «        “ŒS r`   )Úconvert_tokens_to_ids)rZ   rc   r›   s     €r\   ú
<dictcomp>zBMBart50Tokenizer._build_language_code_mappings.<locals>.<dictcomp>Ó   s6   ø€ ð  
ð  
ð  
ØAJˆI�t×1Ò1°)Ñ<Ô<ð 
ð  
ð  
r^   c                 ó   — i | ]\  }}||“Œ	S r`   r`   ©rZ   ÚkÚvs      r\   r§   zBMBart50Tokenizer._build_language_code_mappings.<locals>.<dictcomp>Ö   s   € ÐNÐNÐN©¨¨A  1ÐNÐNÐNr^   r   rV   é   r
   )rL   rN   rK   rM   rv   rO   c                 ó   — i | ]\  }}||“Œ	S r`   r`   r©   s      r\   r§   zBMBart50Tokenizer._build_language_code_mappings.<locals>.<dictcomp>â   s   € Ð%ZÐ%ZÐ%Z©t¨q°! a¨Ð%ZÐ%ZÐ%Zr^   N)
r„   r˜   ÚitemsÚid_to_lang_codeÚfairseq_tokens_to_idsÚupdater•   r¦   rW   Úfairseq_ids_to_tokens)r›   rv   s   ` r\   r—   z.MBart50Tokenizer._build_language_code_mappingsÑ   sì   ø€ ð 
ð  
ð  
ð  
ÝNdð 
ñ  
ô  
ˆÔð  OÐN°Ô1E×1KÒ1KÑ1MÔ1MÐNÑNÔNˆÔð ØØØð	&
ð &
ˆÔ"ð 	Ô"×)Ò)¨$Ô*>Ñ?Ô?Ð?Ý˜T <°Ñ:Ô:ˆ
Ø/3×/IÒ/IÍ#ÈjÉ/Ì/Ñ/ZÔ/ZˆÔ" 8Ñ,Ø%ZÐ%Z°tÔ7Q×7WÒ7WÑ7YÔ7YÐ%ZÑ%ZÔ%ZˆÔ"Ð"Ð"r^   c                 ó´   — |                       ¦   «          t          | d¦  «        r3| j        | j                 | _        |                      | j        ¦  «         dS dS )z9Called after tokenizer.json is loaded in from_pretrained.r–   N)r—   Úhasattrr˜   r–   r™   rš   ©r›   s    r\   Ú
_post_initzMBart50Tokenizer._post_initä   s`   € ð 	×*Ò*Ñ,Ô,Ð,å�4˜Ñ%Ô%ð 	=Ø$(Ô$8¸¼Ô$HˆDÔ!Ø×,Ò,¨T¬^Ñ<Ô<Ð<Ð<Ð<ð	=ð 	=r^   Úreturnc                 ó   — | j         S rb   )r–   rµ   s    r\   ro   zMBart50Tokenizer.src_langí   s
   € àŒ~Ðr^   Únew_src_langc                 óH   — || _         |                      | j         ¦  «         d S rb   )r–   rš   )r›   r¹   s     r\   ro   zMBart50Tokenizer.src_langñ   s%   € à%ˆŒØ×(Ò(¨¬Ñ8Ô8Ð8Ð8Ð8r^   r   r$   Ú	src_textsro   Ú	tgt_textsrp   c                 óV   •— || _         || _         t          ¦   «         j        ||fi |¤ŽS rb   )ro   rp   r‘   Úprepare_seq2seq_batch)r›   r»   ro   r¼   rp   rœ   r£   s         €r\   r¾   z&MBart50Tokenizer.prepare_seq2seq_batchö   s4   ø€ ð !ˆŒØ ˆŒØ,�u‰wŒwÔ,¨Y¸	ÐLÐLÀVÐLÐLÐLr^   c                 ó6   — |                       | j        ¦  «        S rb   )rš   ro   rµ   s    r\   Ú_switch_to_input_modez&MBart50Tokenizer._switch_to_input_mode  s   € Ø×/Ò/°´Ñ>Ô>Ð>r^   c                 ó\   — | j         €| j        | _         |                      | j         ¦  «        S rb   )rp   r–   Úset_tgt_lang_special_tokensrµ   s    r\   Ú_switch_to_target_modez'MBart50Tokenizer._switch_to_target_mode  s)   € ØŒ=Ð Ø œNˆDŒMØ×/Ò/°´Ñ>Ô>Ð>r^   c                 óŒ  — |                       |¦  «        | _        | j        g| _        | j        g| _        |                      | j        ¦  «        }|                      | j        ¦  «        }t          j        |dgz   |z   |ddgz   |z   t          t          ||z   | j        | j        z   ¦  «        ¦  «        ¬¦  «        | j
        _        dS )z]Reset the special tokens to the source lang setting. prefix=[src_lang_code] and suffix=[eos].ú$Aú$B©ÚsingleÚpairÚspecial_tokensN©r¦   r™   rI   Úeos_token_idrJ   Úconvert_ids_to_tokensr   ÚTemplateProcessingr‚   Úziprˆ   Úpost_processor)r›   ro   Úprefix_tokens_strÚsuffix_tokens_strs       r\   rš   z,MBart50Tokenizer.set_src_lang_special_tokens
  óÎ   € à $× :Ò :¸8Ñ DÔ DˆÔØ"Ô3Ð4ˆÔØ"Ô/Ð0ˆÔà ×6Ò6°tÔ7IÑJÔJÐØ ×6Ò6°tÔ7IÑJÔJÐå)3Ô)FØ$¨ vÑ-Ð0AÑAØ" d¨D \Ñ1Ð4EÑEÝ¥Ð$5Ð8IÑ$IÈ4ÔK]Ð`dÔ`rÑKrÑ sÔ sÑtÔtð*
ñ *
ô *
ˆŒÔ&Ð&Ð&r^   c                 óŒ  — |                       |¦  «        | _        | j        g| _        | j        g| _        |                      | j        ¦  «        }|                      | j        ¦  «        }t          j        |dgz   |z   |ddgz   |z   t          t          ||z   | j        | j        z   ¦  «        ¦  «        ¬¦  «        | j
        _        dS )zaReset the special tokens to the target language setting. prefix=[tgt_lang_code] and suffix=[eos].rÅ   rÆ   rÇ   NrË   )r›   rp   rÑ   rÒ   s       r\   rÂ   z,MBart50Tokenizer.set_tgt_lang_special_tokens  rÓ   r^   Úreturn_tensorsc                 ó†   — |�|€t          d¦  «        ‚|| _         | |fd|dœ|¤Ž}|                      |¦  «        }||d<   |S )zIUsed by translation pipeline, to prepare inputs for the generate functionNzATranslation requires a `src_lang` and a `tgt_lang` for this modelT)Úadd_special_tokensrÕ   Úforced_bos_token_id)Ú
ValueErrorro   r¦   )r›   Ú
raw_inputsrÕ   ro   rp   Úextra_kwargsÚinputsÚtgt_lang_ids           r\   Ú_build_translation_inputsz*MBart50Tokenizer._build_translation_inputs(  sg   € ð Ð˜xÐ/ÝÐ`ÑaÔaÐaØ ˆŒØ��jÐi°TÈ.ÐiÐiÐ\hÐiÐiˆØ×0Ò0°Ñ:Ô:ˆØ(3ˆÐ$Ñ%Øˆr^   )
NNNNrK   rK   rL   rM   rN   rO   )r   Nr$   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚVOCAB_FILES_NAMESÚvocab_files_namesÚmodel_input_namesr	   ÚmodelrI   r‚   ÚintÚ__annotations__rJ   rW   Údictr’   r—   r¶   Úpropertyro   Úsetterr   r¾   rÀ   rÃ   rš   rÂ   rÞ   Ú__classcell__)r£   s   @r\   rF   rF   !   sd  ø€ € € € € € ð*ð *ðX *ÐØ$Ð&6Ð7ÐØ€Eà!€M�4˜”9Ð!Ð!Ñ!Ø!€M�4˜”9Ð!Ð!Ñ!ð +/Ø04ØØØØØØØØðz9ð z9à�T‰z˜DÑ  4Ñ'ðz9ð $'¨¡:ðz9ð z9ð z9ð z9ð z9ð z9ðx[ð [ð [ð&=ð =ð =ð ð˜#ð ð ð ñ „Xðð „_ð9 Sð 9¨Tð 9ð 9ð 9ñ „_ð9ð  Ø&*Øð
Mð 
Mà˜”9ð
Mð ð
Mð ˜”9˜tÑ#ð	
Mð
 ð
Mð 
ð
Mð 
Mð 
Mð 
Mð 
Mð 
Mð?ð ?ð ?ð?ð ?ð ?ð

°Cð 
¸Dð 
ð 
ð 
ð 
ð
°Cð 
¸Dð 
ð 
ð 
ð 
ð
Ø*-ð
Ø9<¸t¹ð
ØORÐUYÉzð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r^   rF   N)Ú
tokenizersr   r   r   r   r   r   Útokenizers.modelsr	   Útokenization_pythonr   r   Útokenization_utils_tokenizersr   Úutilsr   Ú
get_loggerrß   Úloggerrã   r„   rF   Ú__all__ÚMBart50TokenizerFastr`   r^   r\   ú<module>rö      s  ðð  [Ð ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZÐ ZØ %Ð %Ð %Ð %Ð %Ð %à <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø >Ð >Ð >Ð >Ð >Ð >Ø Ð Ð Ð Ð Ð ð 
ˆÔ	˜HÑ	%Ô	%€ð $=ÐP`ÐaÐaÐ ð nð  nð  nÐ ðQð Qð Qð Qð QÐ(ñ Qô Qð Qðh Ð
€ð (Ð Ð Ð r^   