
    c$A                       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ZddlmZ ddl	m
Z
 ddlmZ ddl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 ddl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  ddlm!Z! ddl"m#Z# ddl$m%Z% 	 ddl&m'Z' dZ(n# e)e*f$ r dZ(Y nw xY wd  e+e          D             Z, ej-        d           G d dej.                              Z/ G d de/          Z0 G d de/          Z1 G d de/          Z2 G d d e/          Z3 G d! d"e/          Z4 G d# d$ej.                  Z5 G d% d&ej.                  Z6 G d' d(ej.                  Z7 G d) d*ej.                  Z8 G d+ d,ej.                  Z9 G d- d.ej.                  Z: G d/ d0ej.                  Z; G d1 d2ej.                  Z< G d3 d4ej.                  Z=e>d5k    r( ej?        d6ej@        7            ejA                     dS dS )8zG
Automated tests for similarity algorithms (the similarities package).
    N)utils)
Dictionary)word2vec)doc2vec)KeyedVectors)
TfidfModel)matutilssimilarities)Word2VecFastText)datapathget_tmpfilecommon_textscommon_dictionarycommon_corpus)UniformTermSimilarityIndex)WordEmbeddingSimilarityIndex)SparseTermSimilarityMatrix)LevenshteinSimilarityIndex)	_nlargesteditdist)emd2TFc                 @    g | ]\  }}t          j        ||g          S  )r   TaggedDocument).0iwordss      =lib/python3.11/site-packages/gensim/test/test_similarities.py
<listcomp>r!   ,   s+    QQQHAuW#EA3//QQQ    zskipping abstract base classc                   h    e Zd ZdZd ZddZd Zd Zd Zd	 Z	d
 Z
d Zd Zd Zd Zd Zd Zd ZdS )_TestSimilarityABCzP
    Base class for SparseMatrixSimilarity and MatrixSimilarity unit tests.
    c                 ^    |                      t          t          t                              S )z!Creates a SimilarityABC instance.num_featuresclsCORPUSlen
DICTIONARYselfs    r    factoryMethodz _TestSimilarityABC.factoryMethod5   s    xxS__x===r"   Nd   c                    | j         t          j        k    r1|                      d t          t	          t
                    |          }n.|                      t          t	          t
                              }t          |t          j                  rt          j	        g dg dg dg dg dg dg d	g d
g dg	t          j
                  }|                     t          j        t          |j                  t          |j        j                                       ||_        t          d         }||         }g dd |         }t#          j        |t	          |                    }|"t#          j        |t	          |                    }|                     t          j        ||                     | j         t          j        k    r|                                 d S d S )Nr'   	shardsizer&   )/@y?r4   r4           r5   r5   r5   r5   r5   r5   r5   r5   )r5   9 ?r5   r6   r6   r6   r6   r6   r5   r5   r5   r5   )      ?r5   r5   r5   r5   r5   r7   r7   r7   r5   r5   r5   )r5   r5   r6   r5   r5   r5   gէ ?r5   r6   r5   r5   r5   )r5   r5   r5   r4   r4   r5   r5   r4   r5   r5   r5   r5   )r5   r5   r5   r5   r5   r5   r5   r5   r5         ?r5   r5   )r5   r5   r5   r5   r5   r5   r5   r5   r5   &}`?r9   r5   )r5   r5   r5   r5   r5   r5   r5   r5   r5   r4   r4   r4   )r5   r5   r5   r5   r5   r4   r5   r5   r5   r5   r4   r4   dtyper   r   筩?   /@y?)   ~%}+?   rC   )r)   r
   
Similarityr*   r+   r,   
isinstanceMatrixSimilaritynumpyarrayfloat32
assertTrueallclosesortedflatindexnum_bestr	   sparse2fulldestroy)r.   rQ   r3   rP   expectedquerysimss          r    	test_fullz_TestSimilarityABC.test_full9   s   8|.. 	CHHT6JS\H]]EEHHV#j//HBBEe\:;; 	]{aaavvvLLLaaaaaaKKKZZZaaaaaa
$ ]
$ 
$ 
$H OOEN6(-+@+@&IYBZBZ[[\\\!q	U|WWWXbZbXbc '#e**== 	:'c%jj99Dx667778|.. 	MMOOOOO	 	r"   c                     | j         t          j        k    rt          s|                     d           dD ]}|                     |           d S )NPOT not installedNr   rE   	     rQ   )r)   r
   WmdSimilarityPOT_EXTskipTesttestFull)r.   rQ   s     r    test_num_bestz _TestSimilarityABC.test_num_bestZ   s^    8|11 	/' 	/MM-...- 	- 	-HMM8M,,,,	- 	-r"   c                 j    g d}g d}|                      t          j        |d          |           d S )N皙?皙?r5   r5   皙333333ÿr   re   rE   rf      rh   rB   topn)rL   r	   full2sparse_clipped)r.   vecrT   s      r    test_full2sparse_clippedz+_TestSimilarityABC.test_full2sparse_clippeda   sB    ///bbb4SqAAA8LLLLLr"   c                 b   g d}g d}t           j                            |          }t          j        |d          }|                     t           j                            |                     |                     t          j        |          |           g d}g d}t           j                            |gdz            }t          j        |d          }|                     t           j                            |                     |                     d |D             |gdz             d S )Nrd   ri   rB   rn   c                 6    g | ]}t          j        |          S r   r	   scipy2sparse)r   xs     r    r!   z?_TestSimilarityABC.test_scipy2scipy_clipped.<locals>.<listcomp>v   s#    PPPa.q11PPPr"   )scipysparse
csr_matrixr	   scipy2scipy_clippedrL   issparserv   )r.   rq   rT   	vec_scipyvec_scipy_clippedmatrix_scipymatrix_scipy_clippeds          r    test_scipy2scipy_clippedz+_TestSimilarityABC.test_scipy2scipy_clippedg   s&   ///bbbL++C00	$8KKK--.?@@AAA-.?@@(KKK 0//bbb|..uqy99';LqQQQ--.BCCDDDPP;OPPPS[R\_`R`aaaaar"   c                 *   |                                  }t          |t          j                  rt          s|                     d           g }	 ||         }|                     |d u           d S # t          $ r |                     d           Y d S w xY w)NrY   F)r/   rG   r
   r^   r_   r`   rL   
IndexError)r.   rP   rU   rV   s       r    test_empty_queryz#_TestSimilarityABC.test_empty_queryx   s    ""$$e\788 	/ 	/MM-...	#<DOOD,----- 	# 	# 	#OOE""""""	#s   A/ /BBc                    | j         t          j        k    r1|                      d t          t	          t
                    d          }n.|                      t          t	          t
                              }t          d d         }||         }t          j        g dg dg dgt          j                  }| 	                    t          j
        ||                     d|_        ||         }g d	g d
g dg}| 	                    t          j
        ||                     | j         t          j        k    r|                                 d S d S )Nrm   r2   r&   rB   	r>   rC   rA   rC   r5   r5   r5   r5   r5   	rC   r8   r6   K}\UU?r9   r5   r5   r5   rC   	rA   r6   r8   dy!?rA   r5   r5   r5   r5   r:   )r=   r?   rD   ))rE   r8   )   r9   )r@   r6   ))r@   r8   )rB   r   )rE   r6   )r)   r
   rF   r*   r+   r,   rI   rJ   rK   rL   rM   rQ   rS   )r.   rP   rU   rV   rT   s        r    test_chunkingz _TestSimilarityABC.test_chunking   sF   8|.. 	CHHT6JSTHUUEEHHV#j//HBBErr
U|;UUU\\\UUU 
 	     
 	x66777 U|???888888

 	x667778|.. 	MMOOOOO	 	r"   c                 "   | j         t          j        k    r1|                      d t          t	          t
                    d          }n.|                      t          t	          t
                              }d |D             }t          j        g dg dg dg dg d	g d
g dg dg dg	t          j                  }| 	                    t          j
        ||                     | j         t          j        k    r|                                 d S d S )Nrm   r2   r&   c                     g | ]}|S r   r   r   sims     r    r!   z0_TestSimilarityABC.test_iter.<locals>.<listcomp>       %%%%%%r"   r   r   r   )	rC   r   r   r8   r5   r5   r5   r5   r5   )	r5   r9   rA   r5   r>   r5   r5   r5   r5   )	r5   r5   r5   r5   r5   r8   r9   r4   r5   )	r5   r5   r5   r5   r5   r9   r>   q_ ?Xd ?)	r5   r5   r5   r5   r5   r4   r   r>   AUU?)	r5   rC   r5   r5   r5   r5   r   r   r>   r:   )r)   r
   rF   r*   r+   r,   rI   rJ   rK   rL   rM   rS   )r.   rP   rV   rT   s       r    	test_iterz_TestSimilarityABC.test_iter   s%   8|.. 	CHHT6JSTHUUEEHHV#j//HBBE%%u%%%;UUU\\\UUUNNNNNNGGGUUUUUUUUU
 
 
  
  
  	x667778|.. 	MMOOOOO	 	r"   c                 ,   | j         t          j        k    rt          s|                     d           t          d          }|                                 }|                    |           | j                             |          }| j         t          j	        k    rS| 
                    t          |j                  t          |j                  k               |                                 d S t          |t          j                  r<|j                                        |_        |j                                        |_        | 
                    t%          j        |j        |j                             |                     |j        |j                   d S )NrY   gensim_similarities.tst.pklr)   r
   r^   r_   r`   r   r/   saveloadrF   rL   r+   shardsrS   rG   SparseMatrixSimilarityrP   todenserI   rM   assertEqualrQ   r.   fnamerP   index2s       r    test_persistencyz#_TestSimilarityABC.test_persistency   sA   8|11 	/' 	/MM-...9::""$$

5u%%8|.. 
	>OOC--V]1C1CCDDDMMOOOOO%!DEE 6#k1133%|3355OOEN5;EEFFFU^V_=====r"   c                 ,   | j         t          j        k    rt          s|                     d           t          d          }|                                 }|                    |           | j                             |          }| j         t          j	        k    rS| 
                    t          |j                  t          |j                  k               |                                 d S t          |t          j                  r<|j                                        |_        |j                                        |_        | 
                    t%          j        |j        |j                             |                     |j        |j                   d S )NrY   gensim_similarities.tst.pkl.gzr   r   s       r    test_persistency_compressedz._TestSimilarityABC.test_persistency_compressed   sA   8|11 	/' 	/MM-...<==""$$

5u%%8|.. 
	>OOC--V]1C1CCDDDMMOOOOO%!DEE 6#k1133%|3355OOEN5;EEFFFU^V_=====r"   c                 0   | j         t          j        k    rt          s|                     d           t          d          }|                                 }|                    |d           | j                             |          }| j         t          j	        k    rS| 
                    t          |j                  t          |j                  k               |                                 d S t          |t          j                  r<|j                                        |_        |j                                        |_        | 
                    t%          j        |j        |j                             |                     |j        |j                   d S )NrY   r   r   	sep_limitr   r   s       r    
test_largez_TestSimilarityABC.test_large   sE   8|11 	/' 	/MM-...9::""$$

