
    h                     "   S SK JrJ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  S SKJr  S SKJr   SS\S	\S
\\   S\\\   \4   4S jjr SS	\S\S\S
\\   S\\\   \4   4
S jjr SS\S\S\\   S	\S\S\S\S\\   S
\\   S\4S jjrg)    )OptionalList)Floats2d)Modelwith_cpu)IDORTHPREFIXSUFFIXSHAPELOWER)registry)DocNtok2vecexclusive_classesnOreturnc                    [         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[        R                  " SU05         X" 5       -	  U" 5       -	  n	U(       a,  U" X R	                  S	5      S
9n
X-	  nUR                  SU
5        O3U" X R	                  S	5      S
9nX-	  U" 5       -	  nUR                  SU5        SSS5        WR                  SU 5        UR                  S	U5        U(       + UR                  S'   U$ ! , (       d  f       NH= f)a  
Build a simple CNN text classifier, given a token-to-vector model as inputs.
If exclusive_classes=True, a softmax non-linearity is applied, so that the
outputs sum to 1. If exclusive_classes=False, a logistic non-linearity
is applied instead, so that outputs are in the range [0, 1].
layerschain.v1zreduce_mean.v1Logistic.v1
Softmax.v1	Linear.v1list2ragged.v1>>r   r   nIoutput_layerNr   multi_label)r   getr   define_operatorsmaybe_get_dimset_refset_dimattrs)r   r   r   chainreduce_meanLogisticSoftmaxLinearlist2raggedcnnr   modellinear_layers                \/home/james-whalen/.local/lib/python3.13/site-packages/spacy_legacy/architectures/textcat.pyTextCatCNN_v1r0   	   s-    LL:.E,,x)9:K||Hm4Hll8\2G\\(K0F,,x)9:K			u	.&+-7"b-B-B4-HIL'EMM.,7!R,A,A$,GHL'8:5EMM.,7 
/ 
MM)W%	MM$%6!6EKKL 
/	.s   #A8E
E+
ngram_sizeno_output_layerc                 Z   [         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[        R                  " SU05         U" U5      n	U" U[        S9U	-	  n
[        XR                  5      n
U(       d-  U (       a  U" 5       OU" 5       nU
[        XR                  5      -	  n
S S S 5        W
R                  S	W	5        U (       + U
R                  S
'   U
$ ! , (       d  f       N6= f)Nr   r   r   zSparseLinear.v1zsoftmax_activation.v1zspacy.extract_ngrams.v1r   )attrr   r   )	r   r    r   r!   r	   r   opsr#   r%   )r   r1   r2   r   r&   r(   SparseLinearsoftmax_activationextract_ngramssparse_linearr-   r   s               r/   TextCatBOW_v1r:   )   s     LL:.E||Hm4H<<*;<L!h0GH\\(,EFN			u	.$R(z5F		*3D-/(*LXl4D4DEEE 
/ 
MM.-0%6!6EKKL 
/	.s   A D
D*width
embed_sizepretrained_vectorswindow_size
conv_depthdropoutc	                 &   [         R                  " SS5      n	[         R                  " SS5      n
[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS	5      n[         R                  " SS
5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[         R                  " SS5      n[        [        [        [
        [        [        /n[        R                  " UUUS.5         U	" XUR                  [        5      USS9nU	" U S-  UUR                  [        5      USS9nU	" U S-  UUR                  [
        5      USS9nU	" U S-  UUR                  [        5      USS9n [        S UUUU 4 5       5      n!U
" U5      U" U" UU-  U-  U -  U" U U!SS9-	  UR                  [        5      S 95      -	  n"U(       a  U" U 5      n#U"U#-  n$U S-  n%OU"n$U n%U$U" U" U U%SS!9U" U" US"9U" X US-  S#-   -  SS9-	  5      U-  -	  US$9-	  n&U&U" 5       -	  U" U 5      -	  U" 5       -	  U" U" X S%95      -	  U" XS%9-	  U" S&5      -	  n'U" UUUS'S(9n(U(       a  US-  OS n)U(       a  U" UU)S%9n*OU" UU)S%9U" S&5      -	  U" 5       -	  n*U(U'-  U*-	  n+U+R                  S)U&5        S S S 5        W+R                  S*5      S'La  U+R                  S*U5        U+R                  S+W(R                  S+5      5        U(       + U+R                   S,'   U+$ ! , (       d  f       Nk= f)-Nr   zHashEmbed.v1zspacy.FeatureExtractor.v1z	Maxout.v1zspacy.StaticVectors.v1r   r   zParametricAttention.v1z
Dropout.v1r   architectureszspacy.TextCatBOW.v1r   r   zconcatenate.v1zclone.v1zreduce_sum.v1zwith_array.v1z
uniqued.v1zresidual.v1zexpand_window.v1)r   |z**
   )r   nVcolumnr@   seed            c              3   B   #    U  H  oR                  S 5      v   M     g7f)r   N)get_dim).0layers     r/   	<genexpr>%TextCatEnsemble_v1.<locals>.<genexpr>{   s     W8Vu}}T**8Vs   T)r   r   	normalize)rF   )rR   )r>      )padr   g        F)r   r1   r   r2   r   r   r   r   )r   r    r	   r   r
   r   r   r   r   r!   indexsumr#   has_dimr$   get_refr%   ),r;   r<   r=   r   r1   r>   r?   r@   r   	HashEmbedFeatureExtractorMaxoutStaticVectorsr)   r*   ParametricAttentionDropoutr(   build_bow_text_classifierr+   r&   concatenateclone
reduce_sum
with_arrayuniquedresidualexpand_windowcolslowerprefixsuffixshapewidth_nItrained_vectorsstatic_vectorsvector_layervectors_widthr   	cnn_modellinear_model	nO_doubler   r-   s,                                               r/   TextCatEnsemble_v1rt   A   s!    X~6I||H.IJ\\(K0FLL+CDMll8\2G\\(K0F",,x1IJll8\2G||Hm4H (_>S T,,x)9:KLL:.E,,x)9:KLL:.Eh8Jh8Jll8\2G||Hm4HLL+=>M%3D			u;e L	MDJJu,=wUW
 z::f%
 z::f%
 z::e$
 WPU8VWW*40J&(50Ux4@Azz$'5
 
 *51N*^;L!AIM*L!M*5-48!k: {Q!.C%DPT 	 #
 
 }"5)* | %23	4
 &' s| 	 1!/!	
 !BFd	"bY7L!RI6'#,F(*TL	)l:i)W 
NX }}T%'dB	MM.,"6"6~"FG%6!6EKKLa 
N	Ms   0F-P
P)N)typingr   r   thinc.typesr   	thinc.apir   r   spacy.attrsr   r	   r
   r   r   r   
spacy.utilr   spacy.tokensr   boolintr0   r:   floatrt        r/   <module>r      s%   !   % > >   BF'+19#
49hH 	  		
 49hB qqq !q 	q
 q q q e_q 	q qr   