
    h                        S SK r S SKrS SKrS SKrS SKJrJr  S SKrS SKJ	r	  S SK
JrJr  S SKJrJrJrJrJr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J r J!r!J"r"  SSK#J$r$  \RJ                  S 5       r&\RJ                  " 5       S 5       r'\RJ                  S 5       r(\RR                  RU                  S5      S 5       r+\RR                  RU                  S5      S 5       r,Sr-\RR                  RU                  S5      S 5       r.S r/S r0S r1S r2S r3S r4S r5S r6S r7\RR                  Rq                  S 5      S! 5       r9S" r:S# r;S$ r<S% r=S& r>S' r?S( r@S) rAS* rBS+ rCS, rDS- rES. rFS/ rGS0 rHS1 rIS2 rJ\RR                  R                  S3/ S4QS5S6/S /S /S7//S S7/S//44/ S8QS9S6/S /S /S /S7/// S:QS;//44S<S=/S5S6/S /S S7//S S7/S7//44/ S>Q/ S?QS S7/S/S//S /S /S7S//44/ S?Q/ S@QS /S7/SS;//S /S7/S/S//44SAS</S<// S //S7//44/ SBQ/ SCQS /S S7/S7/S//S S7/S7S/S;//44/5      SD 5       rLSE rMSF rNSG rOSH rPSI rQSJ rRSK rSSL rTSM rUSN rVSO rWSP rXSQ rYSR rZSS r[ST r\g)U    N)Adamcompounding)English)DocDocBin)	AlignmentCorpusExamplebiluo_tags_to_offsetsbiluo_tags_to_spansdocs_to_jsoniob_to_biluooffsets_to_biluo_tagsget_alignments)AlignmentArray)json_to_docs)train_while_improving)get_words_and_spacesload_config_from_strload_model_from_path	minibatch   )make_tempdirc                      [        5       n / SQn/ SQn/ SQn/ SQn/ SQn/ SQn/ SQnS/[        U5      -  nS	US
'   SUS'   SUS'   SUS'   SUS'   SSS.n	[        U R                  UUUUUUUUS9	n
Xl        U
$ )N
Sarah'ssisterflewtoSiliconValleyviaLondon.)
NNPPOSNNVBDINr'   r'   r+   r'   r&   )
PROPNPARTNOUNVERBADPr,   r,   r0   r,   PUNCT)
NounType=prop|Number=singzPoss=yeszNumber=singzTense=past|VerbForm=fin r2   r2   r3   r2   zPunctType=peri)
r   r      r4   r4         r4         )
posscasensubjROOTprepcompoundpobjr=   r?   punct)
r   r   r   flyr!   r"   r#   r$   r%   r&   OB-PERSONr   zI-PERSON   B-LOCr8   I-LOCr5   zB-GPE         ?        )TRAVELBAKING)wordstagsposmorphsheadsdepslemmasents)r   lenr   vocabcats)nlprL   rM   rN   rO   rP   rQ   rR   rS   rV   docs              \/home/james-whalen/.local/lib/python3.13/site-packages/spacy/tests/training/test_training.pyrX   rX   #   s    
)C^ELD
]C=F +EaD^F53u:DDGDGDGDGDGS)D
		
C HJ    c                  &    / SQ/ SQ/ SQ/ SQ/ SQS.$ )N)rD   r   r4   r6   r8   r5   r7   )HithereeveryoneItisjustme)TTTTTTF)INTJADVPRONre   AUXrd   re   )rD   r   r   rD   r   r   r   )idsrL   spacesrM   sent_starts rj   rZ   rY   merged_dictrk   H   s     %F=E, rZ   c                  .    [        5       n U R                  $ N)r   rU   )rW   s    rY   rU   rU   S   s    
)C99rZ   i  c            
      T   S/ /S/ /S/ /S/ /S/ /S/ /SS//S	S
//SS///	n [        5       nUR                  S5      nU  H"  u  p4U H  u  pVnUR                  U5        M     M$     UR                  5         [	        S5       H^  n[
        R                  " U 5        U  H?  u  p[        R                  " UR                  U	5      SU
05      nUR                  U/5        MA     M`     [        5        nUR                  U5        [        U5      nSSS5        U  H}  u  pW" U	5      nUR                   Vs0 s H%  oR                  UR                   4UR"                  _M'     nnU
 H.  u  pVnXV4U;   a  UXV4   U:X  d   e  Mg  U
(       d  M%  [%        U5      e   M     g! , (       d  f       N= fs  snf )a  Test that adding entities and resuming training works passably OK.
There are two issues here:
1) We have to re-add labels. This isn't very nice.
2) There's no way to set the learning rate for the weight update, so we
    end up out-of-scale, causing it to learn too fast.
heyhowdyz	hey therehellohizi'm looking for a place to eatz,i'm looking for a place in the north of town)   $   LOCATIONzshow me chinese restaurants)rG      CUISINEzshow me chines restaurants)rG      rw   ner   entitiesN)r   add_pipe	add_label
initializerangerandomshuffler
   	from_dictmake_docupdater   to_diskr   rS   
start_charend_charlabel_	Exception)
TRAIN_DATArW   ry   _offsetsstartendlabelitnraw_textentity_offsetsexample	model_dirnlp2rX   entrS   s                    rY   test_issue999r   Y   s    
	"	b	"	r
	)2.	7:N9OP	&);(<=	%(:';<
J )C
,,u
C 
!(EMM%  ") ! NNRyz"(2$H''X&^(DG JJy!	 )3  
9I#I. 
 %/ 8nFIhhOhs.

:hO!/E|t#UL)U222!>#D/) "0 %/	 
 Ps   +F-,F%
F"i2  c                     SSSSSS.SSSS.SS	SS.S
SSS.SSSS.SSSS.SSSS.SSSS.SSSS./	/ S.SSSS.SS	SS.SSSS.SSSS.SSSS.S S!SS.S"S#SS.S$SSS.S%SSS.S&SSS.S'SSS.S(S)SS.// S./S*S+S,.S-S.S,./S/.S0SS1SS.SS2SS.SS3SS.S
S4SS.SS5SS.SS6SS.SS7SS.SS8SS.SS9SS.SSSS./
/ S.SSSS.// S./S*S.S,.S-S+S,./S/./S:.n [        5       n/ S;Qn[        5        nUS<-  n[        U /5      n[        XRS=9R	                  5       nUR                  S>5       nUR                  U5        S S S 5        [        U5      n[        U" U5      5      n	[        U	5      S:X  d   e/ n
U	 H"  nU
R                  UR                  5       5        M$     [        U
5      S:X  d   e S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)?Nr   zRHow should I cook bacon in an oven?
I've heard of people cooking bacon in an oven.HowrB   )idorthry   rD   shouldr   Ir4   cookr6   baconr8   inr5   anr7   ovenrG   ?)tokensbrackets	   

      z've   heard   ofrx   peoplerv   cooking            rz   r&   bakingrH   )r   value
not_bakingrI   )raw	sentencesrV   z5What is the difference between white and brown eggs?
Whatr`   the
differencebetweenwhiteandbrowneggsr   
paragraphs)ORTH
SENT_STARTENT_IOBENT_TYPEztest4402.spacy)docsattrswb)r   r   r   r   to_bytesopenwriter	   listrT   extendsplit_sents)	json_datarW   r   tmpdiroutput_filer   datafile_reader
train_datasplit_train_dataegs               rY   test_issue4402r      s     m $%eC@#$hsC#$c#>#$fSA#$gcB#$d3?#$d3?#$fSA#$c#>
# %'  $%d3?#%s3?#%uSA#%wsC#%tC@#%xD#%yE#%wsC#%tC@#%tC@#%vcB#%s3?# %' D '5*S9G'R P $%fSA#$d3?#$eC@#$l3G#$iD#$gcB#$eC@#$gcB#$fSA#$c#># %' (*4 DESUV!& '5*S9)SB
EIL )C9E	6//YK(4-668d#uKK $$&+&
:!###B##BNN$45 #$))) 
 $#	 
