
    iq%              
          d dl mZ d dlZd dlZd dlmZmZ d dlmZm	Z	m
Z
mZmZmZmZmZ d dlmZ d dlmZ d dlmZmZ 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" d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*ejV                  jY                  dd e e(       fd e e#       fd e e$       fg      d        Z-ejV                  jY                  dd e e(       e&fd e e#       e&fd e e$       e&fg      d        Z.ejV                  jY                  dd de e(       e&fd de e#       e&fd de e$       e&fg      d        Z/ejV                  jY                  de dddfg      d        Z0d Z1d  Z2d! Z3d" Z4d%d#Z5d$ Z6y)&    )ListN)assert_array_almost_equalassert_array_equal)AdamLogisticRaggedReluchainfix_random_seedreduce_meanset_dropout_rate)English)	sentences)_get_span_indicesextract_spans)MaxoutWindowEncoderMultiHashEmbedbuild_bow_text_classifier build_simple_cnn_text_classifierbuild_spancat_modelbuild_Tok2Vec_model)StaticVectors)registryc                      dddddS )NT   F"   )exclusive_classes
ngram_sizeno_output_layernO r!       h/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/spacy/tests/test_models.pyget_textcat_bow_kwargsr$       s    ! 	 r"   c                      t               dddS )NF   )tok2vecr   r    )make_test_tok2vecr!   r"   r#   get_textcat_cnn_kwargsr)   )   s    (*bQQr"   c                     g }| j                         D ]A  }|j                  D ]0  }|j                  |j                  |      j	                                2 C j
                  j                  j                  |      S N)walkparam_namesappend	get_paramravelopsxpconcatenate)modelparamsnodenames       r#   get_all_paramsr8   -   sj    F

 8$$ 	8DMM$...4467	88 88;;""6**r"   c                      t               } t        | j                  t        dj	                  t              gz               S )N )r   listpipeEN_SENTENCESjoin)nlps    r#   get_docsr@   5   s.    
)C,)?(@@ABBr"   c                    t        || j                  j                  j                        rq| j                  j	                  |j
                  |j                        }|| j                  j                  j                  j                  dd|j
                        z  }|S t        |t              r|D cg c]  }t        | |       c}S t        dt        |             c c}w )Ndtypeg      g      ?z Could not get gradient for type )
isinstancer1   r2   ndarrayallocshaperC   randomuniformr   get_gradient
ValueErrortype)r4   YdYys       r#   rJ   rJ   :   s    !UYY\\))*YY__QWWAGG_4
eiill!!))$QWW==		At	0121UA&22;DG9EFF 3s   0Cc                  H    t        dg dg dd      t        dddd      d	S )
N      rS   rS   NORMPREFIXSHAPEFwidthrowsattrsinclude_static_vectors   r   )rY   depthmaxout_pieceswindow_size)embedencode)r   r   r!   r"   r#   get_tok2vec_kwargsrc   E   s5       -#(	
 &AQA

 
