
    hn                        S SK r S SKJrJrJrJrJrJr  S SKJ	r	J
r
Jr  S SKJr  S SKJrJrJrJr  S SKJr  SSKJr  SS	KJrJr  SS
KJr  SSKJrJr  SSKJ r     S!S\SS.S\\!   S\\!   S\\"   S\S\#S\	\\   \4   4S jjjr$S\	\\   \4   S\\   S\%S\\\4   4S jr&  S!S\S\	\\   \4   S\\\      S\\   S\	\\   \4   4
S jjr'S\
S\!4S jr(S\
S\!S\\"   S\\   4S  jr)g)"    N)CallableListOptionalSequenceTuplecast)ModelOpsregistry)glorot_uniform_init)Floats1dFloats2dInts1dRagged)partial   )ORTH)ErrorsWarnings)Doc)ModeVectors)Vocabr   )dropoutinit_Wkey_attrnOnMr   r   r   returnc          
          US:w  a)  [         R                  " [        R                  [        5        [        S[        [        [        U5      SS0XBS.XS.S9$ )zEmbed Doc objects with their vocab's vectors table, applying a learned
linear projection to control the dimensionality. If a dropout rate is
specified, the dropout is applied per dimension over the whole batch.
r   static_vectorsWN)r   dropout_rate)r   r   )initparamsattrsdims)	warningswarnr   W125DeprecationWarningr	   forwardr   r$   )r   r   r   r   r   s        P/home/james-whalen/.local/lib/python3.13/site-packages/spacy/ml/staticvectors.pyStaticVectorsr.      sO     6hmm%78T6"T{#=!     modeldocsis_trainc                   ^ ^^ [        S U 5       5      nU(       d%  [        T R                  T R                  S5      5      $ US   R                  n[        UR                  S[        5      nT R                  R                  U Vs/ s H"  n[        [        UR                  U5      5      PM$     sn5      n[        [        T R                  R                  T R                  S5      5      5      n[        UR                  [         5      (       a  UR                  R"                  [$        R&                  :X  ag  T R                  R)                  UR                  R*                  5      mUR                  R-                  US9n	T R                  R                  TU	   5      mO[        UR                  [         5      (       a_  UR                  R"                  [$        R.                  :X  a7  UR                  R1                  U5      mT R                  R                  T5      mOk[3        UR                  S5      (       a7  UR                  R1                  U5      mT R                  R                  T5      mO[5        [6        R8                  5      e T R                  R;                  TUSS	9n
[        UR                  [         5      (       a0  UR                  R"                  [$        R&                  :X  a  SU
W	S:  '   [?        U
T R                  RA                  U Vs/ s H  n[C        U5      PM     sn5      5      nS mU(       aU  [E        T R                  URF                  S   T RH                  RK                  S
5      5      mTb  U=R*                  T-  sl        S[>        S[L        [N           4UUU 4S jjnX4$ s  snf ! [<         a    [5        [6        R8                  5      ef = fs  snf )Nc              3   8   #    U  H  n[        U5      v   M     g 7fN)len).0docs     r-   	<genexpr>forward.<locals>.<genexpr>+   s     /$3c#hh$s   r   r   attrr"   )keys	get_batchT)trans2r#   d_outputr   c                   > Tb  U =R                   T-  sl         TR                  STR                  R                  [	        [
        U R                   5      [	        [
        TR                  R                  T5      5      SS95        / $ )Nr"   T)trans1)datainc_gradopsgemmr   r   	as_contig)r?   Vmaskr0   s    r-   backpropforward.<locals>.backpropM   sl    MMT!MIINNXx}}-Xuyy22156  	
 	r/   )(sum_handle_emptyrD   get_dimvocabgetattrvectorsr   flattenr   r   to_arrayr   rF   	get_param
isinstancer   moder   defaultasarrayrB   findfloretr=   hasattrRuntimeErrorr   E896rE   
ValueErrorr   	asarray1ir6   _get_drop_maskshaper&   getr   r   )r0   r1   r2   token_countrN   r   r8   r<   r"   rowsvectors_dataoutputrI   rG   rH   s   `            @@r-   r,   r,   (   s    /$//KUYYd(;<<7==EEMM648H99dSdsd63<<+ABdSTDXuyy**5??3+?@AA%--))emm.@.@DLL.PIIemm001}}!!t!,II$(	EMM7	+	+0B0Bdkk0QMM##D)II"		,	,MM##D)II"6;;''(yy~~a4~8 %--))emm.@.@DLL.P "#TAXL%))"5"546P4Cs3x46P"QRFDeiiU[[__^5TUKK4K6 d3i   U T   (6;;''( 7Qs   )N,N1 O1$OXYc                 T   UR                  S5      (       a  UR                  S5      OS nUR                  S5      (       a  UR                  S5      OS nUb6  [        U5      (       a&  US   R                  R                  R
                  S   nUb  UR                  R
                  S   nUc  [        [        R                  5      eUc  [        [        R                  5      eUR                  SU5        UR                  SU5        UR                  SU " UR                  XT45      5        U$ )Nr   r   r      r"   )has_dimrM   r6   rN   rP   r`   rB   r]   r   E905E904set_dim	set_paramrD   )r   r0   rf   rg   r   r   s         r-   r$   r$   ]   s     !&d 3 3t	B %d 3 3t	B}QqTZZ%%a(}VV\\!_	z%%	z%%	MM$	MM$	OOC		B845Lr/   rD   c                 ^    [        U R                  SU5      U R                  S5      5      S 4$ )Nr   c                     / $ r5    )d_raggeds    r-   <lambda>_handle_empty.<locals>.<lambda>u   s    r/   )r   alloc2falloc1i)rD   r   s     r-   rL   rL   t   s(    #++a$ckk!n57JJJr/   ratec                 4    Ub  U R                  U4U5      nU$ g r5   )get_dropout_mask)rD   r   rw   rH   s       r-   r_   r_   x   s$    ##RE40r/   )NN)*r(   typingr   r   r   r   r   r   	thinc.apir	   r
   r   thinc.initializersr   thinc.typesr   r   r   r   
thinc.utilr   r&   r   errorsr   r   tokensr   rP   r   r   rN   r   intfloatstrr.   boolr,   r$   rL   r_   rq   r/   r-   <module>r      s    B B * * 2 : :   %  #    $* e_	
   49f02cF"#2+/92@D2
682p "	cF"# S	 	
 49f.Ks K K  HUO @R r/   