
    c              	          d Z ddlZddlZddlZddlZddlZddlmZ ddlZddl	Z	e
dk    r ej        dej                    ej        dd                    ej                             ej                            ej        d                   Z eej                  d	k     r4 e e            d
          e            z              ej        d           e	j                            ej        d                   Ze	j                            ej        d                   Zej        Z eej                  d	k    rJ eej        d	                   Z e  ej!        ee                    Z e  ej!        ee                    Ze	j"        #                    e          Z$e	j"        %                    ee          Z&de&j'        j(        z  e&j'        j)        d         e&j'        j)        d         z  z  Z* e  ej!        ed                    Z+ ej        d ee+           ee$          e$j,                   dD ]Z- e            Z.e-dk    r>g Z/e	j0        1                    e+e-          D ]Z2e$e2         Z3e/4                    e3            nd e+D             Z/ ee/           ee+          k    sJ  e            e.z
  Z5 ej6        d ee+          z  e-z            Z7 ej        de-e5 ee+          e5z  e7e5z              e  ej!        ed                    Z+ ej        d ee+           ee          e&j'        j)        d         e*           dD ]Z- e            Z.e-dk    r>g Z/e	j0        1                    e+e-          D ]Z2e&e2         Z3e/4                    e3            nd e+D             Z/ ee/           ee+          k    sJ  e            e.z
  Z5 ej6        d ee+          z  e-z            Z7 ej        de-e5 ee+          e5z  e7e5z              ej        d ee          e$j,                   dD ]Z-e-e$_-         e            Z. e e$          Z/ e            e.z
  Z5 ej8        e/          Z/e-dk    r" ej        de-e5 ee          e5z             e/Z9n^ ej6        d ee          z  e-z            Z7e	j:        ;                    e9e/          Z< ej        de-e5 ee          e5z  e7e5z  e<           [/de$_=         ej        d           dD ]Z-e-e$_-         e            Z. e e$          Z/ e            e.z
  Z5e-dk    r ee          Z7n ej6        d ee          z  e-z            Z7 ej        de-e5 ee          e5z  e7e5z             de$_=         ej        d ee          e&j'        j)        d         e*           dD ]Z-e-e&_-         e            Z. e e&          Z/ e            e.z
  Z5 ej8        e/          Z/e-dk    r" ej        de-e5 ee          e5z             e/Z9n^ ej6        d ee          z  e-z            Z7e	j:        ;                    e9e/          Z< ej        de-e5 ee          e5z  e7e5z  e<           [/de&_=         ej        d            dD ]Z-e-e&_-         e            Z. e e&          Z/ e            e.z
  Z5e-dk    r ee          Z7n ej6        d ee          z  e-z            Z7 ej        de-e5 ee          e5z  e7e5z             de&_=         ej        d!e           dS dS )"ax  
USAGE: %(program)s CORPUS_DENSE.mm CORPUS_SPARSE.mm [NUMDOCS]
    Run speed test of similarity queries. Only use the first NUMDOCS documents of each corpus for testing (or use all if no NUMDOCS is given).
    The two sample corpora can be downloaded from http://nlp.fi.muni.cz/projekty/gensim/wikismall.tgz

Example: ./simspeed.py wikismall.dense.mm wikismall.sparse.mm 5000
    N)time__main__z)%(asctime)s : %(levelname)s : %(message)s)formatlevelz
running %s    __doc__      )	num_termsg      Y@  zStest 1 (dense): dense corpus of %i docs vs. index (%i documents, %i dense features))	r
            @               c                 (    g | ]}t           |         S  )index_dense.0vecs     4lib/python3.11/site-packages/gensim/test/simspeed.py
<listcomp>r   E   s    666K$666    g      ?z6chunksize=%i, time=%.4fs (%.2f docs/s, %.2f queries/s)zftest 2 (sparse): sparse corpus of %i docs vs. sparse index (%i documents, %i features, %.2f%% density))r
      
   d     r   c                 (    g | ]}t           |         S r   )index_sparser   s     r   r   r   \   s    777#L%777r   zKtest 3 (dense): similarity of all vs. all (%i documents, %i dense features))
r   r
   r   r   r   r   r   r   r   r   z&chunksize=%i, time=%.4fs (%.2f docs/s)zEchunksize=%i, time=%.4fs (%.2f docs/s, %.2f queries/s), meandiff=%.3er    zTtest 4 (dense): as above, but only ask for the top-10 most similar for each documentzVtest 5 (sparse): similarity of all vs. all (%i documents, %i features, %.2f%% density))r   r   r    r!   r"   r   i  zUtest 6 (sparse): as above, but only ask for the top-10 most similar for each documentzfinished running %s)>r	   loggingsys	itertoolsosmathr   numpynpgensim__name__basicConfigINFOinfojoinargvpathbasenameprogramlenprintglobalslocalsexitcorporaMmCorpuscorpus_densecorpus_sparser   NUMTERMSintNUMDOCSlistislicesimilaritiesMatrixSimilarityr   SparseMatrixSimilarityr$   indexnnzshapedensityquerynum_features	chunksizestartsimsutilschunkize_serialchunksimextendtakenceilqueriesasarrayunchunksizeedmatutilsmean_absolute_differencediffnum_bestr   r   r   <module>r^      sz	     



     				             z `1GJRYR^____GLsxx11222 gsx{++G
s38}}q ggii	"VVXX-...>**38A;77LN++CHQK88M&H
s38}}q G#chqk""t,I,\7CCDD-Y-mWEEFF %66|DDK&==mW_=``Ll(,,0B0H0KlN`NfghNi0ijG D!!,5566EGL]E

CC$$k&>   < 
 
	q= 	7D55eYGG ! !!%(C    ! 76666Ds4yyCCJJ&&&&$)C##e**,y899Ducc%jj50'E/	
 	
 	
 	
 D!!-6677EGLpE

CC&&(:(@(CW   0 
 
	q= 	8D55eYGG ! !"5)C    ! 87777Ds4yyCCJJ&&&&$)C##e**,y899Ducc%jj50'E/	
 	
 	
 	

 GLUL;3   ?  	 ) tK  rz$> 	GL85##l"3"3e";   !MMdicc,&7&7 7) CDDG?;;M4PPDGLW5##l"3"3e";Wu_d   DKGLghhh> 
 
	 )tK  > 	Ec,''GGdicc,&7&7 7) CDDGDucc,//%75	
 	
 	
 	
  KGL`ML.4Q7   6  	!*tL!!rz$> 	GL85##m"4"4u"<   !MMdicc-&8&8 89 DEEG?;;M4PPDGLW5##m"4"4u"<got   DLGLhiii5 
 
	!*tL!!> 	Fc-((GGdicc-&8&8 89 DEEGDucc-0058'E/	
 	
 	
 	
 !LGL&00000A`1 `1r   