Ë
    ›¾j&  ã                   óÂ   — d dl mZmZ d dlmZ d dlZd dlZd dlZdZd Z	dZ
dZdZdZd	Zd
Zee
eegZ ee«      Z G d„ d«      Z ej(                  d«      Z G d„ de«      Zy)é    )ÚCounterÚOrderedDict)ÚIterableNz<PAD>z<UNK>é   z<EMPTY>é   z<ROOT>é   c                   óz   — e Zd ZdZdd„Zd„ Zd„ Zed„ «       Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zy)Ú	BaseVocabz| A base class for common vocabulary operations. Each subclass should at least 
    implement its own build_vocab() function.Nc                 ó€   — || _         || _        || _        || _        || _        |�| j                  «        g d¢| _        y )N)ÚlangÚidxÚcutoffÚlowerÚ_unit2idÚ_id2unit)Údatar   r   r   r   Úbuild_vocabÚstate_attrs)Úselfr   r   r   r   r   s         ú_/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/minisbd/modules/vocab.pyÚ__init__zBaseVocab.__init__   s?   € ØˆŒ	ØˆŒ	ØˆŒØˆŒØˆŒ
ØÐØ×ÑÔÚUˆÕó    c                 ó   — t        d«      ‚)NzfThis BaseVocab does not have build_vocab implemented.  This method should create _id2unit and _unit2id)ÚNotImplementedError©r   s    r   r   zBaseVocab.build_vocab   s   € Ü!ð  #Kó  Lð  	Lr   c                 ót   — t        «       }| j                  D ]  }t        | |«      sŒt        | |«      ||<   Œ  |S )zw Returns a dictionary containing all states that are necessary to recover
        this vocab. Useful for serialization.)r   r   ÚhasattrÚgetattr)r   ÚstateÚattrs      r   Ú
state_dictzBaseVocab.state_dict"   sA   € ô “ˆØ×$Ñ$ò 	2ˆDÜ�t˜TÕ"Ü% d¨DÓ1��d’ð	2ð ˆr   c                 ó^   —  | «       }|j                  «       D ]  \  }}t        |||«       Œ |S )z= Returns a new Vocab instance constructed from a state dict. )ÚitemsÚsetattr)Úclsr!   Únewr    Úvalues        r   Úload_state_dictzBaseVocab.load_state_dict+   s8   € ñ ‹eˆØ%×+Ñ+Ó-ò 	&‰KˆD�%Ü�C˜˜uÕ%ð	&àˆ
r   c                 óF   — |€|S | j                   r|j                  «       S |S ©N)r   ©r   Úunits     r   Únormalize_unitzBaseVocab.normalize_unit3   s&   € ð ˆ<ØˆKØ�:Š:Ø—:‘:“<ÐØˆr   c                 ó„   — | j                  |«      }|| j                  v r| j                  |   S | j                  t           S r*   )r-   r   ÚUNKr+   s     r   Úunit2idzBaseVocab.unit2id<   s<   € Ø×"Ñ" 4Ó(ˆØ�4—=‘=Ñ Ø—=‘= Ñ&Ð&à—=‘=¤Ñ%Ð%r   c                 ó    — | j                   |   S r*   )r   )r   Úids     r   Úid2unitzBaseVocab.id2unitC   s   € Ø�}‰}˜RÑ Ð r   c                 óJ   — |D �cg c]  }| j                  |«      ‘Œ c}S c c}w r*   )r0   )r   ÚunitsÚxs      r   ÚmapzBaseVocab.mapF   s   € Ø).Ö/ A�—‘˜Q•Ò/Ð/ùÒ/ó   … c                 óJ   — |D �cg c]  }| j                  |«      ‘Œ c}S c c}w r*   )r3   )r   Úidsr6   s      r   ÚunmapzBaseVocab.unmapI   s   € Ø),Ö- A�—‘˜Q•Ò-Ð-ùÒ-r8   c                 ó�   — | j                   rd| j                   z  nd}t        t        | «      «      |z   }d|›d| j                  ›d�S )Nz(%s)Ú ú<z: ú>)r   ÚstrÚtyper   )r   Úlang_strÚnames      r   Ú__str__zBaseVocab.__str__L   s9   € Ø)-¯ª�6˜DŸI™IÒ%¸ˆÜ”4˜“:‹ Ñ)‰Ú! 4§=£=Ð1Ð1r   c                 ó,   — t        | j                  «      S r*   )Úlenr   r   s    r   Ú__len__zBaseVocab.__len__Q   s   € Ü�4—=‘=Ó!Ð!r   c                 ó¼   — t        |t        «      r| j                  |«      S t        |t        «      st        |t        «      r| j                  |«      S t        d«      ‚)Nz*Vocab key must be one of str, list, or int)Ú
isinstancer@   r0   ÚintÚlistr3   Ú	TypeError©r   Úkeys     r   Ú__getitem__zBaseVocab.__getitem__T   sI   € Ü�cœ3ÔØ—<‘< Ó$Ð$Ü˜œSÔ!¤Z°´TÔ%:Ø—<‘< Ó$Ð$äÐHÓIÐIr   c                 ó<   — | j                  |«      | j                  v S r*   )r-   r   rM   s     r   Ú__contains__zBaseVocab.__contains__\   s   € Ø×"Ñ" 3Ó'¨4¯=©=Ð8Ð8r   c                 ó   — t        | «      S r*   )rF   r   s    r   ÚsizezBaseVocab.size_   s   € ä�4‹yÐr   )Nr=   r   r   F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r!   Úclassmethodr(   r-   r0   r3   r7   r;   rD   rG   rO   rQ   ÚpropertyrS   © r   r   r
   r
      sn   „ ñ1óVòLòð ñó ðòò&ò!ò0ò.ò2ò