r"   c                  (    t        di t               S Nr!   )r   rc   r!   r"   r#   r(   r(   T   s    6!3!566r"   c                  V   t        dg dg dd      } | j                         D cg c]  }|j                  dk(  s| }}t        |      dk(  sJ t	        d |D              g d	k(  sJ t        t        d
 |D                    dk(  sJ |D cg c]  }|j                  d       c}g dk(  sJ t        dg dg dd      } | j                         D cg c]  }|j                  dk(  s| }}|D cg c]  }|j                  d       c}g dk(  sJ y c c}w c c}w c c}w c c}w )NrQ   rR   rT   FrX   	hashembed   c              3   :   K   | ]  }|j                   d      yw)columnNr[   .0hes     r#   	<genexpr>z(test_multi_hash_embed.<locals>.<genexpr>b   s     ;"((8$;   )r   r   r]   c              3   :   K   | ]  }|j                   d      yw)seedNrk   rl   s     r#   ro   z(test_multi_hash_embed.<locals>.<genexpr>d   s     :288F#:rp   nV)i  2      )r   r,   r7   lensortedsetget_dim)ra   r6   hash_embedsrn   s       r#   test_multi_hash_embedr{   X   s   )$	E %*JJLMDDII4L4MKM{q   ;{;;yHHHs:k::;q@@@'23BJJt3FFF)$	E %*JJLMDDII4L4MKM'23BJJt3FFF! N 4 N3s"   DDDD!*D!4D&zseed,model_func,kwargsc                 8   t        |         |di |}|j                          t        |         |di |}|j                          t        |      }t        |      }t        |j                  j                  |      |j                  j                  |             y re   )r   
initializer8   r   r1   to_numpy)rr   
model_funckwargsmodel1model2params1params2s          r#   #test_models_initialize_consistentlyr   r   s     D!&!F
D!&!F
V$GV$Gvzz**73VZZ5H5H5QRr"   zseed,model_func,kwargs,get_Xc                    t        |         |di |j                         }|j                   |             }t        |         |di |j                         }|j                   |             }|j                  d      r|j	                  d      j                   |             }|j	                  d      j                   |             }	t        t        |            D ]  }
t        t        ||
               D ]r  }t        t        j                  |j                  j                  ||
   |               t        j                  |j                  j                  |	|
   |                      t  	 |j                  j                  |      }|j                  j                  |      }t        |t        j                        rt        ||       y t        |t              rqt        |      t        |      k(  sJ t!        ||      D ]H  \  }}	 |j                  j                  |      }|j                  j                  |      }t        ||       J y t#        dt%        |             # t        $ r Y w xY w# t        $ r Y @w xY w)Nr'   zCould not compare type r!   )r   r}   predicthas_refget_refrangerv   r   numpyasarrayr1   r~   	ExceptionrD   rE   r   ziprK   rL   )rr   r   r   get_Xr   Y1r   Y2tok2vec1tok2vec2ijy1y2s                 r#    test_models_predict_consistentlyr      s    D!&!,,.F		 BD!&!,,.F		 B~~i >>),44UW=>>),44UW=s8}% 	A3x{+, "MM&**"5"5hqk!n"EFMM&**"5"5hqk!n"EF	ZZ  $ZZ  $ "emm$2r"	B	2w#b'!!!"bk 	'FBZZ((,ZZ((, r2&	' 248*=>>    s$   06I% 	6I4%	I10I14	J ?J z$seed,dropout,model_func,kwargs,get_Xg?c                       fd} |       } |       }t        |j                  j                  t        |            |j                  j                  t        |            d       y )Nc                     t               t        d      }  di 
j                         }t        |      }t	        |       t        d      D ]@  }|j                   	             \  }}t        ||      } ||       |j                  |        B t        |      }t        j                  t              5  t        |j                  j                  |      |j                  j                  |             d d d        |S # 1 sw Y   |S xY w)NgMbP?   r!   )r   r   r}   r8   r   r   begin_updaterJ   finish_updatepytestraisesAssertionErrorr   r1   r~   )	optimizerr4   initial_params_rM   get_dXrN   updated_paramsdropoutr   r   r   rr   s           r#   get_updated_modelz:test_models_update_consistently.<locals>.get_updated_model   s    K	$V$//1'.(q 	+A**573IAveQ'B2J	*		+
 (.]]>* 			"">2EII4F4F~4V	 		 s   7?D  D