5A
&&&u%%8|.. 
	>OOC--V]1C1CCDDDMMOOOOO%!DEE 6#k1133%|3355OOEN5;EEFFFU^V_=====r"   c                 4   | j         t          j        k    rt          s|                     d           t          d          }|                                 }|                    |d           | j                             |d           }| j         t          j	        k    rS| 
                    t          |j                  t          |j                  k               |                                 d S t          |t          j                  r<|j                                        |_        |j                                        |_        | 
                    t%          j        |j        |j                             |                     |j        |j                   d S )NrY   r   r   r   mmapr   r   s       r    test_large_compressedz(_TestSimilarityABC.test_large_compressed   sI   8|11 	/' 	/MM-...<==""$$

5A
&&&u4008|.. 
	>OOC--V]1C1CCDDDMMOOOOO%!DEE 6#k1133%|3355OOEN5;EEFFFU^V_=====r"   c                 4   | j         t          j        k    rt          s|                     d           t          d          }|                                 }|                    |d           | j                             |d          }| j         t          j	        k    rS| 
                    t          |j                  t          |j                  k               |                                 d S t          |t          j                  r<|j                                        |_        |j                                        |_        | 
                    t%          j        |j        |j                             |                     |j        |j                   d S )NrY   r   r   r   rr   r   r   s       r    	test_mmapz_TestSimilarityABC.test_mmap  sK   8|11 	/' 	/MM-...9::""$$

5A
&&& u3//8|.. 
	>OOC--V]1C1CCDDDMMOOOOO%!DEE 6#k1133%|3355OOEN5;EEFFFU^V_=====r"   c                 ,   | j         t          j        k    rt          s|                     d           t          d          }|                                 }|                    |d           |                     t          | j         j
        |d           d S )NrY   r   r   r   r   r   )r)   r
   r^   r_   r`   r   r/   r   assertRaisesIOErrorr   )r.   r   rP   s      r    test_mmap_compressedz'_TestSimilarityABC.test_mmap_compressed  s    8|11 	/' 	/MM-...<==""$$

5A
&&& 	'48=%cBBBBBr"   )Nr0   )__name__
__module____qualname____doc__r/   rW   rb   rr   r   r   r   r   r   r   r   r   r   r   r   r"   r    r$   r$   /   s        > > >   B- - -M M Mb b b"
# 
# 
#  4  *> > >(> > >(> > >,> > >,> > >.
C 
C 
C 
C 
Cr"   r$   c                       e Zd Zd ZdS )TestMatrixSimilarityc                 (    t           j        | _        d S N)r
   rH   r)   r-   s    r    setUpzTestMatrixSimilarity.setUp,  s    0r"   N)r   r   r   r   r   r"   r    r   r   +  s#        1 1 1 1 1r"   r   c                   4   e Zd Zd Zd Z ej        edu d          dd            Z ej        edu d          d             Z	 ej        edu d          d             Z
 ej        edu d          d	             Z ej        edu d          d
             ZdS )TestWmdSimilarityc                 h    t           j        | _        t          t          d          j        | _        d S NrE   	min_count)r
   r^   r)   r   TEXTSwv	w2v_modelr-   s    r    r   zTestWmdSimilarity.setUp1  s'    -!%15558r"   c                 B    |                      t          | j                  S r   )r)   r   r   r-   s    r    r/   zTestWmdSimilarity.factoryMethod5  s    xxt~...r"   FrY   Nc                    |                      t          | j                  }||_        t          d         }||         }|5|D ]0\  }}|                     t          j        |dk                         1d S |                     |d         dk               |                     t          j        |dd          dk                         |                     t          j        |dd          dk                          d S )Nr   r5   r8   rE   )r)   r   r   rQ   rL   rI   alltrue)r.   rQ   rP   rU   rV   r   r   s          r    rW   zTestWmdSimilarity.test_full9  s     //!aU| 	; : :3cCi 8 89999: : OODGsN+++OOEM$qrr(S.99:::OOEM$qrr(S.99:::::r"   c                 L   |                      t          | j        d          }t          d         }||         }t          j        |          dddf         }t          t          j        |          dk               t          |          dz
  k    }|                     |           dS )zR Check that similarities are non-increasing when `num_best` is not
        `None`.rB   r]   r   NrE   )	r)   r   r   rI   asarraysumdiffr+   rL   r.   rP   rU   rV   sims2conds         r    test_non_increasingz%TestWmdSimilarity.test_non_increasingL  s     ;;aU|d##AAAqD) 5:e$$q())SZZ!^;r"   c                    |                      t          | j                  }t          d d         }||         }t          d          D ]5}|                     t          j        |||f         dk                         6d|_        ||         }|D ]`}|D ][\  }}|                     t          j        |dk                         |                     t          j        |dk                         \ad S )NrB   r8   r5   )r)   r   r   rangerL   rI   r   rQ   )r.   rP   rU   rV   r   	sims_tempr   s          r    r   zTestWmdSimilarity.test_chunking\  s     //bqb	U|q 	> 	>AOOEM$q!t**;<<==== U| 	; 	;I# ; ;3cCi 8 8999cSj 9 9::::;	; 	;r"   c                     |                      t          | j                  }|D ]X}|                     t	          j        |dk                         |                     t	          j        |dk                         Yd S Nr5   r8   )r)   r   r   rL   rI   r   r.   rP   rV   s      r    r   zTestWmdSimilarity.test_itero  su     // 	8 	8DOOEM$#+66777OOEM$#+667777	8 	8r"   c                     |                      t          | j                  }|                     t	          |                     d S r   )r)   r   r   rL   str)r.   rP   s     r    test_strzTestWmdSimilarity.test_strx  s5    //E

#####r"   r   )r   r   r   r   r/   unittestskipIfr_   rW   r   r   r   r   r   r"   r    r   r   0  s'       9 9 9/ / / X_W%':;;; ; ; <;;$ X_W%':;;  <; X_W%':;;; ; <;;$ X_W%':;;8 8 <;8 X_W%':;;$ $ <;$ $ $r"   r   c                   4    e Zd Zd Zd ZddZd Zd Zd ZdS )	TestSoftCosineSimilarityc                 b   t           j        | _        t          t                    | _        t          j                            dd          }d|t          j	        d         t          j	        d         f<   d|t          j	        d         t          j	        d         f<   t          |          | _        d S )N
dictionary   lil)formatr7   userhuman)r
   SoftCosineSimilarityr)   r   r,   tfidfrx   ry   identitytoken2idr   similarity_matrix)r.   r   s     r    r   zTestSoftCosineSimilarity.setUp  s    4:666
!L11"U1CCWZ*-f5z7J77SSTWZ*-g6
8KF8SST!;<M!N!Nr"   c                 B    |                      t          | j                  S r   )r)   r*   r   r-   s    r    r/   z&TestSoftCosineSimilarity.factoryMethod  s    xx 6777r"   Nc           	         |                      t          | j        |          }t          j        t
          d                   }||         }|_|D ][\  }}|                     t          j        |dk                         |                     t          j        |dk                         \n| 	                    d|d                    |                     t          j        |dd          dk                         |                     t          j        |dd          dk                          t          | j
        t                   fD ]}|                      || j        |          }||         }|d|D ]`}|D ][\  }}|                     t          j        |dk                         |                     t          j        |dk                         \at          |          D ]\  }}| 	                    d||                    |                     t          j        |d |         dk                         |                     t          j        |d |         dk                          |                     t          j        ||dz   d          dk                         |                     t          j        ||dz   d          dk                          d S )Nr]   r   r8   r5   rE   )r)   r*   r   r,   doc2bowr   rL   rI   r   assertAlmostEqualr   	enumerate)r.   rQ   rP   rU   rV   r   r   results           r    rW   z"TestSoftCosineSimilarity.test_full  s   !7(KK"58,,U| 	; ; ;3cSj 9 9:::cSj 9 9::::; ""3Q000OOEM$qrr(c/::;;;OOEM$qrr(S.99::: 
6"$ 	I 	IE HHUD$:XHNNE<D I" C CF"( C C3cSj(A(ABBBcSj(A(ABBBBCC
 "+4 I IIAv**3q	:::OOEM&!*2C$D$DEEEOOEM&!*s2B$C$CDDDOOEM&Q.C2G$H$HIIIOOEM&Q.32F$G$GHHHHI	I 	Ir"   c                 p   |                      t          | j        d          }t          j        t
          d                   }||         }t          j        |          dddf         }t          t          j	        |          dk              t          |          dz
  k    }|                     |           dS )zJ Check that similarities are non-increasing when `num_best` is not `None`.rm   r]   r   NrE   )r)   r*   r   r,   r   r   rI   r   r   r   r+   rL   r   s         r    r   z,TestSoftCosineSimilarity.test_non_increasing  s     !7!DD"58,,U|d##AAAqD) 5:e$$)**c%jj1n<r"   c                    |                      t          | j                  }d t          d d         D             }||         }t	          d          D ]5}|                     t          j        |||f         dk                         6d|_        ||         }t          |          D ]Q\  }}|}| 
                    ||d         d         d           d}| 
                    ||d         d         d           Rd S )	Nc                 6    g | ]}t          j        |          S r   )r,   r   )r   documents     r    r!   z:TestSoftCosineSimilarity.test_chunking.<locals>.<listcomp>  s#    HHH(#H--HHHr"   rB   r8   rm   r   r@   placesrE   )r)   r*   r   r   r   rL   rI   r   rQ   r   r   )r.   rP   rU   rV   r   chunkrT   s          r    r   z&TestSoftCosineSimilarity.test_chunking  s	   !788HHeBQBiHHHU|q 	> 	>AOOEM$q!t**;<<==== U|!$ 	D 	DHAuH""8U1Xa["CCCH""8U1Xa["CCCC		D 	Dr"   c                     |                      t          | j                  }|D ]X}|                     t	          j        |dk                         |                     t	          j        |dk                         Yd S r   )r)   r*   r   rL   rI   r   r   s      r    r   z"TestSoftCosineSimilarity.test_iter  st    !788 	8 	8DOOEM$#+66777OOEM$#+667777	8 	8r"   r   )	r   r   r   r   r/   rW   r   r   r   r   r"   r    r   r   ~  s~        O O O8 8 8!I !I !I !IF  D D D"8 8 8 8 8r"   r   c                        e Zd Zd Zd Zd ZdS )TestSparseMatrixSimilarityc                 (    t           j        | _        d S r   )r
   r   r)   r-   s    r    r   z TestSparseMatrixSimilarity.setUp  s    6r"   c                     t          t                    }|                     t          |          }|t                   }|                     t          |d          }|t                   }|                     t
          j                            |                     |                     t
          j                            |                     t          j
                            ||                                           dS )z<Sparsity is correctly maintained when maintain_sparsity=Truer&   T)r'   maintain_sparsityN)r+   r,   r)   r*   assertFalserx   ry   r|   rL   rI   testingassert_array_equalr   )r.   r'   rP   
dense_simssparse_simss        r    test_maintain_sparsityz1TestSparseMatrixSimilarity.test_maintain_sparsity  s    :l;;6]
ldSSFm..z::;;;--k::;;;(([5H5H5J5JKKKKKr"   c                    t          t                    }|                     t          |dd          }|t                   }|                     t          |dd          }|t                   }|                     t
          j                            |                     |                     t
          j                            |                     | 	                    |d |D                        dS )z`Tests that sparsity is correctly maintained when maintain_sparsity=True and num_best is not NoneFrB   )r'   r   rQ   Tc                 6    g | ]}t          j        |          S r   ru   )r   vs     r    r!   zSTestSparseMatrixSimilarity.test_maintain_sparsity_with_num_best.<locals>.<listcomp>  s#    *]*]*]8+@+C+C*]*]*]r"   N)
