Ë
    b›¾j"3  ã                   ó¦  — d dl Z d dlZd dlmZ d dlmZmZmZmZm	Z	m
Z
mZ ddlmZ ddlmZmZ erddlmZ d	ed
ede
eee	e   f      dedede
e	e      dedegee   f   fd„Zdddddddœddded	ed
ede
eee	e   f      dedede
e	e      dee   fd„Zdededeee	e   f   dedegee   f   fd„Zdededegee   f   fd„Zdddedee   fd„Zdddededee   fd„Zdddefd„Zdddœdddedeee	e   f   dededee   fd„Zd d!œddd"ed#eee	e   f   deee	eee	e   f      f   dedeeeee	e   f   f   fd$„Zddded%ed&edef
d'„Z d(„ Z!y))é    N)Úpartial)ÚTYPE_CHECKINGÚCallableÚDictÚIteratorÚListÚOptionalÚTupleé   )ÚExample)Ú_doc_to_biluo_tags_with_partialÚsplit_bilu_labelé   )ÚLanguageÚlower_levelÚ
orth_levelÚorth_variantsÚwhitespace_levelÚwhitespace_per_tokenÚwhitespace_variantsÚreturnr   c           	      ó.   — t        t        | |||||¬«      S )a\  Create a data augmentation callback that uses orth-variant replacement.
    The callback can be added to a corpus or other data iterator during training.

    lower_level (float): The percentage of texts that will be lowercased.
    orth_level (float): The percentage of texts that will be augmented.
    orth_variants (Optional[Dict[str, List[Dict]]]): A dictionary containing the
        single and paired orth variants. Typically loaded from a JSON file.
    whitespace_level (float): The percentage of texts that will have whitespace
        tokens inserted.
    whitespace_per_token (float): The number of whitespace tokens to insert in
        the modified doc as a percentage of the doc length.
    whitespace_variants (Optional[List[str]]): The whitespace token texts.
    RETURNS (Callable[[Language, Example], Iterator[Example]]): The augmenter.
    ©r   r   r   r   r   r   )r   Úcombined_augmenterr   s         ú`/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/spacy/training/augment.pyÚcreate_combined_augmenterr      s&   € ô, ÜØØØ#Ø)Ø1Ø/ôð ó    g        r   ÚnlpÚexamplec             #   ó’  K  — t        j                   «       |k  rt        | |«      }|rŠt        j                   «       |k  rs|j                  }|j                  «       }	t	        |j
                  «      |	d   d<   t        | ||	d   |d¬«      \  }
}||	d<   |j                  | j                  |
«      |	«      }|rŽt        j                   «       |k  rwt        t        t        |j
                  «      |z  «      «      D ]J  }t        | |t        j                  |«      t        j                  dt        |j
                  «      «      «      }ŒL |–— y ­w)NÚdoc_annotationÚentitiesÚtoken_annotationF©Úlowerr   )ÚrandomÚmake_lowercase_variantÚtextÚto_dictr   Ú	referenceÚmake_orth_variantsÚ	from_dictÚmake_docÚrangeÚintÚlenÚmake_whitespace_variantÚchoiceÚ	randrange)r   r   r   r   r   r   r   r   Úraw_textÚ	orig_dictÚvariant_textÚvariant_token_annotÚ_s                r   r   r   .   s.  è ø€ ô ‡}�}ƒ˜Ò$Ü(¨¨gÓ6ˆÙœŸ™›¨:Ò5Ø—<‘<ˆØ—O‘OÓ%ˆ	Ü2QØ×Ñó3
ˆ	Ð"Ñ# JÑ/ô -?ØØØÐ(Ñ)ØØô-
Ñ)ˆÐ)ð )<ˆ	Ð$Ñ%Ø×#Ñ# C§L¡L°Ó$>À	ÓJˆÙœvŸ}™}›Ð1AÒAÜ”sœ3˜w×0Ñ0Ó1Ð4HÑHÓIÓJò 	ˆAÜ-ØØÜ—‘Ð1Ó2Ü× Ñ  ¤C¨×(9Ñ(9Ó$:Ó;ó	‰Gð	ð ƒMùs   ‚EEÚlevelr%   c                 ó(   — t        t        || |¬«      S )a  Create a data augmentation callback that uses orth-variant replacement.
    The callback can be added to a corpus or other data iterator during training.

    level (float): The percentage of texts that will be augmented.
    lower (float): The percentage of texts that will be lowercased.
    orth_variants (Dict[str, List[Dict]]): A dictionary containing
        the single and paired orth variants. Typically loaded from a JSON file.
    RETURNS (Callable[[Language, Example], Iterator[Example]]): The augmenter.
    )r   r9   r%   )r   Úorth_variants_augmenter)r9   r%   r   s      r   Úcreate_orth_variants_augmenterr<   U   s   € ô Ü¨}ÀEÐQVôð r   c                 ó$   — t        t        | ¬«      S )a3  Create a data augmentation callback that converts documents to lowercase.
    The callback can be added to a corpus or other data iterator during training.

    level (float): The percentage of texts that will be augmented.
    RETURNS (Callable[[Language, Example], Iterator[Example]]): The augmenter.
    ©r9   )r   Úlower_casing_augmenterr>   s    r   Úcreate_lower_casing_augmenterr@   f   s   € ô Ô)°Ô7Ð7r   c              #   ó   K  — |–— y ­w©N© )r   r   s     r   Údont_augmentrD   r   s   è ø€ Ø
ƒMùs   ‚c             #   ó`   K  — t        j                   «       |k\  r|–— y t        | |«      –— y ­wrB   )r&   r'   )r   r   r9   s      r   r?   r?   v   s(   è ø€ ô ‡}�}ƒ˜%ÒØ‹ä$ S¨'Ó2Ó2ùs   ‚,.c                 ó,  — |j                  «       }t        |j                  «      |d   d<   | j                  |j                  j                  «       «      }|j                  D �cg c]  }|j                  ‘Œ c}|d   d<   |j                  ||«      S c c}w )Nr!   r"   r#   ÚORTH)r)   r   r*   r-   r(   r%   Úlower_r,   )r   r   Úexample_dictÚdocÚts        r   r'   r'      s‡   € Ø—?‘?Ó$€LÜ1PØ×Ñó2€LÐ!Ñ" :Ñ.ð �,‰,�w—|‘|×)Ñ)Ó+Ó
,€CØBI×BSÑBSÖ/T¸Q°·³Ò/T€LÐ#Ñ$ VÑ,Ø×Ñ˜S ,Ó/Ð/ùò 0Us   Á#B)r9   r%   c             #   ód  K  — t        j                   «       |k\  r|–— y |j                  }|j                  «       }t        |j                  «      |d   d<   t        | ||d   ||d uxr t        j                   «       |k  ¬«      \  }}||d<   |j                  | j                  |«      |«      –— y ­w)Nr!   r"   r#   r$   )r&   r(   r)   r   r*   r+   r,   r-   )	r   r   r   r9   r%   r4   r5   r6   r7   s	            r   r;   r;   ‰   s³   è ø€ ô ‡}�}ƒ˜%ÒØ‹à—<‘<ˆØ—O‘OÓ%ˆ	Ü2QØ×Ñó3
ˆ	Ð"Ñ# JÑ/ô -?ØØØÐ(Ñ)ØØ $Ð&ÒB¬6¯=©=«?¸UÑ+Bô-
Ñ)ˆÐ)ð )<ˆ	Ð$Ñ%Ø×Ñ §¡¨\Ó :¸IÓFÓFùs   ‚B.B0Fr$   ÚrawÚ
token_dictc                ób  — |j                  dg «      }|j                  dg «      }|s||fS |r-|D �cg c]  }|j                  «       ‘Œ }}|j                  «       }|s	||d<   ||fS |j                  dg «      }|D �	cg c]  }	t        j                  |	d   «      ‘Œ }
}	t	        t        |«      «      D ]?  }t	        t        |«      «      D ]&  }||   ||   d   v sŒ||   ||   d   v sŒ|
|   ||<   Œ( ŒA |j                  dg «      }|D �	cg c]  }	t        j                  |	d   «      ‘Œ }
}	t	        t        |«      «      D ]Î  }t	        t        |«      «      D ]µ  }||   ||   d   v sŒ||   t        j                  j                  ||   d   «      v sŒ<t        j                  ddg«      }t        ||   d   «      d	k(  r||   d   j                  ||   «      }n)||   d   D ]  }||   |v sŒ|j                  ||   «      }Œ  |
|   |   ||<   Œ· ŒÐ ||d<   t        |«      }||fS c c}w c c}	w c c}	w )
NrG   ÚTAGÚsingleÚvariantsÚtagsÚpairedr   r   r   )Úgetr%   r&   r2   r.   r0   Ú	itertoolsÚchainÚfrom_iterableÚindexÚconstruct_modified_raw_text)r   rM   rN   r   r%   ÚwordsrS   ÚwÚndsvÚxÚpunct_choicesÚword_idxÚ	punct_idxÚndpvÚpair_idxÚpairs                   r   r+   r+   ¤   sy  € ð �N‰N˜6 2Ó&€EØ�>‰>˜% Ó$€DáØ�JˆÐÙØ$)Ö*˜q�—‘•Ð*ˆÐ*Ø�i‰i‹kˆáØ"ˆ
�6ÑØ�JˆÐà×Ñ˜X rÓ*€DØ;?Ö@°a”V—]‘] 1 Z¡=Õ1Ð@€MÐ@Üœ#˜e›*Ó%ò ;ˆÜœs 4›yÓ)ò 	;ˆIà�X‘ $ y¡/°&Ñ"9Ò9Ø˜(‘O t¨I¡°zÑ'BÒBà"/°	Ñ":��h’ñ	;ð;ð ×Ñ˜X rÓ*€DØ;?Ö@°a”V—]‘] 1 Z¡=Õ1Ð@€MÐ@Üœ#˜e›*Ó%ò EˆÜœs 4›yÓ)ò 	EˆIØ�H‰~  i¡°Ñ!8Ò8¸UØñ>ä—‘×.Ñ.¨t°I©¸zÑ/JÓKò>Lô "Ÿ=™=¨!¨Q¨Ó0�ä�t˜I‘ vÑ.Ó/°1Ò4Ø# I™¨vÑ6×<Ñ<¸TÀ(¹^ÓL‘Hð !% Y¡°
Ñ ;ò C˜Ø  ™?¨dÒ2Ø'+§z¡z°%¸±/Ó'B™HðCð #0°	Ñ":¸8Ñ"D��h’ñ	EðEð" €JˆvÑÜ
% jÓ
1€CØ�
ˆ?ÐùòM +ùò Aùò As   ±H"Á;H'ÄH,Ú
whitespaceÚpositionc                 ó<  — |j                  «       }t        |j                  «      |d   d<   |j                  di «      }|j                  di «      }t	        |j                  «      dk(  s|d|vsxt	        |j                  dg «      «      dkD  sZt	        |j                  j
                  «      dkD  s8|j                  j                  d«      r|j                  j                  dd¬	«      s|S |j                  dg «      }t	        |«      }d|cxk  r|k  sJ ‚ J ‚|j                  j                  d
