Ë
    i›¾j�
  ã                   ód   — d dl mZ d dlmZ d dlZ G d„ d«      Z G d„ de«      Z G d„ d	e«      Zy)
é    )ÚPath)ÚListNc                   ó8   — e Zd Zdedee   fd„Zdee   defd„Zy)Ú	TokenizerÚsentenceÚreturnc                 ó   — t        «       ‚©N©ÚNotImplementedError)Úselfr   s     úb/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/argostranslate/tokenizer.pyÚencodezTokenizer.encode   ó   € Ü!Ó#Ð#ó    Útokensc                 ó   — t        «       ‚r
   r   ©r   r   s     r   ÚdecodezTokenizer.decode   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ústrr   r   r   © r   r   r   r      s0   „ ð$˜sð $ t¨C¡yó $ð$˜T #™Yð $¨3ô $r   r   c                   ód   — e Zd Zdefd„Zdej                  fd„Zdede	e   fd„Z
de	e   defd„Zy	)
ÚSentencePieceTokenizerÚ
model_filec                 ó    — || _         d | _        y r
   )r   Ú	processor)r   r   s     r   Ú__init__zSentencePieceTokenizer.__init__   s   € Ø$ˆŒØˆ�r   r   c                 óŽ   — | j                   €.t        j                  t        | j                  «      ¬«      | _         | j                   S )N)r   )r   ÚspmÚSentencePieceProcessorr   r   )r   s    r   Úlazy_processorz%SentencePieceTokenizer.lazy_processor   s1   € Ø�>‰>Ð!Ü ×7Ñ7Ä3ÀtÇÁÓCWÔXˆDŒNØ�~‰~Ðr   r   c                 óP   — | j                  «       j                  |t        ¬«      }|S )N)Úout_type)r$   r   r   )r   r   r   s      r   r   zSentencePieceTokenizer.encode   s%   € Ø×$Ñ$Ó&×-Ñ-¨hÄÐ-ÓEˆØˆr   r   c                 ó€   — | j                  «       j                  |«      j                  dd«      j                  dd«      S )uÄ   
        # Returns not decoded byte-fallback tokens, quite detrimental to Asian languages translations
        detokenized = "".join(tokens)
        return detokenized.replace("â–�", " ")
        u   â–�ú Ú_)r$   Údecode_piecesÚreplacer   s     r   r   zSentencePieceTokenizer.decode   s7   € ð ×ÑÓ!ß‰]˜6Ó"ß‰W�U˜CÓ ß‰W�S˜#Óð		
r   N)r   r   r   r   r    r"   r#   r$   r   r   r   r   r   r   r   r   r      sN   „ ð 4ó ð × :Ñ :ó ð
˜sð  t¨C¡yó ð
˜T #™Yð 
¨3ô 
r   r   c                   óR   — e Zd Zdededefd„Zd„ Zdedee   fd„Zd	ee   defd
„Z	y)ÚBPETokenizerr   Ú	from_codeÚto_codec                 óf   — || _         || _        || _        d | _        d | _        d | _        d | _        y r
   )r   r.   r/   Ú	tokenizerÚdetokenizerÚ
bpe_sourceÚ
normalizer)r   r   r.   r/   s       r   r    zBPETokenizer.__init__-   s4   € Ø$ˆŒØ"ˆŒØˆŒØˆŒØˆÔØˆŒØˆ�r   c                 óV  — | j                   €‘ddlm} ddlm}m}  || j                  «      | _          || j                  «      | _         || j                  «      | _	        ddl
m} t        t        | j                  «      dd¬«      5 } ||«      | _        d d d «       y y # 1 sw Y   y xY w)Nr   )ÚMosesPunctNormalizer)ÚMosesDetokenizerÚMosesTokenizer)ÚBPEÚrzutf-8)Úencoding)r1   Úsacremoses.normalizer6   Úsacremoses.tokenizer7   r8   r.   r/   r2   r4   Úargostranslate.apply_bper9   Úopenr   r   r3   )r   r6   r7   r8   r9   Úfs         r   Ú	lazy_loadzBPETokenizer.lazy_load6   s‡   € Ø�>‰>Ð!ÝAßLá+¨D¯N©NÓ;ˆDŒNÙ/°·±Ó=ˆDÔÙ2°4·>±>ÓBˆDŒOå4ä”c˜$Ÿ/™/Ó*¨C¸'ÔBð )ÀaÙ"% a£&�”÷)ð )ð "÷)ð )ús   ÂBÂB(r   r   c                 ó"  — | j                  «        | j                  j                  |«      }dj                  | j                  j                  |«      «      }| j                  j                  |j                  d«      j                  d«      «      }|S )Nr(   z
 )
rA   r4   Ú	normalizeÚjoinr1   Útokenizer3   Úsegment_tokensÚstripÚsplit)r   r   Ú
normalizedÚ	tokenizedÚ	segmenteds        r   r   zBPETokenizer.encodeD   sl   € Ø�‰Ôà—_‘_×.Ñ.¨xÓ8ˆ
Ø—H‘H˜TŸ^™^×4Ñ4°ZÓ@ÓAˆ	Ø—O‘O×2Ñ2°9·?±?À7Ó3K×3QÑ3QÐRUÓ3VÓWˆ	àÐr   r   c                 ó´   — | j                  «        | j                  j                  dj                  |«      j	                  dd«      j                  d«      «      S )Nr(   z@@ Ú )rA   r2   Ú
detokenizerD   r+   rH   r   s     r   r   zBPETokenizer.decodeM   sI   € Ø�‰Ôà×Ñ×*Ñ*Ø�H‰H�VÓ×$Ñ$ U¨BÓ/×5Ñ5°cÓ:ó
ð 	
r   N)
r   r   r   r   r   r    rA   r   r   r   r   r   r   r-   r-   ,   sO   „ ð 4ð °Cð À#ó ò)ð˜sð  t¨C¡yó ð
˜T #™Yð 
¨3ô 
r   r-   )	Úpathlibr   Útypingr   Úsentencepiecer"   r   r   r-   r   r   r   ú<module>rR      s0   ðÝ Ý ã ÷$ñ $ô
˜Yô 
ô:&
�9õ &
r   