r+   r,   r)   r*   r   rx   ry   r|   rL   r   )r.   r'   rP   dense_topn_simsscipy_topn_simss        r    $test_maintain_sparsity_with_num_bestz?TestSparseMatrixSimilarity.test_maintain_sparsity_with_num_best  s    :le^_``-ld]^__-..??@@@--o>>???*]*]_*]*]*]^^^^^r"   N)r   r   r   r   r  r
  r   r"   r    r   r     sI        7 7 7L L L_ _ _ _ _r"   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestSimilarityc                 (    t           j        | _        d S r   )r
   rF   r)   r-   s    r    r   zTestSimilarity.setUp  s    *r"   c                 b    |                      d t          t          t                    d          S )Nrm   r2   r(   r-   s    r    r/   zTestSimilarity.factoryMethod  s"    xxf3z??axPPPr"   c                 H    dD ]}dD ]}|                      ||           d S )NrZ   )rE   r@   r[   r\   )rQ   r3   )ra   )r.   rQ   r3   s      r    test_shardingzTestSimilarity.test_sharding  sO    - 	F 	FH, F F	x9EEEEF	F 	Fr"   c                    t          j        dt          dd         t          t                    d          }|t          d                  }|                    t          dd                    t          d         }||         }g d}t          j        |t          |                    }|                     t          j
        ||                     |                                 dS )z%test re-opening partially full shardsNrm   r[   r2   r   r<   )r
   rF   r*   r+   r,   add_documentsr	   rR   rL   rI   rM   rS   )r.   rP   _rU   rV   rT   s         r    test_reopenzTestSimilarity.test_reopen   s    'fRaRjs:bcddd&)F122J'''q	U|WWW'#e**==x66777r"   c                     d S r   r   r-   s    r    r   z#TestSimilarity.test_mmap_compressed  s    r"   c                 <   |                      d t          t          t                    d          }d |D             }t          |          dz
  |_        d |D             }|                     t          j        ||                     |                                 d S )Nrm   r2   c                     g | ]}|S r   r   r   s     r    r!   z1TestSimilarity.test_chunksize.<locals>.<listcomp>  s    )))CC)))r"   rE   c                     g | ]}|S r   r   r   s     r    r!   z1TestSimilarity.test_chunksize.<locals>.<listcomp>  r   r"   )	r)   r*   r+   r,   	chunksizerL   rI   rM   rS   )r.   rP   rT   rV   s       r    test_chunksizezTestSimilarity.test_chunksize  s    vC
OOqQQ))5)))e**q.%%u%%%x66777r"   c                 `    g df}g d}|                      t          d|          |           d S )N)rj   rk   )r@   r5   )rB   r5   )r   rg   rl   ri   rB   )rL   r   )r.   rV   rT   s      r    test_nlargestzTestSimilarity.test_nlargest  s?    OOOQ333	!T**H55555r"   N)
r   r   r   r   r/   r  r  r   r  r  r   r"   r    r  r    s        + + +Q Q QF F F

 
 
  
  6 6 6 6 6r"   r  c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )TestWord2VecAnnoyIndexerc                 ~    	 dd l }n)# t          $ r}t          j        d|z            d }~ww xY wddlm} || _        d S )Nr   "Annoy library is not available: %sAnnoyIndexer)annoyImportErrorr   SkipTestgensim.similarities.annoyr"  indexerr.   r#  er"  s       r    r   zTestWord2VecAnnoyIndexer.setUp!  sl    	NLLLL 	N 	N 	N#$H1$LMMM	N 	;:::::#    
-(-c                 6   t          j        t          d          }|                     |d          }|                     |j        |           |                     |j        |j        |           |                     |           |                     ||           d S )NrE   r   
   	r   r   r   r'  assertVectorIsSimilarToItselfr   assertApproxNeighborsMatchExactassertIndexSavedassertLoadedIndexEqualr.   modelrP   s      r    test_word2vecz&TestWord2VecAnnoyIndexer.test_word2vec*  s    !%1555UB''**58U;;;,,UXuxGGGe$$$##E511111r"   c                 h    G d d          }t           |t          d                    d          }|                     |d          }|                     |j        |           |                     |j        |j        |           |                     |           |                     ||           d S )Nc                       e Zd Zd Zd ZdS ):TestWord2VecAnnoyIndexer.test_fast_text.<locals>.LeeReaderc                     || _         d S r   fnr.   r:  s     r    __init__zCTestWord2VecAnnoyIndexer.test_fast_text.<locals>.LeeReader.__init__5      r"   c              3      K   t          j        | j        dd          5 }|D ]<}|                                                                                                V  =	 d d d            d S # 1 swxY w Y   d S Nr   latin_1)encodingr   openr:  lowerstripsplitr.   infilelines      r    __iter__zCTestWord2VecAnnoyIndexer.test_fast_text.<locals>.LeeReader.__iter__8        ZyAAA ;V & ; ;"jjll002288::::::;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;   A A--A14A1Nr   r   r   r<  rJ  r   r"   r    	LeeReaderr7  4  2          ; ; ; ; ;r"   rN  lee.cor  bucketr,  r   r   r'  r.  r   r/  r0  r1  r.   rN  r3  rP   s       r    test_fast_textz'TestWord2VecAnnoyIndexer.test_fast_text3  s    	; 	; 	; 	; 	; 	; 	; 	; 8I#6#677EEEUB''**58U;;;,,UXuxGGGe$$$##E511111r"   c                     ddl m} t          d          }t          j        |          } ||d          }|                     |j        d           |                     ||           |                     |||           d S )Nr   r!  lee_fasttext.vecr,  )	r&  r"  r   r   load_word2vec_formatr   	num_treesr.  r/  )r.   r"  keyVectors_filer3  rP   s        r    $test_annoy_indexing_of_keyed_vectorsz=TestWord2VecAnnoyIndexer.test_annoy_indexing_of_keyed_vectorsE  s    ::::::"#5661/BBUB''"---**5%888,,UE5AAAAAr"   c                 j    ddl m}  |            }|                     t          |j        d           d S Nr   r!  
test-indexr   )r&  r"  r   r   r   )r.   r"  
test_indexs      r    test_load_missing_raises_errorz7TestWord2VecAnnoyIndexer.test_load_missing_raises_errorO  sB    ::::::!\^^
':?,GGGGGr"   c                     |                                 d         }|j        d         }|                    |d          }|d         \  }}|                     ||           |                     |dd           d S Nr   rE   r8   r@   r   get_normed_vectorsindex_to_keymost_similarr   r   r.   r   rP   vectorlabelapprox_neighborsword
similaritys           r    r.  z6TestWord2VecAnnoyIndexer.assertVectorIsSimilarToItselfU      &&((+" --fa88+A.ju%%%z3q99999r"   c                     |                                 d         }|                    |gd|          }|                    |gd          }d |D             }d |D             }|                     ||           d S )Nr   rm   ro   r'  positivero   c                     g | ]
}|d          S r   r   r   neighbors     r    r!   zLTestWord2VecAnnoyIndexer.assertApproxNeighborsMatchExact.<locals>.<listcomp>c      EEEEEEr"   c                     g | ]
}|d          S ru  r   rv  s     r    r!   zLTestWord2VecAnnoyIndexer.assertApproxNeighborsMatchExact.<locals>.<listcomp>d      CCCxx{CCCr"   rf  rh  r   	r.   r3  r   rP   rj  rl  exact_neighborsapprox_wordsexact_wordss	            r    r/  z8TestWord2VecAnnoyIndexer.assertApproxNeighborsMatchExact^  s    &&((+ --vhQ-NN,,vhQ,GGEE4DEEECC?CCC{33333r"   c                 2   |                                 d         }|                    |gd |          }|                    |gd           }|                     ||           |                     t          |          t          |j                             d S )Nr   rq  rr  )rf  rh  r   r+   vectors)r.   r3  r   rP   rj  approx_similaritiesexact_similaritiess          r    #assertAllSimilaritiesDisableIndexerz<TestWord2VecAnnoyIndexer.assertAllSimilaritiesDisableIndexerh  s    &&((+#00&e0TT"//&/MM,.@AAA0113rz??CCCCCr"   c                    t          d          }|                    |           |                     t          j                            |                     |                     t          j                            |dz                        d S Nr   z.dr   r   rL   ospathexistsr.   rP   r   s      r    r0  z)TestWord2VecAnnoyIndexer.assertIndexSavedp  l    9::

5u--...ut|4455555r"   c                 z   ddl m} t          d          }|                    |            |            }|                    |           ||_        |                     |j        j        |j        j                   |                     |j	        |j	                   |                     |j
        |j
                   d S Nr   r!  r   )r&  r"  r   r   r   r3  r   rP   flabelsrZ  )r.   rP   r3  r"  r   r   s         r    r1  z/TestWord2VecAnnoyIndexer.assertLoadedIndexEqualv  s    ::::::9::

5E777v}555&*:;;;;;r"   N)r   r   r   r   r4  rV  r\  rb  r.  r/  r  r0  r1  r   r"   r    r  r    s        $ $ $2 2 22 2 2$B B BH H H: : :4 4 4D D D6 6 6< < < < <r"   r  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestDoc2VecAnnoyIndexerc                 .   	 dd l }n)# t          $ r}t          j        d|z            d }~ww xY wddlm} t          j        t          d          | _	         || j	        d          | _
        | j	        j                                        d         | _        d S )Nr   r   r!  rE   r   i,  )r#  r$  r   r%  r&  r"  r   Doc2Vec	SENTENCESr3  rP   dvrf  rj  r(  s       r    r   zTestDoc2VecAnnoyIndexer.setUp  s    	NLLLL 	N 	N 	N#$H1$LMMM	N 	;:::::_Y!<<<
!\$*c22
jm6688;r*  c                     | j                             | j        d          }|d         \  }}|                     |d           |                     |dd           d S NrE   r   r8   r@   r   rP   rh  rj  r   r   r.   rl  docrn  s       r    "test_document_is_similar_to_itselfz:TestDoc2VecAnnoyIndexer.test_document_is_similar_to_itself  a    :224;BB*1-Za   z3q99999r"   c                 
   | j         j                            | j        gd| j                  }| j         j                            | j        gd          }d |D             }d |D             }|                     ||           d S )Nrm   rq  rn   c                     g | ]
}|d          S ru  r   rv  s     r    r!   zMTestDoc2VecAnnoyIndexer.test_approx_neighbors_match_exact.<locals>.<listcomp>  rx  r"   c                     g | ]
}|d          S ru  r   rv  s     r    r!   zMTestDoc2VecAnnoyIndexer.test_approx_neighbors_match_exact.<locals>.<listcomp>  rz  r"   r3  r  rh  rj  rP   r   )r.   rl  r}  r~  r  s        r    !test_approx_neighbors_match_exactz9TestDoc2VecAnnoyIndexer.test_approx_neighbors_match_exact  s    :=55t{m!UYU_5``*-44dk]4KKEE4DEEECC?CCC{33333r"   c                 &   t          d          }| j                            |           |                     t          j                            |                     |                     t          j                            |dz                        d S r  r   rP   r   rL   r  r  r  r.   r   s     r    	test_savez!TestDoc2VecAnnoyIndexer.test_save  n    9::
u--...ut|4455555r"   c                 ~    ddl m}  |            | _        |                     t          | j        j        d           d S r^  )r&  r"  ra  r   r   r   )r.   r"  s     r    test_load_not_existz+TestDoc2VecAnnoyIndexer.test_load_not_exist  sG    ::::::&,..'4?#7|LLLLLr"   c                    ddl m} t          d          }| j                            |            |            | _        | j                            |           | j        | j        _        |                     | j        j        j	        | j        j        j	                   |                     | j        j
        | j        j
                   |                     | j        j        | j        j                   d S r  )r&  r"  r   rP   r   r   r   r3  r   r  r  rZ  )r.   r"  r   s      r    test_save_loadz&TestDoc2VecAnnoyIndexer.test_save_load  s    ::::::9::
