
    i                        d dl mZ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ded	ed
ee   deee   ef   fdZ	 dd	ededed
ee   deee   ef   f
dZ	 ddededee   d	ededededee   d
ee   defdZy)    )OptionalList)Floats2d)Modelwith_cpu)IDORTHPREFIXSUFFIXSHAPELOWER)registry)DocNtok2vecexclusive_classesnOreturnc                    t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  d|i      5  |  |       z	   |       z	  }	|r1 ||| j	                  d	      
      }
|	|
z	  }|j                  d|
       n8 ||| j	                  d	      
      }|	|z	   |       z	  }|j                  d|       ddd       j                  d|        |j                  d	|       | |j                  d<   |S # 1 sw Y   ?xY w)a1  
    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                s/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/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	. 	8&+-7"bW-B-B4-HIL<'EMM.,7!RG,A,A$,GHL<'8:5EMM.,7	8 
MM)W%	MM$%6!6EKKL	8 	8s   A>EE!
ngram_sizeno_output_layerc                 2   t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  d|i      5   ||      }	 ||t              |	z	  }
t        |
|
j                        }
|s)| r |       n |       }|
t        ||j                        z	  }
d d d        
j                  d		       |  |
j                  d
<   |
S # 1 sw Y   -xY w)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	. F$R(z5F		*3D-/(*LXlL4D4DEEEF 
MM.-0%6!6EKKLF Fs   ADDwidth
embed_sizepretrained_vectorswindow_size
conv_depthdropoutc	                 .   t        j                  dd      }	t        j                  dd      }
t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd	      }t        j                  dd
      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        j                  dd      }t        t        t        t
        t        t        g}t        j                  |||d      5   |	| ||j                  t              |d      } |	| dz  ||j                  t              |d      } |	| dz  ||j                  t
              |d      } |	| dz  ||j                  t              |d      } t        d |||| fD              }! |
|       | |||z  |z  | z   || |!d      z	  |j                  t                           z	  }"|r ||       }#|"|#z  }$| dz  }%n|"}$| }%|$ | || |%d!       | ||"       || | |dz  d#z   z  d      z	        |z  z	  |$      z	  }&|& |       z	   ||       z	   |       z	   | || | %            z	   ||| %      z	   |d&      z	  }' ||||d'(      }(|r|dz  nd })|r |||)%      }*n |||)%       |d&      z	   |       z	  }*|(|'z  |*z	  }+|+j                  d)|&       d d d        +j                  d*      d'ur|+j                  d*|       |+j                  d+(j                  d+             | |+j                   d,<   |+S # 1 sw Y   axY w)-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   >   K   | ]  }|j                  d         yw)r   N)get_dim).0layers     r/   	<genexpr>z%TextCatEnsemble_v1.<locals>.<genexpr>{   s     Wuu}}T*Ws   T)r   r   	normalize)rF   )rQ   )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_v1rs   A   s2    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 K*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: U{Q!.C%DPT 	 #
 
 }"5)* | %E23	4
 &' s| 	 1!/!	
 !BFd	"bY7L!RI6'#,F(*TL	)l:i)WK*X }}T%'dB	MM.,"6"6~"FG%6!6EKKLaK* K*s   GPP)N)typingr   r   thinc.typesr   	thinc.apir   r   spacy.attrsr   r	   r
   r   r   r   
spacy.utilr   spacy.tokensr   boolintr0   r:   floatrs        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~   