
    c!                     b   d Z ddlZddlZddlmZ ddlmZ ddlZddl	Z	ddl
mZ ddlmZ ddlmZmZmZ  G d d	ej                  Z G d
 dej                  Z G d dej                  Z G d dej                  Zedk    r( ej        dej                    ej                     dS dS )zC
Automated test to check similarity functions and isbow function.

    N)matutils)
csr_matrix)MmCorpus)ldamodel)datapathcommon_dictionarycommon_corpusc                       e Zd Zd Zd ZdS )	TestIsBowc                 ^    t          j        d           }d}|                     ||           d S )NF)r   isbowassertEqual)selfresultexpecteds      Clib/python3.11/site-packages/gensim/test/test_similarity_metrics.py	test_NonezTestIsBow.test_None   s2    %%6*****    c                    dg}t          j        |          }d}|                     ||           g d}t          j        |          }d}|                     ||           g }t          j        |          }d}|                     ||           g dg}t          j        |          }d}|                     ||           dg}t          j        |          }d}|                     ||           t          ddgd	d
gddgg          }t          j        |          }d}|                     ||           t	          j        ddgd	dgddgg          }t          j        |          }d}|                     ||           d S )N)r   皙?T))r   g      @)   g       @)   g      @)   g       @)r   r   )r   r      r      r   r   r   )   r   F)r   r      r   r   r   333333?r   皙?皙?)r   r   r   r   nparray)r   potentialbowr   r   s       r   test_bowzTestIsBow.test_bow   s    !z--6*** <;;--6*** --6*** IHHI--6*** "{--6*** "As8aX3x"@AA--6*** x!SAs8aX >??--6*****r   N)__name__
__module____qualname__r   r(    r   r   r   r      s2        + + +++ ++ ++ ++ ++r   r   c                        e Zd Zd Zd Zd ZdS )TestHellingerc                     t          t          d                    | _        t          j        | _        |                     t          t          dd          | _        d S Nztestcorpus.mmr   d   id2word
num_topicspasses	r   r   corpusr   LdaModelclass_r	   r   modelr   s    r   setUpzTestHellinger.setUpN   E    x8899'[[8IVW`c[dd


r   c                 j   g }g }t          j        ||          }d}|                     ||           t          j        g           }g }t          j        ||          }d}|                     ||           t          g           }g }t          j        ||          }d}|                     ||           d S Ng        )r   	hellingerr   r%   r&   r   r   vec_1vec_2r   r   s        r   test_inputszTestHellinger.test_inputsS   s    #E5116*** #E5116*** 2#E5116*****r   c                    g d}g d}t          j        ||          }d}|                     ||           g d}g d}t          j        ||          }t          j        ||          }d}|                     ||           |                     ||           t          j        ddgdd	gd
dgg          }t          dd	gddgd
dgg          }t          j        ||          }d}|                     ||           t          j        g d          }g d}t          j        ||          }d}|                     ||           t          j                            d           |                     | j	        t          d
d          }|ddg         }|ddg         }t          j        ||          }d}|                     ||           d S )N)r   r#   )r   r   r   r#   )r   r#   r   r#   )r    r$   rH   r   皙?rG   gd?)rH   rJ   rG   )   r#   )
   rK   )	   r#   gE%k?r   r"   r   r   r   r$   gh&!?g333333?r#   r#   r$   r$   r$   r#   g      ?g<?r1   r2   r   r   r   r   r   r   r   r   gHoPu>)r   r@   assertAlmostEqualr%   r&   r   randomseedr9   r7   r   )	r   rB   rC   r   r   result_symmetricr:   lda_vec1lda_vec2s	            r   test_distributionsz TestHellinger.test_distributionsi   s   LLL...#E511!x000 MLLMMM#E511#-eU;;!x000x)9::: 1c(QHq#h788QHq#hC9::#E511!x000 ---..$$$#E511!x000 		qDK1BqY\]]&&)*&&)*#Hh77)x00000r   Nr)   r*   r+   r<   rD   r[   r,   r   r   r.   r.   M   sD        e e e