"lnn J)+T[->-@AAA*DK,>???-t{/DEEEEEr"   N	r   r   r   r   r  r  r  r  r  r   r"   r    r  r    sv        
< 
< 
<: : :4 4 46 6 6M M MF F F F Fr"   r  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestWord2VecNmslibIndexerc                 ~    	 dd l }n)# t          $ r}t          j        d|z            d }~ww xY wddlm} || _        d S )Nr   #NMSLIB library is not available: %sNmslibIndexer)nmslibr$  r   r%  gensim.similarities.nmslibr  r'  r.   r  r)  r  s       r    r   zTestWord2VecNmslibIndexer.setUp  sl    	OMMMM 	O 	O 	O#$IA$MNNN	O 	=<<<<<$r*  c                 4   t          j        t          d          }|                     |          }|                     |j        |           |                     |j        |j        |           |                     |           |                     ||           d S r   r-  r2  s      r    r4  z'TestWord2VecNmslibIndexer.test_word2vec  s    !%1555U##**58U;;;,,UXuxGGGe$$$##E511111r"   c                 f    G d d          }t           |t          d                    d          }|                     |          }|                     |j        |           |                     |j        |j        |           |                     |           |                     ||           d S )Nc                       e Zd Zd Zd ZdS ):TestWord2VecNmslibIndexer.test_fasttext.<locals>.LeeReaderc                     || _         d S r   r9  r;  s     r    r<  zCTestWord2VecNmslibIndexer.test_fasttext.<locals>.LeeReader.__init__  r=  r"   c              3      K   t          j        | j        dd          5 }|D ]<}|                                                                                                V  =	 d d d            d S # 1 swxY w Y   d S r?  rB  rG  s      r    rJ  zCTestWord2VecNmslibIndexer.test_fasttext.<locals>.LeeReader.__iter__  rK  rL  NrM  r   r"   r    rN  r    rO  r"   rN  rP  rQ  rR  rT  rU  s       r    test_fasttextz'TestWord2VecNmslibIndexer.test_fasttext  s    	; 	; 	; 	; 	; 	; 	; 	; 8I#6#677EEEU##**58U;;;,,UXuxGGGe$$$##E511111r"   c                     ddl m} t          d          }t          j        |          } ||          }|                     ||           |                     |||           d S )Nr   r  rX  )r  r  r   r   rY  r.  r/  )r.   r  r[  r3  rP   s        r    test_indexing_keyedvectorsz4TestWord2VecNmslibIndexer.test_indexing_keyedvectors  su    <<<<<<"#5661/BBe$$**5%888,,UE5AAAAAr"   c                 V    ddl m} |                     t          |j        d           d S Nr   r  r_  r`  r  r  r   r   r   r.   r  s     r    rb  z8TestWord2VecNmslibIndexer.test_load_missing_raises_error  8    <<<<<<'=#5\JJJJJr"   c                     |                                 d         }|j        d         }|                    |d          }|d         \  }}|                     ||           |                     |dd           d S rd  re  ri  s           r    r.  z7TestWord2VecNmslibIndexer.assertVectorIsSimilarToItself  ro  r"   c                     |                                 d         }|                    |gd|          }|                    |gd          }d |D             }d |D             }|                     ||           d S )Nr   rm   rq  rn   c                     g | ]\  }}|S r   r   r   word_idrn  s      r    r!   zMTestWord2VecNmslibIndexer.assertApproxNeighborsMatchExact.<locals>.<listcomp>   s    LLL$7GZLLLr"   c                     g | ]\  }}|S r   r   r  s      r    r!   zMTestWord2VecNmslibIndexer.assertApproxNeighborsMatchExact.<locals>.<listcomp>  s    JJJ#67JwJJJr"   r{  r|  s	            r    r/  z9TestWord2VecNmslibIndexer.assertApproxNeighborsMatchExact  s    &&((+ --vhQ-NN,,fXA,>>LL;KLLLJJ/JJJ{33333r"   c                    t          d          }|                    |           |                     t          j                            |                     |                     t          j                            |dz                        d S r  r  r  s      r    r0  z*TestWord2VecNmslibIndexer.assertIndexSaved  r  r"   c                 R   ddl m} t          d          }|                    |           |                    |          }||_        |                     |j        |j                   |                     |j        |j                   |                     |j	        |j	                   d S Nr   r  r   )
r  r  r   r   r   r3  r   r  index_paramsquery_time_params)r.   rP   r3  r  r   r   s         r    r1  z0TestWord2VecNmslibIndexer.assertLoadedIndexEqual  s    <<<<<<9::

5##E**v}555+V-@AAA0&2JKKKKKr"   N)r   r   r   r   r4  r  r  rb  r.  r/  r0  r1  r   r"   r    r  r    s        % % %2 2 22 2 2$B B BK K K
: : :4 4 46 6 6L L L L Lr"   r  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestDoc2VecNmslibIndexerc                 ,   	 dd l }n)# t          $ r}t          j        d|z            d }~ww xY wddlm} t          j        t          d          | _	         || j	                  | _
        | j	        j                                        d         | _        d S )Nr   r  r  rE   r   )r  r$  r   r%  r  r  r   r  r  r3  rP   r  rf  rj  r  s       r    r   zTestDoc2VecNmslibIndexer.setUp  s    	OMMMM 	O 	O 	O#$IA$MNNN	O 	=<<<<<_Y!<<<
"]4:..
jm6688;r*  c                     | j                             | j        d          }|d         \  }}|                     |d           |                     |dd           d S r  r  r  s       r    r  z;TestDoc2VecNmslibIndexer.test_document_is_similar_to_itself'  r  r"   c                 
   | j         j                            | j        gd| j                  }| j         j                            | j        gd          }d |D             }d |D             }|                     ||           d S )Nrm   rq  rn   c                     g | ]\  }}|S r   r   r   tagrn  s      r    r!   zNTestDoc2VecNmslibIndexer.test_approx_neighbors_match_exact.<locals>.<listcomp>2  s    CCCsJsCCCr"   c                     g | ]\  }}|S r   r   r  s      r    r!   zNTestDoc2VecNmslibIndexer.test_approx_neighbors_match_exact.<locals>.<listcomp>3  s    AAAoc:cAAAr"   r  )r.   rl  r}  approx_tags
exact_tagss        r    r  z:TestDoc2VecNmslibIndexer.test_approx_neighbors_match_exact.  s    :=55t{m!UYU_5``*-44dk]4KKCC2BCCCAAAAA
j11111r"   c                 &   t          d          }| j                            |           |                     t          j                            |                     |                     t          j                            |dz                        d S r  r  r  s     r    r  z"TestDoc2VecNmslibIndexer.test_save7  r  r"   c                 V    ddl m} |                     t          |j        d           d S r  r  r  s     r    r  z,TestDoc2VecNmslibIndexer.test_load_not_exist=  r  r"   c                    ddl m} t          d          }| j                            |           |                    |          | _        | j        | j        _        |                     | j        j	        | j        j	                   |                     | j        j
        | j        j
                   |                     | j        j        | j        j                   d S r  )r  r  r   rP   r   r   r   r3  r   r  r  r  )r.   r  r   s      r    r  z'TestDoc2VecNmslibIndexer.test_save_loadB  s    <<<<<<9::
#((// J*DK,>???0$+2JKKK5t{7TUUUUUr"   Nr  r   r"   r    r  r    sv        
< 
< 
<: : :2 2 26 6 6K K K
V V V V Vr"   r  c                       e Zd Zd Zd ZdS )TestUniformTermSimilarityIndexc                 R    g dg dg| _         t          | j                   | _        d S )N
governmentdeniedholidayr  slowinghollingworth)	documentsr   r   r-   s    r    r   z$TestUniformTermSimilarityIndex.setUpQ  s0    @@@BkBkBkl$T^44r"   c           	         t          | j                  }t          |                    dd                    }|                     dt          |                     |                     dt          |                     t          |                    dd                    }|                     dt          |                     |                     dt          |                     t          | j                  }d |                    dt          | j                            D             }|                     d|v            t          | j        d          }t          j	        d	 |                    dt          | j                            D                       }| 
                    t          j        |dk                         d
S )+Test most_similar returns expected results.r  rE   rn   r   r   c                     g | ]\  }}|S r   r   r   termrn  s      r    r!   zDTestUniformTermSimilarityIndex.test_most_similar.<locals>.<listcomp>c  s    hhh*$
hhhr"   rf   term_similarityc                     g | ]\  }}|S r   r   r  s      r    r!   zDTestUniformTermSimilarityIndex.test_most_similar.<locals>.<listcomp>h  s/     $j $j $j+4J$j $j $jr"   N)r   r   listrh  
assertLessr+   assertGreaterEqualr   rI   rJ   rL   all)r.   rP   resultstermsr
   s        r    test_most_similarz0TestUniformTermSimilarityIndex.test_most_similarU  s    +4?;;u))*1)==>>3w<<(((3w<<000u))*1)==>>3w<<(((3w<<000 +4?;;hhe.@.@RUVZVeRfRf.@.g.ghhhu,--- +4?CPPP{ $j $j/4/A/A*SVW[WfSgSg/A/h/h$j $j $j k k	,#"56677777r"   Nr   r   r   r   r  r   r"   r    r  r  P  s2        5 5 58 8 8 8 8r"   r  c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKdJ ZLdKS )LTestSparseTermSimilarityMatrixc                    g dg dg| _         t          | j                   | _        t          | j                  | _        t          | j        d          }t          | j        d          | _        t          || j                  | _        t          | j        | j                  | _	        | j        
                    g d          | _        | j        
                    dd	g          | _        d S )
Nr  )r  r  r  r  r  r   r5   r  r7   )r  r  r  r  r  )r  r   r   r   r   r   rP   r   identity_matrixuniform_matrixr   vec1vec2)r.   
zero_indexs     r    r   z$TestSparseTermSimilarityMatrix.setUpn  s    222OOOQ %T^444?;;;
/QTUUU
/QTUUU
9*doVV8T_UUO++,U,U,UVV	O++]J,GHH			r"   c                     |                      t                    5  t          | j        g            d d d            d S # 1 swxY w Y   d S r   )r   
ValueErrorr   rP   r-   s    r    test_empty_dictionaryz4TestSparseTermSimilarityMatrix.test_empty_dictionary{  s    z** 	7 	7&tz2666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   >AAc                     t          | j        | j                  j        }|                     t          |t          j        j                             dS )z%Test the type of the produced matrix.N)	r   rP   r   matrixrL   rG   rx   ry   
csc_matrixr.   r  s     r    	test_typez(TestSparseTermSimilarityMatrix.test_type  s?    +DJHHO
65<+BCCDDDDDr"   c           	         t          | j        | j                  j                                        }|                     t          j        t          j        |          t          j	        |j
        d                   k                         dS )z0Test the existence of ones on the main diagonal.r   N)r   rP   r   r  r   rL   rI   r  diagonesshaper  s     r    test_diagonalz,TestSparseTermSimilarityMatrix.test_diagonal  sf    +DJHHOWWYY	%*V"4"4
6<PQ?8S8S"STTUUUUUr"   c                 4   t          | j        | j                  j                                        }|                     |j        d         t          | j                             |                     |j        d         t          | j                             dS )zTest the matrix order.r   rE   N)r   rP   r   r  r   r   r  r+   r  s     r    
test_orderz)TestSparseTermSimilarityMatrix.test_order  sv    +DJHHOWWYYa#do*>*>???a#do*>*>?????r"   c                    t          | j        | j        t          j                  j                                        }|                     t          j        |j                   t          | j        | j        t          j	                  j                                        }|                     t          j	        |j                   dS )z3Test the dtype parameter of the matrix constructor.r:   N)
r   rP   r   rI   rK   r  r   r   r;   float64r  s     r    
test_dtypez)TestSparseTermSimilarityMatrix.test_dtype  s    +DJu}]]]dllnn555+DJu}]]]dllnn55555r"   c           	      .   t          | j        | j        d          j                                        }|                     dt          j        t          j        |dk    d                               t          | j        | j        d          j                                        }|                     dt          j        t          j        |dk    d                               t          | j        | j        d          j                                        }|                     d	t          j        t          j        |dk    d                               t          | j        | j        d          j                                        }| 	                    dt          j        t          j        |dk    d                               | 
                    t          j        |t          j        |j        d                   k                         d
S )z;Test the nonzero_limit parameter of the matrix constructor.r0   nonzero_limite   r   )axisr   rm   rE   r@   N)r   rP   r   r  r   r  rI   maxr   r   rL   r  eyer  r  s     r    test_nonzero_limitz1TestSparseTermSimilarityMatrix.test_nonzero_limit  s   +DJWZ[[[bjjllUYuy11/M/M/M%N%NOOO+DJWXYYY`hhjj59UYv{-K-K-K#L#LMMM+DJWXYYY`hhjj59UYv{-K-K-K#L#LMMM+DJWXYYY`hhjjEIei!!&D&D&DEEFFF	&EIfl1o,F,F"FGGHHHHHr"   c                    t          | j        | j                  j                                        }|                     t          j        ||j        k                         t          | j        | j        d          j                                        }t          j	        g dg dg dg dg dg          }|                     t          j        ||k                         t          | j        | j        dd	          j                                        }t          j	        g d
g dg dg dg dg          }|                     t          j        ||k                         dS )z7Test the symmetric parameter of the matrix constructor.rE   r  r8   r7   r5   r5   r5   r7   r8   r5   r5   r5   r5   r5   r8   r5   r5   r5   r5   r5   r8   r5   r5   r5   r5   r5   r8   F)r  	symmetric)r8   r7   r7   r7   r7   N)
r   rP   r   r  r   rL   rI   r  TrJ   r.   r  expected_matrixs      r    test_symmetricz-TestSparseTermSimilarityMatrix.test_symmetric  s|   +DJHHOWWYY	&FH"455666+Jq: : ::@ 	+%%%%%%%%%%%%%%%'' ( ( 		/V";<<===+JqEK K KKQRYRYR[R[ 	+%%%%%%%%%%%%%%%'' ( ( 		/V";<<=====r"   c                 $   t          | j        d          }t          || j        d          j                                        }t          j        g dg dg dg dg d	g          }|                     t          j        ||k                         t          || j        dd
          j                                        }t          j        g dg dg dg dg d	g          }|                     t          j        ||k                         dS )z6Test the dominant parameter of the matrix constructor.      r  r@   r  )r8   r&  r&  r5   r5   )r&  r8   r5   r&  r5   )r&  r5   r8   r5   r5   )r5   r&  r5   r8   r5   r  T)r  dominant)r8   r&  r5   r5   r5   )r&  r8   r5   r5   r5   r  r  N)	r   r   r   r  r   rI   rJ   rL   r  )r.   negative_indexr  r#  s       r    test_dominantz,TestSparseTermSimilarityMatrix.test_dominant  sH   3DOUYZZZ+DO1> > >>DWWYY 	+%%%%%%%%%%%%%%%'' ( ( 		/V";<<===+DO1tM M MMST[T[T]T] 	+%%%%%%%%%%%%%%%'' ( ( 		/V";<<=====r"   c                    t          | j        | j        d          j                                        }t          j        g dg dg dg dg dg          }|                     t          j        ||k                         t          | j        | j        d| j	                  j                                        }t          j        g d	g d