"òJò9ð ñó ñr   r
   z\sc                   ó0   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zˆ xZS )ÚVocabc                 óœ   •— t        ‰| �  |i |¤Ž t        dD �cg c]  }| j                  j	                  |«      ‘Œ c}«      | _        y c c}w )N)ÚzhÚjaÚko)Úsuperr   Úanyr   Ú
startswithÚlang_replaces_spaces)r   ÚargsÚkwargsr6   Ú	__class__s       €r   r   zVocab.__init__f   s@   ø€ Ü‰Ñ˜$Ð) &Ò)Ü$'ÐJ\Ö(]ÀQ¨¯©×)=Ñ)=¸aÕ)@Ò(]Ó$^ˆÕ!ùÒ(]s   š"A	c           	      ó~  ‡— | j                   }t        «       Š|D ]*  }|D ]#  }| j                  |d   «      }‰|xx   dz  cc<   Œ% Œ, t        t        gt        t        t        ‰j                  «       «      ˆfd„d¬«      «      z   | _        t        | j                  «      D ��ci c]  \  }}||“Œ
 c}}| _
        y c c}}w )Nr   r   c                 ó   •— ‰|    S r*   rZ   )ÚkÚcounters    €r   ú<lambda>z#Vocab.build_vocab.<locals>.<lambda>r   s   ø€ ÐU\Ð]^ÑU_€ r   T)rN   Úreverse)r   r   r-   ÚPADr/   rK   ÚsortedÚkeysr   Ú	enumerater   )r   ÚparasÚparar,   Ú
normalizedÚiÚwrk   s          @r   r   zVocab.build_vocabj   s¨   ø€ Ø—	‘	ˆÜ“)ˆØò 	)ˆDØò )�Ø!×0Ñ0°°a±Ó9�
Ø˜
Ó# qÑ(Ô#ñ)ð	)ô
 œc˜
¤T¬&´°g·l±l³nÓ1EÓK_ÐimÔ*nÓ%oÑoˆŒÜ)2°4·=±=Ó)A×B¡  A˜˜1™ÓBˆ�ùÓBs   Â"B9c                 ó   — |S r*   rZ   r+   s     r   r-   zVocab.normalize_unitu   s   € àˆr   c                 óŠ   — t         j                  d|j                  «       «      }| j                  r|j	                  dd«      }|S )Nú r=   )ÚSPACE_REÚsubÚlstriprd   Úreplace)r   Útokens     r   Únormalize_tokenzVocab.normalize_tokeny   s6   € Ü—‘˜S %§,¡,£.Ó1ˆà×$Ò$Ø—M‘M # rÓ*ˆEàˆr   )rT   rU   rV   r   r   r-   r   Ú__classcell__)rg   s   @r   r\   r\   e   s   ø„ ô_ò	Còör   r\   )Úcollectionsr   r   Úcollections.abcr   ÚreÚosÚpicklern   ÚPAD_IDr/   ÚUNK_IDÚEMPTYÚEMPTY_IDÚROOTÚROOT_IDÚVOCAB_PREFIXrF   ÚVOCAB_PREFIX_SIZEr
   Úcompilerz   r\   rZ   r   r   ú<module>r�      s€   ðß ,Ý $Û 	Û 	Û à€Ø	
€Ø€Ø	
€Ø€Ø€Ø€Ø
€Ø�S˜% Ð&€Ù˜Ó%Ð ÷Oñ Oðb ˆ2�:‰:�eÓ€ôˆIõ r   