«      rkd}	|dkD  rN||k  rI|d   |dz
     }
|d   |   }d|
v r2d|v r.t        |
«      \  }}t        |«      \  }}|dv r|dv r
||k(  rd|› �}	|d   j                  ||	«       n|d= |d   j                  ||«       |d   j                  |d«       |j                  j                  d«      r|d   j                  |d«       n|d= |j                  j                  d«      r|d   j                  ||«       n|d= |j                  j                  d«      r|d   j                  |d«       n|d= |j                  j                  d«      r|d   j                  |d«       n|d= |j                  j                  dd¬	«      r�|dk(  r|d   j                  |d«       n|d   j                  ||dz
  «       t        t	        |d   «      «      D ]  }|d   |   |k\  sŒ|d   |xx   dz  cc<   Œ  |d   j                  |d«       n|d= |d= |j                  j                  d«      r|d   j                  |d«       n|d= t        |«      }t        j                  | j                  |«      |«      S )a{  Insert the whitespace token at the specified token offset in the doc.
    This is primarily intended for v2-compatible training data that doesn't
    include links or spans. If the document includes links, spans, or partial
    dependency annotation, it is returned without modifications.

    The augmentation follows the basics of the v2 space attachment policy, but
    without a distinction between "real" and other tokens, so space tokens
    may be attached to space tokens:
    - at the beginning of a sentence attach the space token to the following
      token
    - otherwise attach the space token to the preceding token

    The augmenter does not attempt to consolidate adjacent whitespace in the
    same way that the tokenizer would.

    The following annotation is used for the space token:
    TAG: "_SP"
    MORPH: ""
    POS: "SPACE"
    LEMMA: ORTH
    DEP: "dep"
    SENT_START: False

    The annotation for each attribute is only set for the space token if there
    is already at least partial annotation for that attribute in the original
    example.

    RETURNS (Example): Example with one additional space token.
    r!   r"   r#   r   rG   ÚlinksÚDEPT)Úrequire_completeÚENT_TYPEÚOr   ú-)ÚBÚI)ro   ÚLzI-ÚSPACYFrP   Ú_SPÚLEMMAÚPOSÚSPACEÚMORPHÚ ÚHEADÚdepÚ
SENT_START)r)   r   r*   rU   r0   ÚspansÚhas_annotationr   Úinsertr.   rZ   r   r,   r-   )r   r   re   rf   rI   Údoc_dictrN   r[   ÚlengthÚentityÚent_prevÚent_nextÚent_iob_prevÚent_type_prevÚent_iob_nextÚent_type_nextÚirM   s                     r   r1   r1   Û   s¿  € ðF —?‘?Ó$€LÜ1PØ×Ñó2€LÐ!Ñ" :Ñ.ð ×ÑÐ 0°"Ó5€HØ×!Ñ!Ð"4°bÓ9€Jô 	ˆG×ÑÓ !Ò#Ø˜Ñ#Üˆx�|‰|˜G RÓ(Ó)¨AÒ-Üˆw× Ñ ×&Ñ&Ó'¨!Ò+à×Ñ×,Ñ,¨UÔ3Ø×%Ñ%×4Ñ4°UÈTÐ4ÔRð ˆØ�N‰N˜6 2Ó&€EÜ�‹Z€FØ�Ô"˜FÒ"Ð"Ñ"Ð"Ð"Ø×Ñ×'Ñ'¨
Ô3àˆØ�aŠ<˜H vÒ-Ø 
Ñ+¨H°q©LÑ9ˆHØ 
Ñ+¨HÑ5ˆHØ�h‰ 3¨(¡?Ü.>¸xÓ.HÑ+�˜mÜ.>¸xÓ.HÑ+�˜mà  JÑ.Ø$¨
Ñ2Ø%¨Ò6à! - Ð1�FØ�Ñ×#Ñ# H¨fÕ5à�ZÐ ØˆvÑ×Ñ˜h¨
Ô3ØˆwÑ×Ñ˜x¨Ô/Ø×Ñ×'Ñ'¨Ô.Ø�5Ñ× Ñ  ¨5Õ1à�uÐØ×Ñ×'Ñ'¨Ô0Ø�7Ñ×"Ñ" 8¨ZÕ8à�wÐØ×Ñ×'Ñ'¨Ô.Ø�5Ñ× Ñ  ¨7Õ3à�uÐØ×Ñ×'Ñ'¨Ô0Ø�7Ñ×"Ñ" 8¨RÕ0à�wÐØ×Ñ×'Ñ'¨ÀÐ'ÔEØ�qŠ=Ø�vÑ×%Ñ% h°Õ2à�vÑ×%Ñ% h°¸1±Ô=Ü”s˜: fÑ-Ó.Ó/ò 	+ˆAØ˜&Ñ! !Ñ$¨Ó0Ø˜6Ñ" 1Ó%¨Ñ*Ô%ð	+ð 	�5Ñ× Ñ  ¨5Õ1à�vÐØ�uÐØ×Ñ×'Ñ'¨Ô5Ø�<Ñ ×'Ñ'¨°%Õ8à�|Ð$Ü
% jÓ
1€CÜ×Ñ˜SŸ\™\¨#Ó.°Ó=Ð=r   c                 óX   — d}t        | d   | d   «      D ]  \  }}||z  }|sŒ|dz  }Œ |S )z2Construct modified raw text from words and spaces.rw   rG   rq   ú )Úzip)rN   rM   ÚorthÚspacys       r   rZ   rZ   Q  sG   € à
€CÜ˜: fÑ-¨z¸'Ñ/BÓCò ‰ˆˆeØˆt‰ˆÚØ�3‰J‰Cðð €Jr   )"rV   r&   Ú	functoolsr   Útypingr   r   r   r   r   r	   r
   r   r   Ú	iob_utilsr   r   Úlanguager   ÚfloatÚstrr   r   r<   r@   rD   r?   r'   r;   Úboolr+   r/   r1   rZ   rC   r   r   ú<module>r”      s  ðÛ Û Ý ß Q× QÑ Qå ß HáÝ#ðØðàðð ˜D  d¨4¡j Ñ1Ñ2ðð ð	ð
  ðð " $ s¡)Ñ,ðð ˆz˜7Ð# X¨gÑ%6Ð6Ñ7óðJ ØØ59Ø!Ø"%Ø/3ò$Ø	ð$àð$ð ð	$ð
 ð$ð ˜D  d¨4¡j Ñ1Ñ2ð$ð ð$ð  ð$ð " $ s¡)Ñ,ð$ð ˆgÑó$ðNØðØðØ/3°C¸¸d¹°OÑ/Dðàˆz˜7Ð# X¨gÑ%6Ð6Ñ7óð"	8Øð	8àˆz˜7Ð# X¨gÑ%6Ð6Ñ7ó	8ð�jð ¨7ð °xÀÑ7Hó ð3Ø	ð3Ø%ð3Ø16ð3àˆgÑó3ð0 
ð 0°Wó 0ð ØòGØ	ðGàðGð ˜˜T $™Z˜Ñ(ðGð
 ðGð ðGð ˆgÑóGðB ò4Ø	ð4à	ð4ð �S˜$˜s™)�^Ñ$ð4ð ˜˜T $ s¨D°©I ~Ñ"6Ñ7Ð7Ñ8ð	4ð ð4ð ˆ3��S˜$˜s™)�^Ñ$Ð$Ñ%ó4ðns>Ø	ðs>àðs>ð ðs>ð ð	s>ð
 ós>ólr   