g dg dg dg          }|                     t          j        ||k                         dS )z3Test the tfidf parameter of the matrix constructor.rE   r  r  r  r  r  r  )r  r   )r8   r5   r5   r7   r5   )r5   r8   r5   r5   r5   )r7   r5   r5   r8   r5   N)
r   rP   r   r  r   rI   rJ   rL   r  r   r"  s      r    
test_tfidfz)TestSparseTermSimilarityMatrix.test_tfidf  s9   +Jq: : ::@ 	+%%%%%%%%%%%%%%%'' ( ( 		/V";<<===+Jq
L L LLRSZSZS\S\ 	+%%%%%%%%%%%%%%%'' ( ( 		/V";<<=====r"   c                    t          j        g dg dg dg          }t          t          j                            |                    j        }|                     t          |t          j        j                             |                     t          j	        |
                                |k                         t          t          j                            |                    j        }|                     t          |t          j        j                             |                     t          j	        |
                                |k                         dS )zTest the matrix encapsulation.)r8          @g      @)r5   r8   g      @)r5   r5   r8   N)rI   rJ   r   rx   ry   r  r  rL   rG   r  r   rz   )r.   r#  r  s      r    test_encapsulationz1TestSparseTermSimilarityMatrix.test_encapsulation  s     +OOOOOO'  
 ,EL,C,CO,T,TUU\