s%   (:F?"F.4A0F?.
F<	8F??
Ga  
[nlp]
lang = "en"
pipeline = ["tok2vec", "tagger"]

[components]

[components.tok2vec]
factory = "tok2vec"

[components.tok2vec.model]
@architectures = "spacy.Tok2Vec.v1"

[components.tok2vec.model.embed]
@architectures = "spacy.MultiHashEmbed.v1"
width = ${components.tok2vec.model.encode:width}
attrs = ["NORM","PREFIX","SUFFIX","SHAPE"]
rows = [5000,2500,2500,2500]
include_static_vectors = false

[components.tok2vec.model.encode]
@architectures = "spacy.MaxoutWindowEncoder.v1"
width = 96
depth = 4
window_size = 1
maxout_pieces = 3

[components.tagger]
factory = "tagger"

[components.tagger.model]
@architectures = "spacy.Tagger.v2"
nO = null

[components.tagger.model.tok2vec]
@architectures = "spacy.Tok2VecListener.v1"
width = ${components.tok2vec.model.encode:width}
upstream = "*"
iu  c            	      v  ^
 SS/ SQ04SS/ SQ04/n [         R                  " [        [        5      5      n/ m
U  H>  nT
R	                  [
        R                  " UR                  US   5      US   5      5        M@     UR                  U
4S jS	9n[        S
5       H  n0 nUR                  T
X5S9  M     / SQn[        UR                  USS95      n[        UR                  USS95      nUSS  V	s/ s H  oS   R                  PM     sn	USS  V	s/ s H  oS   R                  PM     sn	:X  d   egs  sn	f s  sn	f )z<Test that an empty document doesn't mess up an entire batch.zI like green eggsrM   )NVJr   zEat blue ham)r   r   r   r   rD   c                     > T $ rm   rj   )train_exampless   rY   <lambda> test_issue7029.<locals>.<lambda>  s    NrZ   )get_examples2   sgdlosses)firstsecondthirdfourthr   thensomer3   )
batch_sizer6   N)r   from_configr   CONFIG_7029appendr
   r   r   r~   r   r   r   pipetag_)r   rW   t	optimizerir   textsdocs1docs2rX   r   s             @rY   test_issue7029r     s0    
v';<=	&/23J 

2;?
@CNg//QqT0BAaDIJ ,BCI2Y

>y
@  NE%A./E%A./E#(":.:CFKK:.%PSQS*2U*3q6;;*2UUUU.2Us   /D1D6c                     / SQn/ SQn[        XUS9n[        S5      [        S5      S4/n[        X45      nU/ SQ:X  d   eg )N)r   r    r!   r%   r&   )TTTFTrL   rh   
I flew to zI flew to LondonLOCrB   rB   rB   U-LOCrB   r   rT   r   en_vocabrL   rh   rX   r{   rM   s         rY   test_gold_biluo_Ur  "  sK    .E,F
hF
3C\"C(:$;UCDH /D0000rZ   c                     / SQn/ SQn[        XUS9n[        S5      [        S5      S4/n[        X45      nU/ SQ:X  d   eg )N)r   r    r!   San	Franciscor&   )TTTTFTr   r   I flew to San Franciscor   )rB   rB   rB   rE   L-LOCrB   r  r  s         rY   test_gold_biluo_BLr
  +  sK    8E2F
hF
3C\"C(A$BEJKH /D9999rZ   c                     / SQn/ SQn[        XUS9n[        S5      [        S5      S4/n[        X45      nU/ SQ:X  d   eg )Nr   r    r!   r  r  r#   r&   TTTTTFTr   r   I flew to San Francisco Valleyr   )rB   rB   rB   rE   rF   r	  rB   r  r  s         rY   test_gold_biluo_BILr  4  sK    BE8F
hF
3C\"C(H$I5QRH /DBBBBrZ   c                    / SQn/ SQn[        XUS9n[        S5      [        S5      S4[        S5      [        S5      S4/n[        R                  " [        5         [        X45        S S S 5        g ! , (       d  f       g = f)Nr  r  r   r   r  r   r  )r   rT   pytestraises
ValueErrorr   )r  rL   rh   rX   r{   s        rY   test_gold_biluo_overlapr  =  sk    BE8F
hF
3C	\	C @A5I	\	C 9:EBH 
z	"c, 
#	"	"s   A00
A>c                     / SQn/ SQn[        XUS9n[        S5      [        S5      S4/n[        R                  " [        5         [        X45      nS S S 5        W/ SQ:X  d   eg ! , (       d  f       N= f)N)r   r    r!   r  r  zValley.)TTTTTFr   r   r  r   )rB   rB   rB   -r  r  )r   rT   r  warnsUserWarningr   r  s         rY   test_gold_biluo_misalignr  I  se    >E2F
hF
3C\"C(H$I5QRH	k	"$S3 
#1111 
#	"s   A$$
A2c                 *   / SQn/ SQnU Vs/ s H  o0R                   R                  U5      PM     nn[        XS9n[        XS9nUR                  S[        R
                  " USS95      n[        XV5      nUR                  SSS9nU/ SQ:X  d   eg s  snf )	Nr   likestuffr.   r/   r.   rL   TAGuint64)dtypeT	as_string)stringsaddr   
from_arraynumpyarrayr
   get_aligned)r  rL   rM   tagtag_ids	predicted	referencer   s           rY   test_example_constructorr/  S  s    "E#D489DS##C(DG9H*IH*I$$UEKKx,PQIi+Gu5D++++ :s   $Bc                     / SQn/ SQn[        XS9n[        R                  " USU05      nUR                  SSS9nU/ SQ:X  d   eg )Nr  r  r  TAGSr   Tr#  )r   r
   r   r*  )r  rL   rM   r-  r   s        rY   test_example_from_dict_tagsr2  _  sP    "E#DH*I	FD>:Gu5D++++rZ   c                     / SQn/ SQn[        XUS9n[        R                  " USU05      nUR                  5       nU/ SQ:X  d   eg )NabcdTTFTr   rL   )NNNNr   r
   r   get_aligned_nerr  rL   rh   r-  r   ner_tagss         rY   test_example_from_dict_no_nerr>  h  sL     E&FH&9I	GU+;<G&&(H////rZ   c                     / SQn/ SQn[        XUS9n[        R                  " X1/ SQS.5      nUR                  5       nU/ SQ:X  d   eg )Nr4  r9  r   )r   NNNrL   r{   r:  r<  s         rY   test_example_from_dict_some_nerrA  q  sP     E&FH&9I0KLG &&(H2222rZ   zignore::UserWarningc                    SSSSSSSS.SSSS	S.S
SSSS.SSSSS.SSSSS./0/0/S./n[        [        U5      5      n[        U5      S:X  d   eU H  nUR                  S5      (       d  M   e   W H  nUR                  S:X  a  M   e   [        [        UR                  U Vs/ s H  oUR                  PM     snU Vs/ s H  n[        UR                  5      PM     snS9U5      nUR                  5       nU/ SQ:X  d   eg s  snf s  snf )NrD   r   r   nnr'   zMs.)depheadr+  r   r;   Haagr<   r   VBZplaysdobjr   Eliantir@   r&   r   r   r   )NNNNN)r   r   rT   has_annotationent_iobr
   r   rU   textboolwhitespace_r;  )r  r   r   rX   tokenwr   r=  s           rY   test_json_to_docs_no_nerrS  |  sY      $(,au U+2,-+0,2	!" ,2,-+0,3	!" ,2,.+0,5	!" )0CQT U)'" 	
"DF T"#Dt9>>%%i0000 }}!!! 	II#&'3a663'145AD'5	

 	
B !!#H5555 (5s   %D D	c                 0   / SQn/ SQn/ SQn[        XS9n[        R                  " XBUS.5      nUR                  S:X  d   eUR	                  5       n[        U5      S:X  d   eUS   R                  S	:X  d   eUS
   R                  S:X  d   e/ SQn/ SQn/ SQn[        XS9n[        R                  " XBUS.5      nUR                  S:X  d   eUR	                  5       n[        U5      S:X  d   eUS   R                  S	:X  d   eUS
   R                  S:X  d   eg )N)r   r    r!   San Francisco Valleyhadzloads of fun)
r   r    r!   r  r  r#   rV  loadsr   fun)
TFFFFFTFFFr  )rL   ri   z0I flew to San Francisco Valley had loads of fun r   r   zI flew to San Francisco Valley rD   zhad loads of fun )	r   r    r!   r  r  r#   rV  rW  zof fun)r   r    r!   San Franciscor#   rV  zloads ofrX  )TFFFFTFF)r   r
   r   rN  r   rT   )r  rL   
gold_wordsri   rX   r   split_exampless          rY   test_split_sentencesr\    s.   NE_JVK
h
$C+%VWG<<MMMM((*N~!###!!!%FFFF!!!%8888WEYJHK
h
$C+%VWG<<MMMM((*N~!###!!!%FFFF!!!%8888rZ   c                 p   / SQn/ SQn[        XUS9nSn[        U5      [        US-   5      S4/n/ SQn[        R                  " XGUS.5      nUR	                  5       n	U	/ S	Q:X  d   e[        S
5      [        S5      S4[        U5      [        US-   5      S4/n/ SQn[        R                  " XGUS.5      nUR	                  5       n	U	/ SQ:X  d   e[        S
5      [        S5      S4[        U5      [        US-   5      S4/n/ SQn[        R                  " XGUS.5      nUR	                  5       n	U	/ SQ:X  d   eg )N)Mr and 	Mrs Smithflew torU  r&   TTTFFr   Mr and Mrs Smith flew to rU  r   )Mr and Mrs Smithr    r!   r  r  r#   r&   r@  r   r^  rc  PERSON	Mr andMrsSmithr    r!   r  r  r#   r&   )rB   U-PERSONrB   r   rB   
Mr and Mrs)rB   NrB   r   rB   r   rT   r
   r   r;  
r  en_tokenizerrL   rh   rX   prefixr{   rZ  r   r=  s
             rY   test_gold_biluo_one_to_manyro    sQ   LE-F
hF
3C(FVc&+A"ABEJKHVJx%PQG&&(H4444 
Y/0(;	Vc&#99:EBH
 ]Jx%PQG&&(H;;;; 
Y\*H5	Vc&#99:EBH
 ]Jx%PQG&&(H5555rZ   c                    / SQn/ SQn[        XUS9nSn[        U5      [        US-   5      S4/n/ SQn[        R                  " XGUS.5      nUR	                  5       n	U	/ S	Q:X  d   e[        S
5      [        S5      S4[        U5      [        US-   5      S4/n/ SQn[        R                  " XGUS.5      nUR	                  5       n	/ SQn
X:X  d   eg )Nre  )	TTTTTTTFFr   rb  rU  r   )rc  r`  rU  r&   r@  )	rB   rB   rB   rB   rB   rE   rF   r	  rB   r^  rc  rd  )rf  r_  r`  rU  r&   )	rB   rC   zL-PERSONrB   rB   rE   rF   r	  rB   rk  )r  rm  rL   rh   rX   rn  r{   rZ  r   r=  expecteds              rY   test_gold_biluo_many_to_onerr    s    WEEF
hF
3C(FVc&+A"ABEJKHMJx%PQG&&(HPPPP 
Y/0(;	Vc&#99:EBH QJx%PQG&&(HVHrZ   c                    / SQn/ SQn[        XUS9nSn[        U5      [        US-   5      S4/n/ SQn[        R                  " XGUS.5      nUR	                  5       n	U	/ S	Q:X  d   e[        S
5      [        S5      S4[        U5      [        US-   5      S4/n/ SQn[        R                  " XGUS.5      nUR	                  5       n	U	/ SQ:X  d   eg )N)rj  rh  r    r!   rY  r#   r&   )TTTTTFFr   rb  rU  r   )Mrzand Mrs Smithr`  r  Francisco Valleyr&   r@  rB   rB   rB   rB   rE   r	  rB   r^  rc  rd  )rf  r_  r`  r  ru  r&   )NNrB   rB   rE   r	  rB   rk  rl  s
             rY   test_gold_biluo_misalignedrw    s    QE9F
hF
3C(FVc&+A"ABEJKHSJx%PQG&&(HBBBB 
Y/0(;	Vc&#99:EBH TJx%PQG&&(HDDDDrZ   c                     [        / SQS5      u  p#[        XUS9nSn[        U5      [        US-   5      S4/n/ SQn/ SQn[        R                  " XGXS	.5      n	U	R                  5       n
U
/ S
Q:X  d   eg )N)r   r    r!   rY  r#   r&   z I flew  to San Francisco Valley.r   zI flew  to rU  r   )r   r     r!   rU  r&   )TTFTFFrL   rh   r{   rv  )r   r   rT   r
   r   r;  )r  rm  rL   rh   rX   rn  r{   rZ  gold_spacesr   r=  s              rY   %test_gold_biluo_additional_whitespacer|    s    (;*ME hF
3CFVc&+A"ABEJKHFJ9K[OG &&(HBBBBrZ   c                    U" S5      n/ SQn/ SQnS/n[         R                  " X#XES.5      nUR                  5       nU/ SQ:X  d   eU" S5      n/ SQn/ SQnS/n[         R                  " X#XES.5      nUR                  5       nU/ S	Q:X  d   eg )
NzI'll return the A54 amount)r   'llreturnr   A54amount)FTTTFTF)r   r   MONEYrz  )rB   rB   rB   rB   zU-MONEYrB   zI'll return the $54 amount)r   r~  r  r   $r  r  )rB   rB   rB   rB   zB-MONEYzL-MONEYrB   )r
   r   r;  )r  rm  rX   rZ  r{  r{   r   r=  s           rY   test_gold_biluo_4791r  -  s    
3
4CCJ?K!"H[OG &&(H;;;;
3
4CCJ?K!"H[OG &&(HFFFFrZ   c                     Sn/ SQnSS/nU " U5      n[        XC5      nXR:X  d   e[        XB5      nU Vs/ s H  owS   (       d  M  UPM     nnXc:X  d   eg s  snf )N$I flew to Silicon Valley via London.rB   rB   rB   rE   r	  rB   U-GPErB   )r      r   )   #   GPEr   )r   r   )rm  rN  
biluo_tagsr   rX   biluo_tags_convertedoffsets_convertedr   s           rY   'test_roundtrip_offsets_biluo_conversionr  C  sl    1DEJ0G
t
C0>----c>(/:q6:''' ;s   AAc                 N   U " S5      n/ SQn[        X5      nU Vs/ s H  oDR                  (       d  M  UPM     nn[        U5      S:X  d   eUS   R                  S:X  d   eUS   R                  S:X  d   eUS   R                  S:X  d   eUS   R                  S	:X  d   eg s  snf )
Nr  r  r   r   zSilicon Valleyr   rD   r%   r  )r   r   rT   rN  )rm  rX   r  spansspans        rY   test_biluo_spansr  O  s    
=
>CEJ0E#3ed{{TeE3u:??8==,,,,8??e###8==H$$$8??e### 4s
   B"B"c                    / SQn/ SQn[        XUS9nSnS[        S5      S4[        U5      [        US-   5      S	4/n/ S
Qn[        R                  " XGUS.5      nUR                  R
                  n	U	 V
s/ s H  oR                  U
R                  4PM     sn
SS/:X  d   eUR                  U	5      nU V
s/ s H  oR                  U
R                  4PM     sn
SS/:X  d   eg s  sn
f s  sn
f )N)rc  r    r!   rU  r&   ra  r   rb  r   rc  rd  rU  r   )
rt  r   rg  rh  r    r!   r  r  r#   r&   r@  r   r6   r5   r   )r   rD   )r4   r6   )	r   rT   r
   r   r.  rS   r   r   get_aligned_spans_y2x)r  rm  rL   rh   rX   rn  r{   
tokens_refr   ents_refr   ents_y2xs               rY   test_aligned_spans_y2xr  [  s    KE-F
hF
3C(F	
C"#X.	Vc&#99:EBH
 `Jx%PQG  %%H,45HSYY H5&&9IIII,,X6H,45HSYY H5&&9IIII 65s   4!C"5!C'c                 D   Sn[        5       nSSS.SSS./nUR                  S5      nUR                  U5        U" U5      nUR                   Vs/ s H  owR                  UR
                  4PM     snSS	/:X  d   eS
nS[        S5      S4[        U5      [        US-   5      S4/n	/ SQn
[        R                  " XjU	S.5      nUR                  R                   Vs/ s H  owR                  UR
                  4PM     snSS/:X  d   eUR                  R                  nU Vs/ s H  owR                  UR
                  4PM     snSS	/:X  d   eUR                  U5      nU Vs/ s H  owR                  UR
                  4PM     snSS/:X  d   eg s  snf s  snf s  snf s  snf )Nz-Mr and Mrs Smith flew to San Francisco Valleyrd  rc  )r   patternr   rU  entity_rulerr  r  rb  r   )rj  rh  r    r!   rY  r#   r@  )r   r   )r6   r5   )r   r|   add_patternsrS   r   r   rT   r
   r   r.  r-  get_aligned_spans_x2y)r  rm  rN  rW   patternsrulerrX   r   rn  r{   r  r   	ents_predents_x2ys                 rY   test_aligned_spans_x2yr  n  s   :D
)C'9:$:;H LL(E	x 
d)C,/HH5HSYY H5&&9IIII(F	
C"#X.	Vc&#99:EBH RJx%PQG,3,=,=,B,BC,BSYY ,BCPVGWWWW!!&&I,56ISYY I666:JJJJ,,Y7H,45HSYY H5&&9IIII 6 D 75s   !F!F !F!!Fc           	         Sn[        5       nU" U5      nUR                  U5      n/ nSnUR                  UR                  [	        U5      [	        US-   5      SS95        UR                  UR                  [	        U5      [	        US-   5      SS95        SnXeR
                  U'   [        XE5      n	U	R                  R
                  U   n
U
 Vs/ s H  oR                  UR                  4PM     snS	S
/:X  d   eU	R                  U
SS9nU Vs/ s H  oR                  UR                  4PM     snS	/:X  d   eU	R                  U
SS9nU Vs/ s H  oR                  UR                  4PM     snS	S
/:X  d   eg s  snf s  snf s  snf )Nr  r   rY  CITY)r   rU  VALLEYoverlap_ents)r4   r8   )r4   r5   F)allow_overlapT)r   r   r   	char_spanrT   r  r
   r.  r   r   r  )r  rm  rN  rW   rX   gold_docr  rn  	spans_keyr   
spans_goldr   spans_y2x_no_overlapspans_y2x_overlaps                 rY   test_aligned_spans_y2x_overlapr    s   +D
)C
d)C||D!HEF	LL3v;F_,D(EVT 
LLKV&<<=X 	 	

 I %NN9c$G""((3J,67JSYY J7FF;KKKK #88% 9  -AA,@SYY ,@AfXMMM55jPT5U,=>,=SYY ,=>66BRRRR 8 B>s   !E8!E=!Fc                     U " S5      n/ SQn[         R                  " USU05      nUR                  S5      / SQ:X  d   eg )Nr  )NrB   rB   rE   r	  rB   r  rB   r{   r   )r   r   r   r4   rD   r   r4   r   )r
   r   r*  )rm  rX   r  r   s       rY   test_gold_ner_missing_tagsr    sC    
=
>CFJj*%=>Gy)-EEEErZ   c                 4   U " S5      n/ SQnS/[        U5      -  n[        R                  " XUS.5      nUR                  SS9u  pVUR                  SS9u  pxU/ SQ:X  d   eU/ SQ:X  d   eU " S	5      nS
/nS/n[        R                  " XUS.5      nUR                  SS9u  pVXR:X  d   eXc:X  d   e[	        UR
                  S/S/S/S
/S9n	[	        UR
                  / SQ/ SQ/ SQ/ SQS9n
[        X5      nUR                  SS9u  p[US /:X  d   eUS /:X  d   eg )NzHe pretty quickly walks away)r4   r   r4   r4   r   rD  )rP   rQ   T)projectivizeF)r4   r   r4   r4   r4   Conrailr   zDouble-Jointedr<   )rL   rh   rQ   rP   )Doubler  Jointed)TTT)amodr@   r<   )r   r   r   )rT   r
   r   get_aligned_parser   rU   )rm  rX   rP   rQ   r   
proj_headsproj_labelsnonproj_headsnonproj_labelsdoc_adoc_b	proj_depss               rY   test_projectivizer    sd   
5
6CE7SZDd%CDG%77T7JJ$+$=$=5$=$Q!M(((O+++ y
!CCE7Dd%CDG%77T7JJ 		*+UG6(STRUE 		(!&E e#G#5545HJ$rZ   c                      / SQn / SQn/ SQn[        U 5      nX:X  d   e[        R                  " [        5         [        U5        S S S 5        g ! , (       d  f       g = f)N)rB   rB   rE   rF   rB   rC   )rB   rB   rE   r	  rB   ri  )rB   rB   "rE   rF   )r   r  r  r  )good_iob
good_biluobad_iobconverted_biluos       rY   test_iob_to_biluor    sG    <H>J/G"8,O(((	z	"W 
#	"	"s   A
Ac                    U R                   nU  Vs/ s H  o"R                  PM     nnU  Vs/ s H  o"R                  PM     nnU  Vs/ s H  o"R                  PM     nnU  Vs/ s H  n[	        UR
                  5      PM     nnU  Vs/ s H  o"R                  PM     nnU  Vs/ s H  o"R                  PM     nnU  Vs/ s H  o"R                  R                  PM     n	nU R                  n
U R                   Vs/ s H%  oR                  UR                  UR                  4PM'     nn[        5        n[!        5       nUS-  n["        R$                  " U['        U 5      /5        US-  n[)        U /S9R+                  U5        [-        U5      n[/        U" U5      5      nS S S 5        [1        U 5      [3        S W 5       5      :X  d   eUS   nUUR4                  R                   :X  d   eUUR4                   Vs/ s H  o"R                  PM     sn:X  d   eUUR4                   Vs/ s H  o"R                  PM     sn:X  d   eUUR4                   Vs/ s H  o"R                  PM     sn:X  d   eUUR4                   Vs/ s H  n[	        UR
                  5      PM     sn:X  d   eUUR4                   Vs/ s H  o"R                  PM     sn:X  d   eUUR4                   Vs/ s H  o"R                  PM     sn:X  d   eU	UR4                   Vs/ s H  o"R                  R                  PM     sn:X  d   eUUR4                  R                   Vs/ s H%  oR                  UR                  UR                  4PM'     sn:X  d   eSUR4                  R                  ;   d   eSUR4                  R                  ;   d   eU
S   UR4                  R                  S   :X  d   eU
S   UR4                  R                  S   :X  d   eg s  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf ! , (       d  f       GN= fs  snf s  snf s  snf s  snf s  snf s  snf s  snf s  snf )Nzroundtrip.jsonzroundtrip.spacy)r   c              3   8   #    U  H  n[        U5      v   M     g 7frm   )rT   ).0r   s     rY   	<genexpr>0test_roundtrip_docs_to_docbin.<locals>.<genexpr>  s     ?->r3r77->s   r   rJ   rK   )rN  idxr   pos_strmorphlemma_dep_rE  r   rV   rS   r   r   r   r   r   srsly
write_jsonr   r   r   r	   r   rT   sumr.  )rX   rN  r   r  rM   rN   rO   rR   rQ   rP   rV   erS   r   reloaded_nlp	json_filer   r   reloaded_examplesreloaded_examples                       rY   test_roundtrip_docs_to_docbinr    s   88D
#Q55#C
 CqFFCD 
3a663C
$'(Cqc!''lCF( #$1hhF$ CqFFCD "#s!VVXXsE#88D:=((C(Q\\1::qxx0(DC	6y--	\#%6$7800SE"";/$ !56 
 s8s?->?????(+#--22222"2"<"<="<Q55"<====$4$>$>?$>qFF$>????#3#=#=>#=a66#=>>>>,<,F,FG,Fqc!''l,FGGGG(8(B(BC(B1hh(BCCCC$4$>$>?$>qFF$>????'7'A'AB'A!VVXX'ABBBB6F6P6P6U6U6Uqzz188,6U    '1166666'1166666>-77<<XFFFF>-77<<XFFFFG  
($ #C	 >?>GC?Bsk   O7O<P"PP"P=P8,P0A+P4P1 P6P;8Q .QQ
Q,Q
P.c                 f   SU R                   S'   [        5       n[        5        nUS-  n[        U /SS9R	                  U5        [        5       R                  U5      R                  UR                  5      n[        U5      S   nS S S 5        WR                   S   S:X  d   eg ! , (       d  f       N$= f)NTcheckuserdata.spacyr   store_user_datar   )		user_datar   r   r   r   	from_diskget_docsrU   r   rX   rW   r   r   reloaded_docsreloaded_docs         rY    test_docbin_user_data_serializedr    s    !CMM'
)C	6//SE4088E**;7@@KM*1-	 
 !!'*d222 
s   A B""
B0c                 p   [        5       U R                  S'   [        5       n[        5        nUS-  n[	        U /SS9R                  U5        [	        5       R                  U5      R                  UR                  5      n[        U5      S   nS S S 5        SWR                  ;  d   eg ! , (       d  f       N!= f)Nr  r  Fr  r   )
setr  r   r   r   r   r  r  rU   r   r  s         rY   $test_docbin_user_data_not_serializedr    s     UCMM'
)C	6//SE5199+F**;7@@KM*1-	 
 ,00000 
s   A B''
B5ztokens_a,tokens_b,expected)r5  r6  r7  abr7  rD   )r5  r6  r  r7  zab"r   rD   r   r4   r5  bc)r  r7  r8  )r5  r6  cdr4  ry  )r5  ''',)za'r  r  c                 \    [        X5      u  p4X44U:X  d   e[        X5      u  p4XC4U:X  d   eg rm   r   )tokens_atokens_brq  a2bb2as        rY   
test_alignr    s<    : h1HC:!!!h1HC:!!!rZ   c                     SnU " U5      nS/nS/nS/nS/n[         R                  " X#XEUS.5      nUR                  5       nUSS/:X  d   eUR                  SS	S
9S S/:X  d   eg )Nz ar5  U-DATEr<   r   rL   r{   rQ   rP   rB   DEPTr#  r
   r   r;  r*  	rm  rN  rX   rZ  r{   rQ   rP   r   r=  s	            rY   test_goldparse_startswith_spacer  C  s    D
t
CJzH8DCExPUVG &&(HX&&&u5$GGGrZ   c                     SnU " U5      nS/nS/nS/nS/n[         R                  " X#XEUS.5      nUR                  5       nUSS/:X  d   eUR                  SS	S
9SS /:X  d   eg )Nza
r5  r  r<   r   r  rB   r  Tr#  r   r  s	            rY   test_goldparse_endswith_spacer  R  s    D
t
CJzH8DCExPUVG &&(H#&&&u5&$GGGrZ   c                     [        5       n U " S5      n[        R                  " USSSS.05      nUR                  SSS9/ S	Q:X  d   eUR                  R
                  S
   (       d   eUR                  R
                  S   (       a   eg)z,Test that the Example constructor works finezThis is a sentencerV   rH   rI   )cat1cat2r   Tr#  )Thisr`   r5  sentencer  r  N)r   r
   r   r*  r.  rV   )rW   rX   r   s      rY   test_gold_constructorr
  a  s    
)C
"
#CfsC.H%IJGv6 ;    !!&)))  %%f----rZ   c                  D    SSS/04SSSS/04SSS/04/n [        U 5        g	)
zTest tuple format#Uber blew through $1 million a weekr{   r   r6   ORGSpotify steps up Asia expansionr   r7   r  r      r   !Google rebrands its business appsr   r5   r  N)_train_tuplesr   s    rY   test_tuple_format_implicitr  p  sJ     
/m_0MN--9:	
 
-zM?.KLJ *rZ   c                      SSS/04SSSS/04SSS	/04/n [         R                  " [        5         [        U 5        S
S
S
5        g
! , (       d  f       g
= f)z:Test that an error is thrown for an implicit invalid fieldr  frumbler  r  r{   r  r  r  r  N)r  r  KeyErrorr  r  s    rY   "test_tuple_format_implicit_invalidr    sb     
/]O0LM--9:	
 
-zM?.KLJ 
x	 j! 
!	 	 s   A
Ac           	         [        5       nUR                  S5      nUR                  S5        UR                  S5        / nU  H>  nUR                  [        R
                  " UR                  US   5      US   5      5        M@     UR                  5       n[        S5       H3  n0 n[        U[        SSS	5      S
9nU H  n	UR                  XUS9  M     M5     g )Nry   r  r   r   rD   r8   g      @g      @@gjt?)sizer   )r   r|   r}   r   r
   r   r   r~   r   r   r   r   )
r   rW   ry   r   r   r   r   r   batchesbatchs
             rY   r  r    s    
)C
,,u
CMM%MM%Ng//QqT0BAaDIJ  I1XNS$1NOEJJuFJ;  rZ   c                 &   [        5       n[        R                  " [        UR                  U S   U S   S9U 5      nUR
                  S:X  d   eUR                  5       n[        U5      S:X  d   eUS   R
                  S:X  d   eUS   R
                  S	:X  d   eUS   R                  5       S
   nUS   / SQ:X  d   eUS   / SQ:X  d   eUS   / SQ:X  d   eUS   R                  5       S
   nUS   / SQ:X  d   eUS   / SQ:X  d   eUS   / SQ:X  d   eg )NrL   rh   r   zHi there everyone It is just mer   r   zHi there everyone rD   zIt is just metoken_annotationr   )r\   r]   r^   r   )rc   rd   re   r   )rD   r   r   )r_   r`   ra   rb   )re   rf   rd   re   )rD   r   r   r   )	r   r
   r   r   rU   rN  r   rT   to_dict)rk   rW   r   r[  token_annotation_1token_annotation_2s         rY   test_split_sentsr%    sI   
)CCII[1+h:OPG <<<<<<((*N~!###!!!%9999!!!_444'*2245GHf%)DDDDe$(????l+y888'*2245GHf%)CCCCe$(FFFFl+|;;;rZ   c                  x   / SQn / SQn[         R                  " X5      n[        UR                  R                  5      / SQ:X  d   e[        UR                  R
                  5      / SQ:X  d   e[        UR                  R                  5      / SQ:X  d   e[        UR                  R
                  5      / SQ:X  d   eg )N)r   listenedr!   obamar  spodcastsr&   r   r'  r!   r(  r   r*  r&   rD   rD   rD   rD   rD   rD   rD   rD   r   rD   r   r4   r6   r6   r8   r5   rD   rD   rD   rD   r   rD   rD   r   rD   r   r4   r6   r8   r5   r7   r   from_stringsr   x2ylengthsr   y2xother_tokensspacy_tokensaligns      rY   test_alignmentr9        NLJL""<>E		!!"&>>>>		#;;;;		!!"&;;;;		#;;;;rZ   c                     [        / SQS// / SQSS//5      n [        U R                  5      / SQ:X  d   e[        U R                  5      / SQ:X  d   e[        U S   5      / SQ:X  d   e[        U S   5      / :X  d   e[        U S	   5      / SQ:X  d   e[        U S
S 5      / SQ:X  d   e[        U S
S  5      / SQ:X  d   e[        U S S 5      / SQ:X  d   e[        U S S  5      [        U R                  5      :X  d   e[        U SS 5      / :X  d   e[        U SS 5      / :X  d   e[        U SS 5      / :X  d   e[        R
                  " [        SS9   U S SS2     S S S 5        [        R
                  " [        SS9   U / SQ     S S S 5        [        / / SQSS//5      n [        U S   5      / :X  d   e[        U SS
 5      / :X  d   e[        U S   5      SS/:X  d   e[        U SS 5      / SQ:X  d   e[        / SQSS// /5      n [        U S   5      / :X  d   e[        U S	S  5      SS/:X  d   eg ! , (       d  f       N= f! , (       d  f       N= f)Nr  r4   )r6   r8   r5   r7   rG   r   )
r   rD   r   r4   r6   r8   r5   r7   rG   r   )r4   rD   r   r6   r   r   rK  rD   r6   )r4   r6   r8   r5   r7   )r4   r6   r8   r5   r7   rG   r   )r   rD   r   r4   r   r   z&only supports slicing with a step of 1matchz.only supports indexing using an int or a slicer   rD   r4   )rD   r   r4   r8   )r   r   r   r3  r  r  r  )r5  s    rY   test_alignment_arrayr?    sP   	A3L1a&ABA<9999		?o---!:%%%!:";,&&&!A<?***!";////"1;,&&&!:aff%%%!A<2!A<2"R>R	z)R	S	%1R% 
T	K
 	
)

 	I1v./A!:!A<2!:!Q!A<9$$$	Aq62./A";""#<Aq6!!! 
T	S
 
s   	H-:H>-
H;>
Ic                  x   / SQn / SQn[         R                  " X5      n[        UR                  R                  5      / SQ:X  d   e[        UR                  R
                  5      / SQ:X  d   e[        UR                  R                  5      / SQ:X  d   e[        UR                  R
                  5      / SQ:X  d   eg )N)r   r'  r!   r(  r  r)  r*  r&   )r   r'  r!   Obamar   PODCASTSr&   r,  r-  r.  r/  r0  r5  s      rY   test_alignment_case_insensitiverC    r:  rZ   c                  x   / SQn / SQn[         R                  " X5      n[        UR                  R                  5      / SQ:X  d   e[        UR                  R
                  5      / SQ:X  d   e[        UR                  R                  5      / SQ:X  d   e[        UR                  R
                  5      / SQ:X  d   eg )Ni listened tor(  r  r)  r*  r&   r   r'  r!   r(  r   	podcasts.r4   rD   rD   rD   rD   rD   r   rD   r   r4   r6   r6   r8   r8   rD   rD   rD   rD   r   r   r   r   r   rD   r   r4   r6   r8   r0  r5  s      rY   test_alignment_complexrM    s    HLFL""<>E		!!"&8888		#;;;;		!!"&8888		#;;;;rZ   c                    / SQn/ SQn[        X/ SQS9n[        X/ SQS9nUR                  S:X  d   eUR                  S:X  d   e[        X45      nUR                  n[	        UR
                  R                  5      / SQ:X  d   e[	        UR
                  R                  5      / SQ:X  d   e[	        UR                  R                  5      / S	Q:X  d   e[	        UR                  R                  5      / S
Q:X  d   eg )NrE  rG  )TFFTFFr   )TTTFTFzi listened to obama's podcasts.rI  rJ  rK  rL  )	r   rN  r
   	alignmentr   r2  r3  r   r4  )r  r6  r7  r-  r.  r   r8  s          rY   test_alignment_complex_examplerP    s    HLFL-UI -SI >>>>>>>>>>>>i+GE		!!"&8888		#;;;;		!!"&8888		#;;;;rZ   c                      / SQn / SQn[         R                  " [        5         [        R                  " X5        S S S 5        g ! , (       d  f       g = f)N)sher'  r!   r(  r   r*  r&   r+  )r  r  r  r   r1  )r6  r7  s     rY   test_alignment_different_textsrS    s2    LLJL	z	"|: 
#	"	"s   A
Ac                    / SQn/ SQn[         R                  " X5      n[        UR                  R                  5      / SQ:X  d   e[        UR                  R
                  5      / SQ:X  d   e[        UR                  R                  5      / SQ:X  d   e[        UR                  R
                  5      / SQ:X  d   e/ SQn/ SQn[         R                  " X5      n[        UR                  R                  5      / SQ:X  d   e[        UR                  R
                  5      / SQ:X  d   e[        UR                  R                  5      / SQ:X  d   e[        UR                  R
                  5      / S	Q:X  d   e/ SQn/ S
Qn[         R                  " X5      n[        UR                  R                  5      / SQ:X  d   e[        UR                  R
                  5      / SQ:X  d   e[        UR                  R                  5      / SQ:X  d   e[        UR                  R
                  5      / SQ:X  d   e/ SQn/ SQn[         R                  " X5      n[        UR                  R                  5      / SQ:X  d   e[        UR                  R
                  5      / SQ:X  d   e[        UR                  R                  5      / SQ:X  d   e[        UR                  R
                  5      / SQ:X  d   e/ SQn/ SQn[         R                  " X5      n[        UR                  R                  5      / SQ:X  d   e[        UR                  R
                  5      / SQ:X  d   e[        UR                  R                  5      / SQ:X  d   e[        UR                  R
                  5      / SQ:X  d   e/ SQn/ SQn[         R                  " X5      n[        UR                  R                  5      / SQ:X  d   e[        UR                  R
                  5      / SQ:X  d   e[        UR                  R                  5      / SQ:X  d   e[        UR                  R
                  5      / SQ:X  d   e/ SQn/ SQn[         R                  " X5      n[        UR                  R                  5      / SQ:X  d   e[        UR                  R
                  5      / SQ:X  d   e[        UR                  R                  5      / S Q:X  d   e[        UR                  R
                  5      / S!Q:X  d   e/ S"Qn/ S#Qn[         R                  " X5      n[        UR                  R
                  5      / S$Q:X  d   e[        UR                  R
                  5      / S%Q:X  d   eS&S'/n/ S(Qn[         R                  " X5      nS'S&/nS'S)/n[         R                  " X5      ng )*N)ry  rF  r(  r  r)  r*  r&   rG  )r   r4   rD   rD   rD   rD   rD   rJ  rK  )rD   rD   rD   r   r4   r6   r8   r5   )ry  ry  rF  r(  r  r)  r*  r&   )r   r   r4   rD   rD   rD   rD   rD   )r   r   r   r4   r6   r8   r5   r7   )ry  r   r'  r!   r(  r   rH  )rD   r   r4   rD   rD   rD   rD   rD   )	r   rD   r   r4   r6   r8   r8   r5   r5   )rD   rD   rD   rD   rD   r   r   )	r   r   r   r   r4   r6   r8   r5   r7   )  r   r'  r!   r(  r   rH  )rD   rD   r4   rD   rD   rD   rD   rD   )
r   r   rD   r   r4   r6   r8   r8   r5   r5   )r   rD   rD   rD   rD   r   r   )
r   rD   r   r   r   r4   r6   r8   r5   r7   )rF  r(  r  r)  r*  r&   ry  )r4   rD   rD   rD   rD   rD   r   rL  )rF  r(  r  r)  r*  r&   ry  ry  )r   r'  r!   r(  r   rH  ry  )r4   rD   rD   rD   rD   rD   rD   r   )	r   rD   r   r4   r6   r6   r8   r8   r5   )rD   rD   rD   rD   r   r   rD   )	r   r   r   rD   r   r4   r6   r8   r5   )r   r'  r!   r(  r   rH  rU  )r4   rD   rD   rD   rD   rD   rD   rD   )
r   rD   r   r4   r6   r6   r8   r8   r5   r5   )rD   rD   rD   rD   r   r   r   )
r   r   r   rD   r   r4   r6   r8   r5   r7   )r5  z 
 r6  r7  )r5  r6  ry  r7  r>  )r   r   r4   ry  r5  )rU  r5  ry  rU  r0  )r  r6  r7  r8  s       rY   test_alignment_spacesrV  
  s   MLFL""<>E		!!"&;;;;		#;;;;		!!"&8888		#;;;; SLFL""<>E		!!"&>>>>		#;;;;		!!"&8888		#;;;; SLKL""<>E		!!"&>>>>		#>>>>		!!"&;;;;		#>>>> SLLL""<>E		!!"&>>>>		#AAAA		!!"&;;;;		#AAAA NLFL""<>E		!!"&;;;;		#;;;;		!!"&8888		#;;;; SLKL""<>E		!!"&>>>>		#>>>>		!!"&;;;;		#>>>> SLLL""<>E		!!"&>>>>		#AAAA		!!"&;;;;		#AAAA +L'L""<>E		9,,,		9,,, :L#L""<>E:L;L""<>ErZ   c                 Z   U R                  S/5      n[        U R                  U  Vs/ s H  o"R                  PM     snS9R	                  S/U5      n[        U R                  U  Vs/ s H  o"R                  PM     snS9R	                  S/U5      n[        X45      n/ SQn/ SQnUR                  SSS9U:X  d   eUR                  5        nUR                  USS	 5        UR                  US
S 5        S S S 5        UR                  SSS9U:X  d   eg s  snf s  snf ! , (       d  f       N/= f)Nr   r  r   )Nr   r    r!   Nr$   r%   r&   r   Tr#  r   r   r8   r7   )	to_arrayr   rU   rN  r'  r
   r*  
retokenizemerge)	rX   r5  r   doc1doc2r   	expected1	expected2retokenizers	            rY   test_retokenized_docsr`  [  s   eWAsyy 5A 56AA5'1MDsyy 5A 56AA5'1MDd!GbIJIv6)CCC		k$q)$$q)$ 
 v6)CCC !6 5 
	s   D
&D

)D
D*c                 &  ^  S nU 4S jn[         R                  " S5      nUR                  S5        [        5       n[	        UUU" 5       S SSSSS/ / US	9n[
        R                  " [        S
S9   U H  nM     S S S 5        g ! , (       d  f       g = f)Nc                 D    US   S:X  d   eUS   S:X  d   e[        S5      e)Nstepr   epochrD   ran_before_update)r  )rW   argss     rY   before_update2test_training_before_update.<locals>.before_updatel  s4    F|q   G}!!!
 ,--rZ   c               3   0   >#    S[        T T 5      /4v   g 7f)NrD   )r
   )rX   s   rY   generate_batch3test_training_before_update.<locals>.generate_batchu  s     '#s#$$$s   entaggerc                      g rm   rj   rj   rZ   rY   r   -test_training_before_update.<locals>.<lambda>  s    rZ   g?d   r   )dropouteval_frequencyaccumulate_gradientpatience	max_stepsexcludeannotating_componentsrg  re  r<  )spacyblankr|   r   r   r  r  r  )rX   rg  rj  rW   r   	generatorr   s   `      rY   test_training_before_updater{  k  s    .% ++d
CLLI% #I 
z)<	=A  
>	=	=s   /
B
B)]r   r(  r  r  	thinc.apir   r   rx  spacy.lang.enr   spacy.tokensr   r   spacy.trainingr   r	   r
   r   r   r   r   r   spacy.training.alignr   spacy.training.alignment_arrayr   spacy.training.convertersr   spacy.training.loopr   
spacy.utilr   r   r   r   utilr   fixturerX   rk   rU   markissuer   r   r   r   r  r
  r  r  r  r/  r2  r>  rA  filterwarningsrS  r\  ro  rr  rw  r|  r  r  r  r  r  r  r  r  r  r  r  r  parametrizer  r  r  r
  r  r  r  r%  r9  r?  rC  rM  rP  rS  rV  r`  r{  rj   rZ   rY   <module>r     s       '  ! $	 	 	 0 9 2 5    ! !H    
 3-* -*` 4V* V*r&R 4V V(1:C	-2	,,03 1236 336l966D ,E*C$G,	(	$J&J4S>F!H%GP
31  	4+!qcA31a&1#'GH CLcA3aS!Is#34	

 ttSkaS1a&MQFQC=#AB!fqcA31#sQF!34	
  cA3A1#sQC!!56	

 scUb1#Y!./!cAq6A3$1v1vs&;<	
'8"98"HH."< <*<"@<<<&;N?bD !rZ   