r   )decimal)r   r1   r~   r8   )rr   r   r   r   r   r   r   r   s   `````   r#   test_models_update_consistentlyr      sX     $  F F

N623

N623r"   zmodel_func,kwargs   i,  )r    nMc                    t               } | di |j                         }t        d      D ]M  }t        |      D cg c]
  } |d       }}|j                  |       |j	                  |      \  }} ||       O y c c}w )Nrh    r!   )r   r}   r   r   r   )	r   r   r?   r4   n_docsr   docsoutputbackprops	            r#   test_empty_docsr      sy    
)C  ++-E( !&v/AB//d --d3/s   A=c                  4    t               j                          y r+   )r   r}   r!   r"   r#   test_init_extract_spansr      s    O r"   c                  ^   t               j                         } t        | j                  j	                  ddgddgddggd      | j                  j	                  ddgd            }| j                  j	                  dd	gd      }t        | j                  ||      }t        |      g d
k(  sJ y )Nr   rh   r]   r      r   rB   r   
   )r   r   r]   r]   r      )r   r}   r   r1   r   r   r;   )r4   spans	x_lengthsindicess       r#   test_extract_spans_span_indicesr      s    O&&(E		Aq6Aq6Aq62#>		1a&,E 		!!1b'!5I		5)<G=0000r"   c                     t               j                         } t        | j                  j	                  dd      | j                  j                  ddgd            }t        | j                  j                  ddgd	dgdd
ggd      | j                  j                  d	dgd            }| j                  ||f      \  }}t        |j                        g dk(  sJ |j                  j                  dk(  sJ  ||      \  }}||u sJ |j                  j                  |j                  j                  k(  sJ t        |j                        t        |j                        k(  sJ y )N      r   r   r   rB   r   rh   r]   r   r   )rh   r   r]   )   r   )r   r}   r   r1   alloc2fr   r   r;   lengthsdataXdrG   )r4   Xr   rM   r   dXspans2s          r#   #test_extract_spans_forward_backwardr      s2   O&&(Euyy  Q'):):Ar7#):)NOA		Aq6Aq6Aq62#>		1a&,E $$aZ0KAx		?i'''88>>V###!JBU??99??ahhnn,,,

tAII...r"   c                      t        t        di t               t               t	                     } | j                          y re   )r   r   rc   r   r   r}   )r4   s    r#   test_spancat_model_initr     s1    3023[]HJE 
r"   c           	         t        di t               }t               }g }g }|D ];  }|j                  |d d        |j                  |dd        |j                  d       = t	        |j
                  j                  |D cg c]  }|j                  |j                  g c}d      |j
                  j                  |d            }t        |t               t        t        |       t                           j                  ||f      } |||fd	      \  }	}
|	j                  |j                   j                  d
   | fk(  sJ  |
|	       y c c}w )Nr]   r   r   r   rB   )r    )r   T)is_trainr   r!   )r   rc   r@   r.   r   r1   r   startendr   r   r
   r	   r   r}   rG   r   )r    r'   r   
spans_listr   docsr   r4   rM   r   s              r#   #test_spancat_model_forward_backwardr     s7   !9$6$89G:DJG #bq'"#a(#q zB!aggquu-B#NG3/E  dbk8: >jD%=j! 
 u5KAx77u||))!,b1111QK Cs    Ec            	          t         j                  j                  d      } t               }t	        j
                  t        d      5   | |ddddd       d d d        y # 1 sw Y   y xY w)Nzspacy.TextCatReduce.v1z(must be used with at least one reduction)matchF)r'   r   use_reduce_firstuse_reduce_lastuse_reduce_maxuse_reduce_mean)r   architecturesgetr(   r   r   rK   )textcat_reducer'   s     r#    test_textcat_reduce_invalid_argsr   "  s_    ++//0HIN!G	z)T	U 
#"! !	

 
 
s   AA&)r   )7typingr   r   r   numpy.testingr   r   	thinc.apir   r   r   r	   r
   r   r   r   spacy.lang.enr   spacy.lang.en.examplesr   r=   spacy.ml.extract_spansr   r   spacy.ml.modelsr   r   r   r   r   r   spacy.ml.staticvectorsr   
spacy.utilr   r$   r)   r8   r@   rJ   rc   r(   r{   markparametrizer   r   r   r   r   r   r   r   r   r   r!   r"   r#   <module>r      s      G	 	 	 " < C  1 R+C
G7G4 	
!3!56	
%'='?@	
,.D.FG	S	S "	
!3!5x@	
%'='?J	
,.D.FQ#?#?L *	
C$&8&:HE	
C*,B,DhO	
C13I3KXV8 ,cQT?U/V.WX
 Y
!1/ ,
r"   