65<+BCCDDD	&.."2"2o"EFFGGG+EL,C,CO,T,TUU\
65<+BCCDDD	&.."2"2o"EFFGGGGGr"   c                 d    |                      d| j                            g g                      dS )zOTest the inner product between two zero vectors with the default normalization.r5   Nr   r  inner_productr-   s    r    0test_inner_product_zerovector_zerovector_defaultzOTestSparseTermSimilarityMatrix.test_inner_product_zerovector_zerovector_default  s3     	d1??BGGHHHHHr"   c                 h    |                      d| j                            g g d                     dS )z[Test the inner product between two zero vectors with the (False, 'maintain') normalization.r5   Fmaintain
normalizedNr0  r-   s    r    7test_inner_product_zerovector_zerovector_false_maintainzVTestSparseTermSimilarityMatrix.test_inner_product_zerovector_zerovector_false_maintain  9     	d1??BSf?gghhhhhr"   c                 h    |                      d| j                            g g d                     dS )zUTest the inner product between two zero vectors with the (False, True) normalization.r5   FTr6  Nr0  r-   s    r    3test_inner_product_zerovector_zerovector_false_truezRTestSparseTermSimilarityMatrix.test_inner_product_zerovector_zerovector_false_true  9     	d1??BS`?aabbbbbr"   c                 h    |                      d| j                            g g d                     dS )z[Test the inner product between two zero vectors with the ('maintain', False) normalization.r5   r5  Fr6  Nr0  r-   s    r    7test_inner_product_zerovector_zerovector_maintain_falsezVTestSparseTermSimilarityMatrix.test_inner_product_zerovector_zerovector_maintain_false  r9  r"   c                 h    |                      d| j                            g g d                     dS )z`Test the inner product between two zero vectors with the ('maintain', 'maintain') normalization.r5   r5  r5  r6  Nr0  r-   s    r    :test_inner_product_zerovector_zerovector_maintain_maintainzYTestSparseTermSimilarityMatrix.test_inner_product_zerovector_zerovector_maintain_maintain  s9     	d1??BSk?llmmmmmr"   c                 h    |                      d| j                            g g d                     dS )zZTest the inner product between two zero vectors with the ('maintain', True) normalization.r5   r5  Tr6  Nr0  r-   s    r    6test_inner_product_zerovector_zerovector_maintain_truezUTestSparseTermSimilarityMatrix.test_inner_product_zerovector_zerovector_maintain_true  9     	d1??BSe?ffgggggr"   c                 h    |                      d| j                            g g d                     dS )zUTest the inner product between two zero vectors with the (True, False) normalization.r5   TFr6  Nr0  r-   s    r    3test_inner_product_zerovector_zerovector_true_falsezRTestSparseTermSimilarityMatrix.test_inner_product_zerovector_zerovector_true_false  r=  r"   c                 h    |                      d| j                            g g d                     dS )zZTest the inner product between two zero vectors with the (True, 'maintain') normalization.r5   Tr5  r6  Nr0  r-   s    r    6test_inner_product_zerovector_zerovector_true_maintainzUTestSparseTermSimilarityMatrix.test_inner_product_zerovector_zerovector_true_maintain   rG  r"   c                 h    |                      d| j                            g g d                     dS )zTTest the inner product between two zero vectors with the (True, True) normalization.r5   TTr6  Nr0  r-   s    r    2test_inner_product_zerovector_zerovector_true_truezQTestSparseTermSimilarityMatrix.test_inner_product_zerovector_zerovector_true_true%  s9     	d1??BS_?``aaaaar"   c                 n    |                      d| j                            g | j                             dS )zYTest the inner product between a zero vector and a vector with the default normalization.r5   Nr   r  r1  r  r-   s    r    ,test_inner_product_zerovector_vector_defaultzKTestSparseTermSimilarityMatrix.test_inner_product_zerovector_vector_default*  s5     	d1??DINNOOOOOr"   c                 r    |                      d| j                            g | j        d                     dS )zeTest the inner product between a zero vector and a vector with the (False, 'maintain') normalization.r5   r4  r6  NrR  r-   s    r    3test_inner_product_zerovector_vector_false_maintainzRTestSparseTermSimilarityMatrix.test_inner_product_zerovector_vector_false_maintain/  ;     	d1??DIZm?nnooooor"   c                 r    |                      d| j                            g | j        d                     dS )z_Test the inner product between a zero vector and a vector with the (False, True) normalization.r5   r;  r6  NrR  r-   s    r    /test_inner_product_zerovector_vector_false_truezNTestSparseTermSimilarityMatrix.test_inner_product_zerovector_vector_false_true4  ;     	d1??DIZg?hhiiiiir"   c                 r    |                      d| j                            g | j        d                     dS )zeTest the inner product between a zero vector and a vector with the ('maintain', False) normalization.r5   r?  r6  NrR  r-   s    r    3test_inner_product_zerovector_vector_maintain_falsezRTestSparseTermSimilarityMatrix.test_inner_product_zerovector_vector_maintain_false9  rV  r"   c                 r    |                      d| j                            g | j        d                     dS )zjTest the inner product between a zero vector and a vector with the ('maintain', 'maintain') normalization.r5   rB  r6  NrR  r-   s    r    6test_inner_product_zerovector_vector_maintain_maintainzUTestSparseTermSimilarityMatrix.test_inner_product_zerovector_vector_maintain_maintain>  s;     	d1??DIZr?sstttttr"   c                 r    |                      d| j                            g | j        d                     dS )zdTest the inner product between a zero vector and a vector with the ('maintain', True) normalization.r5   rE  r6  NrR  r-   s    r    2test_inner_product_zerovector_vector_maintain_truezQTestSparseTermSimilarityMatrix.test_inner_product_zerovector_vector_maintain_trueC  ;     	d1??DIZl?mmnnnnnr"   c                 r    |                      d| j                            g | j        d                     dS )z_Test the inner product between a zero vector and a vector with the (True, False) normalization.r5   rI  r6  NrR  r-   s    r    /test_inner_product_zerovector_vector_true_falsezNTestSparseTermSimilarityMatrix.test_inner_product_zerovector_vector_true_falseH  rY  r"   c                 r    |                      d| j                            g | j        d                     dS )zdTest the inner product between a zero vector and a vector with the (True, 'maintain') normalization.r5   rL  r6  NrR  r-   s    r    2test_inner_product_zerovector_vector_true_maintainzQTestSparseTermSimilarityMatrix.test_inner_product_zerovector_vector_true_maintainM  r`  r"   c                 r    |                      d| j                            g | j        d                     dS )z^Test the inner product between a zero vector and a vector with the (True, True) normalization.r5   rO  r6  NrR  r-   s    r    .test_inner_product_zerovector_vector_true_truezMTestSparseTermSimilarityMatrix.test_inner_product_zerovector_vector_true_trueR  s;     	d1??DIZf?gghhhhhr"   c                 n    |                      d| j                            | j        g                      dS )zYTest the inner product between a vector and a zero vector with the default normalization.r5   Nr   r  r1  r  r-   s    r    ,test_inner_product_vector_zerovector_defaultzKTestSparseTermSimilarityMatrix.test_inner_product_vector_zerovector_defaultW  s5     	d1??	2NNOOOOOr"   c                 r    |                      d| j                            | j        g d                     dS )zeTest the inner product between a vector and a zero vector with the (False, 'maintain') normalization.r5   r4  r6  Nrh  r-   s    r    3test_inner_product_vector_zerovector_false_maintainzRTestSparseTermSimilarityMatrix.test_inner_product_vector_zerovector_false_maintain\  ;     	d1??	2Zm?nnooooor"   c                 r    |                      d| j                            | j        g d                     dS )z_Test the inner product between a vector and a zero vector with the (False, True) normalization.r5   r;  r6  Nrh  r-   s    r    /test_inner_product_vector_zerovector_false_truezNTestSparseTermSimilarityMatrix.test_inner_product_vector_zerovector_false_truea  ;     	d1??	2Zg?hhiiiiir"   c                 r    |                      d| j                            | j        g d                     dS )zeTest the inner product between a vector and a zero vector with the ('maintain', False) normalization.r5   r?  r6  Nrh  r-   s    r    3test_inner_product_vector_zerovector_maintain_falsezRTestSparseTermSimilarityMatrix.test_inner_product_vector_zerovector_maintain_falsef  rl  r"   c                 r    |                      d| j                            | j        g d                     dS )zjTest the inner product between a vector and a zero vector with the ('maintain', 'maintain') normalization.r5   rB  r6  Nrh  r-   s    r    6test_inner_product_vector_zerovector_maintain_maintainzUTestSparseTermSimilarityMatrix.test_inner_product_vector_zerovector_maintain_maintaink  s;     	d1??	2Zr?sstttttr"   c                 r    |                      d| j                            | j        g d                     dS )zdTest the inner product between a vector and a zero vector with the ('maintain', True) normalization.r5   rE  r6  Nrh  r-   s    r    2test_inner_product_vector_zerovector_maintain_truezQTestSparseTermSimilarityMatrix.test_inner_product_vector_zerovector_maintain_truep  ;     	d1??	2Zl?mmnnnnnr"   c                 r    |                      d| j                            | j        g d                     dS )z_Test the inner product between a vector and a zero vector with the (True, False) normalization.r5   rI  r6  Nrh  r-   s    r    /test_inner_product_vector_zerovector_true_falsezNTestSparseTermSimilarityMatrix.test_inner_product_vector_zerovector_true_falseu  ro  r"   c                 r    |                      d| j                            | j        g d                     dS )zdTest the inner product between a vector and a zero vector with the (True, 'maintain') normalization.r5   rL  r6  Nrh  r-   s    r    2test_inner_product_vector_zerovector_true_maintainzQTestSparseTermSimilarityMatrix.test_inner_product_vector_zerovector_true_maintainz  rv  r"   c                 r    |                      d| j                            | j        g d                     dS )z^Test the inner product between a vector and a zero vector with the (True, True) normalization.r5   rO  r6  Nrh  r-   s    r    .test_inner_product_vector_zerovector_true_truezMTestSparseTermSimilarityMatrix.test_inner_product_vector_zerovector_true_true  s;     	d1??	2Zf?gghhhhhr"   c                     d}|dz  }|dz  }|dz  }|dz  }| j                             | j        | j                  }|                     ||d           dS )zJTest the inner product between two vectors with the default normalization.r5   r-  r8   r7   rm   r   N)r  r1  r  r  r   r.   expected_resultr   s      r    (test_inner_product_vector_vector_defaultzGTestSparseTermSimilarityMatrix.test_inner_product_vector_vector_default  sn     ;&;&;&;&$2249diHHqAAAAAr"   c                    | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }| j                             | j        | j        d          }|                     ||d           dS )zVTest the inner product between two vectors with the (False, 'maintain') normalization.r4  r6  rm   r   Nr  r1  r  r  mathsqrtr  r   r~  s      r    /test_inner_product_vector_vector_false_maintainzNTestSparseTermSimilarityMatrix.test_inner_product_vector_vector_false_maintain       -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]49T%9%G%G	SWS\%]%]^^^$2249diTg2hhqAAAAAr"   c                 B   | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }| j                             | j        | j        d          }|                     ||d           dS )zPTest the inner product between two vectors with the (False, True) normalization.r;  r6  rm   r   Nr  r1  r  r  r  r  r   r~  s      r    +test_inner_product_vector_vector_false_truezJTestSparseTermSimilarityMatrix.test_inner_product_vector_vector_false_true       -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]$2249diTa2bbqAAAAAr"   c                    | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }| j                             | j        | j        d          }|                     ||d           dS )zVTest the inner product between two vectors with the ('maintain', False) normalization.r?  r6  rm   r   Nr  r~  s      r    /test_inner_product_vector_vector_maintain_falsezNTestSparseTermSimilarityMatrix.test_inner_product_vector_vector_maintain_false  r  r"   c                    | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }| j                             | j        | j        d          }|                     ||d           dS )z[Test the inner product between two vectors with the ('maintain', 'maintain') normalization.rB  r6  rm   r   Nr  r~  s      r    2test_inner_product_vector_vector_maintain_maintainzQTestSparseTermSimilarityMatrix.test_inner_product_vector_vector_maintain_maintain  s    -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]49T%9%G%G	SWS\%]%]^^^49T%8%F%FtyRVR[%\%\]]]49T%9%G%G	SWS\%]%]^^^$2249diTl2mmqAAAAAr"   c                 *   | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }|t	          j        | j                             | j        | j                            z  }| j                             | j        | j        d          }|                     ||d           dS )zUTest the inner product between two vectors with the ('maintain', True) normalization.rE  r6  rm   r   Nr  r~  s      r    .test_inner_product_vector_vector_maintain_truezMTestSparseTermSimilarityMatrix.test_inner_product_vector_vector_maintain_true  s     -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]49T%9%G%G	SWS\%]%]^^^49T%8%F%FtyRVR[%\%\]]]$2249diTf2ggqAAAAAr"   c                 B   | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }| j                             | j        | j        d          }|                     ||d           dS )zPTest the inner product between two vectors with the (True, False) normalization.rI  r6  rm   r   Nr  r~  s      r    +test_inner_product_vector_vector_true_falsezJTestSparseTermSimilarityMatrix.test_inner_product_vector_vector_true_false  r  r"   c                 *   | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }| j                             | j        | j        d          }|                     ||d           dS )zUTest the inner product between two vectors with the (True, 'maintain') normalization.rL  r6  rm   r   Nr  r~  s      r    .test_inner_product_vector_vector_true_maintainzMTestSparseTermSimilarityMatrix.test_inner_product_vector_vector_true_maintain  s     -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]49T%8%F%FtyRVR[%\%\]]]49T%9%G%G	SWS\%]%]^^^$2249diTf2ggqAAAAAr"   c                    | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                             | j        | j                            z  }| j                             | j        | j        d          }|                     ||d           dS )zOTest the inner product between two vectors with the (True, True) normalization.rO  r6  rm   r   Nr  r~  s      r    *test_inner_product_vector_vector_true_truezITestSparseTermSimilarityMatrix.test_inner_product_vector_vector_true_true  s     -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]49T%8%F%FtyRVR[%\%\]]]$2249diT`2aaqAAAAAr"   c                 X   d}|dz  }|dz  }|dz  }|dz  }t          j        d|          }| j                            | j        | j        gdz            }|                     t          |t           j                             |                     t          j	        ||                     dS )zTTest the inner product between a vector and a corpus with the default normalization.r5   r-  r8   r7   rE   r@   r@   N
rI   fullr  r1  r  r  rL   rG   ndarrayrM   r~  s      r    (test_inner_product_vector_corpus_defaultzGTestSparseTermSimilarityMatrix.test_inner_product_vector_corpus_default  s     ;&;&;&;&*V_==$2249tykAoNN
65=99:::??@@@@@r"   c                 b   | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }t          j        d|          }| j                             | j        | j        gdz  d          }| 	                    t          |t          j                             | 	                    t          j        ||                     dS )z`Test the inner product between a vector and a corpus with the (False, 'maintain') normalization.r  r@   r4  r6  Nr  r1  r  r  r  r  r  rI   r  rL   rG   r  rM   r~  s      r    /test_inner_product_vector_corpus_false_maintainzNTestSparseTermSimilarityMatrix.test_inner_product_vector_corpus_false_maintain       -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]49T%9%G%G	SWS\%]%]^^^*V_==$2249tykAoZm2nn
65=99:::??@@@@@r"   c                    | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }t          j        d|          }| j                             | j        | j        gdz  d          }|                     t          |t          j
                             |                     t          j        ||                     dS )zZTest the inner product between a vector and a corpus with the (False, True) normalization.r  r@   r;  r6  Nr  r1  r  r  r  r  rI   r  rL   rG   r  rM   r~  s      r    +test_inner_product_vector_corpus_false_truezJTestSparseTermSimilarityMatrix.test_inner_product_vector_corpus_false_true       -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]*V_==$2249tykAoZg2hh
65=99:::??@@@@@r"   c                 b   | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }t          j        d|          }| j                             | j        | j        gdz  d          }| 	                    t          |t          j                             | 	                    t          j        ||                     dS )z`Test the inner product between a vector and a corpus with the ('maintain', False) normalization.r  r@   r?  r6  Nr  r~  s      r    /test_inner_product_vector_corpus_maintain_falsezNTestSparseTermSimilarityMatrix.test_inner_product_vector_corpus_maintain_false  r  r"   c                 J   | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }t          j        d|          }| j                             | j        | j        gdz  d          }| 	                    t          |t          j                             | 	                    t          j        ||                     dS )zeTest the inner product between a vector and a corpus with the ('maintain', 'maintain') normalization.r  r@   rB  r6  Nr  r~  s      r    2test_inner_product_vector_corpus_maintain_maintainzQTestSparseTermSimilarityMatrix.test_inner_product_vector_corpus_maintain_maintain  sO    -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]49T%9%G%G	SWS\%]%]^^^49T%8%F%FtyRVR[%\%\]]]49T%9%G%G	SWS\%]%]^^^*V_==$2249tykAoZr2ss
65=99:::??@@@@@r"   c                    | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }|t	          j        | j                             | j        | j                            z  }t          j        d|          }| j                             | j        | j        gdz  d          }| 	                    t          |t          j                             | 	                    t          j        ||                     dS )z_Test the inner product between a vector and a corpus with the ('maintain', True) normalization.r  r@   rE  r6  Nr  r~  s      r    .test_inner_product_vector_corpus_maintain_truezMTestSparseTermSimilarityMatrix.test_inner_product_vector_corpus_maintain_true  s"    -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]49T%9%G%G	SWS\%]%]^^^49T%8%F%FtyRVR[%\%\]]]*V_==$2249tykAoZl2mm
65=99:::??@@@@@r"   c                    | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }t          j        d|          }| j                             | j        | j        gdz  d          }|                     t          |t          j
                             |                     t          j        ||                     dS )zZTest the inner product between a vector and a corpus with the (True, False) normalization.r  r@   rI  r6  Nr  r~  s      r    +test_inner_product_vector_corpus_true_falsezJTestSparseTermSimilarityMatrix.test_inner_product_vector_corpus_true_false  r  r"   c                    | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }t          j        d|          }| j                             | j        | j        gdz  d          }| 	                    t          |t          j                             | 	                    t          j        ||                     dS )z_Test the inner product between a vector and a corpus with the (True, 'maintain') normalization.r  r@   rL  r6  Nr  r~  s      r    .test_inner_product_vector_corpus_true_maintainzMTestSparseTermSimilarityMatrix.test_inner_product_vector_corpus_true_maintain)  s"    -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]49T%8%F%FtyRVR[%\%\]]]49T%9%G%G	SWS\%]%]^^^*V_==$2249tykAoZl2mm