+ + +,&1 &1 &1 &1 &1r   r.   c                        e Zd Zd Zd Zd ZdS )TestKLc                     t          t          d                    | _        t          j        | _        |                     t          t          dd          | _        d S r0   r6   r;   s    r   r<   zTestKL.setUp   r=   r   c                 j   g }g }t          j        ||          }d}|                     ||           t          j        g           }g }t          j        ||          }d}|                     ||           t          g           }g }t          j        ||          }d}|                     ||           d S r?   )r   kullback_leiblerr   r%   r&   r   rA   s        r   rD   zTestKL.test_inputs   s     *5%886*** *5%886*** 2*5%886*****r   c                 f   g d}g d}t          j        ||d          }d}|                     ||d           g d}g d}t          j        ||d          }|                     t	          j        |                     t          j        ddgd	d
gddgg          }t          dd
gd	dgddgg          }t          j        ||d          }d}|                     ||d           t          j        g d          }g d}t          j        ||          }d}|                     ||d           t          j	        
                    d	           |                     | j        t          dd          }|ddg         }|ddg         }t          j        ||          }d}|                     ||d           d S )NrF   rI   rL   g)?r   )placesr   r"   r   r   r   r$   r   gS5?rO   rP   gy?r1   r2   rQ   rR   rS   rT   g)(֒=)r   ra   rU   
assertTruemathisinfr%   r&   r   rV   rW   r9   r7   r   )r   rB   rC   r   r   r:   rY   rZ   s           r   r[   zTestKL.test_distributions   s   LLL...*5%;;x::: MLL...*5%;;
6**+++ 1c(QHq#h788QHq#hC9::*5%;;x::: ---..$$$*5%88 x::: 		qDK1BqY\]]&&)*&&)**8X>>x:::::r   Nr\   r,   r   r   r^   r^      sD        e e e
+ + +.#; #; #; #; #;r   r^   c                       e Zd Zd Zd ZdS )TestJaccardc                 \    g }g }|                      t          t          j        ||           d S )N)assertRaisesZeroDivisionErrorr   jaccard)r   rB   rC   s      r   rD   zTestJaccard.test_inputs   s0    +X-=ueLLLLLr   c                    g d}g d}t          j        ||          }d}|                     ||           t          j        ddgddgddgg          }t          ddgddgddgg          }t          j        ||          }d	}|                     ||           t          j        g d
          }g d}t          j        ||          }d}|                     ||           d S )N)r   )r   r   r   r   r   )r    r   )r   )r   rL   r   gffffff?r   r   r   r   r   g48?)r!   r   r   r   )r   r   r   r   gaUUUU?)r   rl   rU   r%   r&   r   rA   s        r   r[   zTestJaccard.test_distributions   s   @@@(((!%//x000 1a&1a&1a&122QFQFQF344!%//%x000 &&!%//%x00000r   N)r)   r*   r+   rD   r[   r,   r   r   rh   rh      s5        M M M1 1 1 1 1r   rh   __main__z)%(asctime)s : %(levelname)s : %(message)s)formatlevel)__doc__loggingunittestgensimr   scipy.sparser   numpyr%   re   gensim.corpora.mmcorpusr   gensim.modelsr   gensim.test.utilsr   r   r	   TestCaser   r.   r^   rh   r)   basicConfigDEBUGmainr,   r   r   <module>r~      s            # # # # # #      , , , , , , " " " " " " H H H H H H H H H H2+ 2+ 2+ 2+ 2+! 2+ 2+ 2+jB1 B1 B1 B1 B1H% B1 B1 B1J@; @; @; @; @;X @; @; @;F1 1 1 1 1(# 1 1 1< z GJRYR_````HMOOOOO r   