65=99:::??@@@@@r"   c                 b   | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                             | j        | j                            z  }t          j        d|          }| j                             | j        | j        gdz  d          }|                     t          |t          j
                             |                     t          j        ||                     dS )zYTest the inner product between a vector and a corpus with the (True, True) normalization.r  r@   rO  r6  Nr  r~  s      r    *test_inner_product_vector_corpus_true_truezITestSparseTermSimilarityMatrix.test_inner_product_vector_corpus_true_true5  s     -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]49T%8%F%FtyRVR[%\%\]]]*V_==$2249tykAoZf2gg
65=99:::??@@@@@r"   c                 X   d}|dz  }|dz  }|dz  }|dz  }t          j        d|          }| j                            | j        gdz  | j                  }|                     t          |t           j                             |                     t          j	        ||                     dS )zTTest the inner product between a corpus and a vector with the default normalization.r5   r-  r8   r7   rB   rE   rB   Nr  r~  s      r    (test_inner_product_corpus_vector_defaultzGTestSparseTermSimilarityMatrix.test_inner_product_corpus_vector_default@  s     ;&;&;&;&*V_==$22DI;?DINN
65=99:::??@@@@@r"   c                 b   | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }t          j        d|          }| j                             | j        gdz  | j        d          }| 	                    t          |t          j                             | 	                    t          j        ||                     dS )z`Test the inner product between a corpus and a vector with the (False, 'maintain') normalization.r  rB   r4  r6  Nr  r~  s      r    /test_inner_product_corpus_vector_false_maintainzNTestSparseTermSimilarityMatrix.test_inner_product_corpus_vector_false_maintainM       -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]49T%9%G%G	SWS\%]%]^^^*V_==$22DI;?DIZm2nn
65=99:::??@@@@@r"   c                    | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }t          j        d|          }| j                             | j        gdz  | j        d          }|                     t          |t          j
                             |                     t          j        ||                     dS )zZTest the inner product between a corpus and a vector with the (False, True) normalization.r  rB   r;  r6  Nr  r~  s      r    +test_inner_product_corpus_vector_false_truezJTestSparseTermSimilarityMatrix.test_inner_product_corpus_vector_false_trueX       -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]*V_==$22DI;?DIZg2hh
65=99:::??@@@@@r"   c                 b   | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }t          j        d|          }| j                             | j        gdz  | j        d          }| 	                    t          |t          j                             | 	                    t          j        ||                     dS )z`Test the inner product between a corpus and a vector with the ('maintain', False) normalization.r  rB   r?  r6  Nr  r~  s      r    /test_inner_product_corpus_vector_maintain_falsezNTestSparseTermSimilarityMatrix.test_inner_product_corpus_vector_maintain_falseb  r  r"   c                 J   | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }t          j        d|          }| j                             | j        gdz  | j        d          }| 	                    t          |t          j                             | 	                    t          j        ||                     dS )zeTest the inner product between a corpus and a vector with the ('maintain', 'maintain') normalization.r  rB   rB  r6  Nr  r~  s      r    2test_inner_product_corpus_vector_maintain_maintainzQTestSparseTermSimilarityMatrix.test_inner_product_corpus_vector_maintain_maintainm  sO    -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]49T%9%G%G	SWS\%]%]^^^49T%8%F%FtyRVR[%\%\]]]49T%9%G%G	SWS\%]%]^^^*V_==$22DI;?DIZr2ss
65=99:::??@@@@@r"   c                    | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }|t	          j        | j                             | j        | j                            z  }t          j        d|          }| j                             | j        gdz  | j        d          }| 	                    t          |t          j                             | 	                    t          j        ||                     dS )z_Test the inner product between a corpus and a vector with the ('maintain', True) normalization.r  rB   rE  r6  Nr  r~  s      r    .test_inner_product_corpus_vector_maintain_truezMTestSparseTermSimilarityMatrix.test_inner_product_corpus_vector_maintain_truez  s"    -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]49T%9%G%G	SWS\%]%]^^^49T%8%F%FtyRVR[%\%\]]]*V_==$22DI;?DIZl2mm
65=99:::??@@@@@r"   c                    | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }t          j        d|          }| j                             | j        gdz  | j        d          }|                     t          |t          j
                             |                     t          j        ||                     dS )zZTest the inner product between a corpus and a vector with the (True, False) normalization.r  rB   rI  r6  Nr  r~  s      r    +test_inner_product_corpus_vector_true_falsezJTestSparseTermSimilarityMatrix.test_inner_product_corpus_vector_true_false  r  r"   c                    | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }t          j        d|          }| j                             | j        gdz  | j        d          }| 	                    t          |t          j                             | 	                    t          j        ||                     dS )z_Test the inner product between a corpus and a vector with the (True, 'maintain') normalization.r  rB   rL  r6  Nr  r~  s      r    .test_inner_product_corpus_vector_true_maintainzMTestSparseTermSimilarityMatrix.test_inner_product_corpus_vector_true_maintain  s"    -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]49T%8%F%FtyRVR[%\%\]]]49T%9%G%G	SWS\%]%]^^^*V_==$22DI;?DIZl2mm
65=99:::??@@@@@r"   c                 b   | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                             | j        | j                            z  }t          j        d|          }| j                             | j        gdz  | j        d          }|                     t          |t          j
                             |                     t          j        ||                     dS )zYTest the inner product between a corpus and a vector with the (True, True) normalization.r  rB   rO  r6  Nr  r~  s      r    *test_inner_product_corpus_vector_true_truezITestSparseTermSimilarityMatrix.test_inner_product_corpus_vector_true_true  s     -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]49T%8%F%FtyRVR[%\%\]]]*V_==$22DI;?DIZf2gg
65=99:::??@@@@@r"   c                    d}|dz  }|dz  }|dz  }|dz  }t          j        d|          }| j                            | j        gdz  | j        gdz            }|                     t          |t          j	        j
                             |                     t          j        ||                                                     dS )	zJTest the inner product between two corpora with the default normalization.r5   r-  r8   r7   rB   r@   rB   r@   N)rI   r  r  r1  r  r  rL   rG   rx   ry   rz   rM   r   r~  s      r    (test_inner_product_corpus_corpus_defaultzGTestSparseTermSimilarityMatrix.test_inner_product_corpus_corpus_default  s     ;&;&;&;&*V_==$22DI;?TYKRSOTT
65<+BCCDDD8H8HIIJJJJJr"   c                    | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }t          j        d|          }| j                             | j        gdz  | j        gdz  d          }| 	                    t          |t          j        j                             | 	                    t          j        ||                                                     dS )zHTest the inner product between two corpora with the (False, 'maintain').r  rB   r@   r4  r6  Nr  r1  r  r  r  r  r  rI   r  rL   rG   rx   ry   rz   rM   r   r~  s      r    /test_inner_product_corpus_corpus_false_maintainzNTestSparseTermSimilarityMatrix.test_inner_product_corpus_corpus_false_maintain  	    -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]49T%9%G%G	SWS\%]%]^^^*V_==$22DI;?TYKRSO`s2tt
65<+BCCDDD8H8HIIJJJJJr"   c                 $   | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }t          j        d|          }| j                             | j        gdz  | j        gdz  d          }|                     t          |t          j        j                             |                     t          j        ||                                                     dS )zBTest the inner product between two corpora with the (False, True).r  rB   r@   r;  r6  Nr  r1  r  r  r  r  rI   r  rL   rG   rx   ry   rz   rM   r   r~  s      r    +test_inner_product_corpus_corpus_false_truezJTestSparseTermSimilarityMatrix.test_inner_product_corpus_corpus_false_true       -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]*V_==$22DI;?TYKRSO`m2nn
65<+BCCDDD8H8HIIJJJJJr"   c                    | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }t          j        d|          }| j                             | j        gdz  | j        gdz  d          }| 	                    t          |t          j        j                             | 	                    t          j        ||                                                     dS )zHTest the inner product between two corpora with the ('maintain', False).r  rB   r@   r?  r6  Nr  r~  s      r    /test_inner_product_corpus_corpus_maintain_falsezNTestSparseTermSimilarityMatrix.test_inner_product_corpus_corpus_maintain_false  r  r"   c                    | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }t          j        d|          }| j                             | j        gdz  | j        gdz  d          }| 	                    t          |t          j        j                             | 	                    t          j        ||                                                     dS )zMTest the inner product between two corpora with the ('maintain', 'maintain').r  rB   r@   rB  r6  Nr  r~  s      r    2test_inner_product_corpus_corpus_maintain_maintainzQTestSparseTermSimilarityMatrix.test_inner_product_corpus_corpus_maintain_maintain  si    -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]49T%9%G%G	SWS\%]%]^^^49T%8%F%FtyRVR[%\%\]]]49T%9%G%G	SWS\%]%]^^^*V_==$22DI;?TYKRSO/ 3 1 1
65<+BCCDDD8H8HIIJJJJJr"   c                    | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }|t	          j        | j                             | j        | j                            z  }t          j        d|          }| j                             | j        gdz  | j        gdz  d          }| 	                    t          |t          j        j                             | 	                    t          j        ||                                                     dS )zGTest the inner product between two corpora with the ('maintain', True).r  rB   r@   rE  r6  Nr  r~  s      r    .test_inner_product_corpus_corpus_maintain_truezMTestSparseTermSimilarityMatrix.test_inner_product_corpus_corpus_maintain_true  s6    -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]49T%9%G%G	SWS\%]%]^^^49T%8%F%FtyRVR[%\%\]]]*V_==$22DI;?TYKRSO`r2ss
65<+BCCDDD8H8HIIJJJJJr"   c                 $   | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }t          j        d|          }| j                             | j        gdz  | j        gdz  d          }|                     t          |t          j        j                             |                     t          j        ||                                                     dS )zBTest the inner product between two corpora with the (True, False).r  rB   r@   rI  r6  Nr  r~  s      r    +test_inner_product_corpus_corpus_true_falsezJTestSparseTermSimilarityMatrix.test_inner_product_corpus_corpus_true_false  r  r"   c                    | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                            | j        | j                            z  }t          j        d|          }| j                             | j        gdz  | j        gdz  d          }| 	                    t          |t          j        j                             | 	                    t          j        ||                                                     dS )zGTest the inner product between two corpora with the (True, 'maintain').r  rB   r@   rL  r6  Nr  r~  s      r    .test_inner_product_corpus_corpus_true_maintainzMTestSparseTermSimilarityMatrix.test_inner_product_corpus_corpus_true_maintain  s6    -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]49T%8%F%FtyRVR[%\%\]]]49T%9%G%G	SWS\%]%]^^^*V_==$22DI;?TYKRSO`r2ss
65<+BCCDDD8H8HIIJJJJJr"   c                    | j                             | j        | j                  }|t	          j        | j                             | j        | j                            z  }|t	          j        | j                             | j        | j                            z  }t          j        d|          }| j                             | j        gdz  | j        gdz  d          }|                     t          |t          j        j                             |                     t          j        ||                                                     dS )zATest the inner product between two corpora with the (True, True).r  rB   r@   rO  r6  Nr  r~  s      r    *test_inner_product_corpus_corpus_true_truezITestSparseTermSimilarityMatrix.test_inner_product_corpus_corpus_true_true  s	    -;;DItyQQ49T%8%F%FtyRVR[%\%\]]]49T%8%F%FtyRVR[%\%\]]]*V_==$22DI;?TYKRSO`l2mm
65<+BCCDDD8H8HIIJJJJJr"   N)Mr   r   r   r   r  r  r  r  r  r  r$  r)  r+  r.  r2  r8  r<  r@  rC  rF  rJ  rM  rP  rS  rU  rX  r[  r]  r_  rb  rd  rf  ri  rk  rn  rq  rs  ru  rx  rz  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r"   r    r  r  m  s;       I I I7 7 7E E E
V V V
@ @ @6 6 6I I I> > >2> > >.> > >,H H H"I I I
i i i
c c c
i i i
n n n
h h h
c c c
h h h
b b b
P P P
p p p
j j j
p p p
u u u
o o o
j j j
o o o
i i i
P P P
p p p
j j j
p p p
u u u
o o o
j j j
o o o
i i i
	B 	B 	BB B BB B BB B B	B 	B 	BB B BB B BB B BB B BA A A	A 	A 	AA A A	A 	A 	AA A A
A 
A 
AA A A
A 
A 
A	A 	A 	AA A A	A 	A 	AA A A	A 	A 	AA A A
A 
A 
AA A A
A 
A 
A	A 	A 	AK K K	K 	K 	KK K K	K 	K 	KK K K
K 
K 
KK K K
K 
K 
K	K 	K 	K 	K 	Kr"   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestLevenshteinSimilarityIndexc                     g dg dg| _         t          | j                   | _        t          d | j                                        D                       }t          | j        |          | _        d S )Nr  r  c              3   4   K   | ]}t          |          V  d S r   )r+   )r   r  s     r    	<genexpr>z7TestLevenshteinSimilarityIndex.setUp.<locals>.<genexpr>  s(      JJ3t99JJJJJJr"   )max_distance)r  r   r   r  valuesr   rP   )r.   r  s     r    r   z$TestLevenshteinSimilarityIndex.setUp  sp    @@@BkBkBkl$T^44JJ1G1G1I1IJJJJJ/l[[[


r"   c                    t          | j                            dd                    }|                     dt	          |                     t          | j                            dd                    }|                     dt	          |                     t          | j                            dd                    }|                     dt	          |                     t          | j                            dt	          | j                                      }|                     t	          | j                  dz
  t	          |                     |                     d|           dS )r  r  r   rn   rE   r   N)r  rP   rh  r   r+   r   assertNotIn)r.   r  s     r    test_most_similar_topnz5TestLevenshteinSimilarityIndex.test_most_similar_topn  s/   tz..z.BBCCCLL)))tz..z.BBCCCLL)))tz..z.BBCCCLL)))tz..zDO@T@T.UUVVT_--13w<<@@@W-----r"   c                     | j                             dd          }t          | \  }}d}|                     ||           d S )Nr  r   rn   )r  r  r  r  )rP   rh  zipr   )r.   r  r  r  expected_termss        r    test_most_similar_result_orderz=TestLevenshteinSimilarityIndex.test_most_similar_result_order&  sJ    *))*1)===qP/////r"   c                    t          | j        d          }t          j        d |                    dd          D                       }t          | j        d          }t          j        d |                    dd          D                       }|                     t          j        d|z  |                     d S )	Nr8   )alphac                     g | ]\  }}|S r   r   r  s      r    r!   zJTestLevenshteinSimilarityIndex.test_most_similar_alpha.<locals>.<listcomp>.      )u)u)u9Iz*)u)u)ur"   r  r,  rn   r-  c                     g | ]\  }}|S r   r   r  s      r    r!   zJTestLevenshteinSimilarityIndex.test_most_similar_alpha.<locals>.<listcomp>0      *v*v*v:J$
:*v*v*vr"   r   r   rI   rJ   rh  rL   rM   r.   rP   first_similaritiessecond_similaritiess       r    test_most_similar_alphaz6TestLevenshteinSimilarityIndex.test_most_similar_alpha,  s    *4?#FFF"[)u)uUM_M_`jqsM_MtMt)u)u)uvv*4?#FFF#k*v*veN`N`akrtN`NuNu*v*v*vwws-?'?ATUUVVVVVr"   c                    t          | j        dd          }t          j        d |                    dd          D                       }t          | j        dd          }t          j        d |                    dd          D                       }|                     t          j        |dz  |                     d S )	Nr8   )r  betac                     g | ]\  }}|S r   r   r  s      r    r!   zITestLevenshteinSimilarityIndex.test_most_similar_beta.<locals>.<listcomp>5  r  r"   r  r,  rn   r-  c                     g | ]\  }}|S r   r   r  s      r    r!   zITestLevenshteinSimilarityIndex.test_most_similar_beta.<locals>.<listcomp>7  r  r"   r  r  s       r    test_most_similar_betaz5TestLevenshteinSimilarityIndex.test_most_similar_beta3  s    *4?#CPPP"[)u)uUM_M_`jqsM_MtMt)u)u)uvv*4?#CPPP#k*v*veN`N`akrtN`NuNu*v*v*vww'9S'@BUVVWWWWWr"   N)r   r   r   r   r  r  r  r  r   r"   r    r  r    sj        \ \ \. . .0 0 0W W WX X X X Xr"   r  c                       e Zd Zd Zd ZdS ) TestWordEmbeddingSimilarityIndexc                 l    t          j        t          d          dt          j                  | _        d S )Nzeuclidean_vectors.binT)binarydatatype)r   rY  r   rI   r  r  r-   s    r    r   z&TestWordEmbeddingSimilarityIndex.setUp<  s4    #8,--dU]T T Tr"   c                    t          | j                  }|                     dt          t	          |                    dd                                         |                     dt          t	          |                    dd                                         t          | j                  }t	          |                    dd                    }|                     dt          |                     |                     dt          |                     t	          |                    dd                    }|                     dt          |                     |                     dt          |                     t          | j                  }d |                    dt          | j                            D             }|                     d|v            t          | j        d	          }t	          |                    dd                    }|                     dt          |                     |                     dt          |                     t          | j        d
	          }t	          |                    dd                    }|                     dt          |                     t          | j        d
          }t          j
        d |                    dd          D                       }t          | j        d          }t          j
        d |                    dd          D                       }|                     t          j        |dz  |                     dS )r  r   r  r,  rn   zout-of-dictionary term   c                     g | ]\  }}|S r   r   r  s      r    r!   zFTestWordEmbeddingSimilarityIndex.test_most_similar.<locals>.<listcomp>S  s    eee*$
eeer"   r5   )	thresholdr8   )exponentc                     g | ]\  }}|S r   r   r  s      r    r!   zFTestWordEmbeddingSimilarityIndex.test_most_similar.<locals>.<listcomp>b  r  r"   r-  c                     g | ]\  }}|S r   r   r  s      r    r!   zFTestWordEmbeddingSimilarityIndex.test_most_similar.<locals>.<listcomp>d  r  r"   N)r   r  r  r+   r  rh  r   r  r   rI   rJ   rL   rM   )r.   rP   r  r  r  r  s         r    r  z2TestWordEmbeddingSimilarityIndex.test_most_similar@  s    -T\::3tE$6$6z$6$K$KLLMMNNNCU%7%78QXZ%7%[%[ \ \]]^^^ -T\::u))*2)>>??3w<<(((CLL111u))*2)>>??CLL)))CLL111 -T\::eee.@.@RUVZVbRcRc.@.d.deeeu,--- -T\SIIIu))*2)>>??3w<<(((CLL111,T\SIIIu))*2)>>??CLL))) -T\CHHH"[)u)uUM_M_`jqsM_MtMt)u)u)uvv,T\CHHH#k*v*veN`N`akrtN`NuNu*v*v*vww'93'>@STTUUUUUr"   Nr  r   r"   r    r  r  ;  s:        T T T%V %V %V %V %Vr"   r  c                   &    e Zd Zd Zd Zd Zd ZdS )
TestFastSSc                 :    d}t          dd          }||k    sJ dS )zCTest editdist returns the expected result with two Latin-1 strings.r@   ZizkasiskaNr   r.   rT   actuals      r    &test_editdist_same_unicode_kind_latin1z1TestFastSS.test_editdist_same_unicode_kind_latin1i  s-    '7++6!!!!!!r"   c                 :    d}t          dd          }||k    sJ dS )zATest editdist returns the expected result with two UCS-2 strings.r@      Žižkau   šiškaNr   r  s      r    $test_editdist_same_unicode_kind_ucs2z/TestFastSS.test_editdist_same_unicode_kind_ucs2o  s-    )Y//6!!!!!!r"   c                 :    d}t          dd          }||k    sJ dS )zATest editdist returns the expected result with two UCS-4 strings.r@   u   Žižka 😀u   šiška 😀Nr   r  s      r    $test_editdist_same_unicode_kind_ucs4z/TestFastSS.test_editdist_same_unicode_kind_ucs4u  s-    ..996!!!!!!r"   c                 :    d}t          dd          }||k    sJ dS )zRTest editdist returns the expected result with strings of different Unicode kinds.r@   r  r  Nr   r  s      r    %test_editdist_different_unicode_kindsz0TestFastSS.test_editdist_different_unicode_kinds{  s-    )W--6!!!!!!r"   N)r   r   r   r  r  r  r  r   r"   r    r  r  h  sP        " " "" " "" " "" " " " "r"   r  __main__z)%(asctime)s : %(levelname)s : %(message)s)r   level)Br   loggingr   r  r  rI   rx   gensimr   gensim.corporar   gensim.modelsr   r   r   r   r	   r
   r   r   gensim.test.utilsr   r   r   r   r   r,   r   r*   gensim.similaritiesr   r   r   r   gensim.similarities.docsimr   gensim.similarities.fastssr   otr   r_   r$  r  r   r  skipTestCaser$   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r   basicConfigDEBUGmainr   r"   r    <module>r&     st       				         % % % % % % " " " " " " ! ! ! ! ! ! & & & & & & $ $ $ $ $ $ ) ) ) ) ) ) ) ) , , , , , , , ,              ; : : : : : < < < < < < : : : : : : : : : : : : 0 0 0 0 0 0 / / / / / /GGZ    GGG RQ		%@P@PQQQ	 -..xC xC xC xC xC* xC xC /.xCv1 1 1 1 1- 1 1 1
K$ K$ K$ K$ K$* K$ K$ K$\Q8 Q8 Q8 Q8 Q81 Q8 Q8 Q8h_ _ _ _ _!3 _ _ _B)6 )6 )6 )6 )6' )6 )6 )6Xc< c< c< c< c<x0 c< c< c<L6F 6F 6F 6F 6Fh/ 6F 6F 6FrXL XL XL XL XL 1 XL XL XLv4V 4V 4V 4V 4Vx0 4V 4V 4Vn8 8 8 8 8X%6 8 8 8:`
K `
K `
K `
K `
KX%6 `
K `
K `
KF(X (X (X (X (XX%6 (X (X (XV*V *V *V *V *Vx'8 *V *V *VZ" " " " "" " " "4 z GJRYR_````HMOOOOO s   B 	BB