
    c                         d Z ddlZddlZddlZddlZddlZddlmZ ddl	m
Z
 ddlmZ ddlmZmZmZmZ  G d dej        ej                  Zed	k    r( ej        d
ej                    ej                     dS dS )zN
Automated tests for checking transformation algorithms (the models package).
    N)matutils)nmf)basetmtests)datapathget_tmpfilecommon_corpuscommon_dictionaryc                   \    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S )TestNmfc                 X    t          j        t          t          dddd          | _        d S )N      d   *   id2word	chunksize
num_topicspassesrandom_state)r   Nmfr   r	   model)selfs    4lib/python3.11/site-packages/gensim/test/test_nmf.pysetUpzTestNmf.setUp   s0    W%
 
 



    c                 T   t          j        t          t          dz            t          dddd          }t          j        t          dz  t          dddd          }|                     t          j        |                                |                                                     d S )Nr   r   r   r   r   )	r   r   iterr   r	   
assertTruenpallclose
get_topicsr   model_1model_2s      r   test_generatorzTestNmf.test_generator#   s    '$%%%
 
 
 'C%
 
 
 	G$6$6$8$8':L:L:N:NOOPPPPPr   c                    t          j        | j                  }|                    t                     |                     t          j        | j                                        |                                                     d S N)	copydeepcopyr   updater   assertFalser    r!   r"   )r   r   s     r   test_updatezTestNmf.test_update8   se    dj))]###TZ%:%:%<%<e>N>N>P>PQQRRRRRr   c                    t          j        t          t          dddd          }t          j        t          t          dddd          }|                     t          j        | j                                        |                                                     | 	                    t          j        | j                                        |                                                     d S )Nr   r   r   r   r   r   )
r   r   r   r	   r   r    r!   r   r"   r,   r#   s      r   test_random_statezTestNmf.test_random_state>   s    '%
 
 
 '%
 
 
 	DJ$9$9$;$;W=O=O=Q=QRRSSSTZ%:%:%<%<g>P>P>R>RSSTTTTTr   c                    t          t                    d         }| j        |         }t          j        |d          }ddg}|                     t          j        t          |          t          |          d                     d}| j        	                    |          }t          j        |d          }dd	gg}|                     t          j        t          |          t          |          d                     d S )
Nr   r   g3?g?gMbP?)atol   g|:e$?g~m'?)
listr   r   r   sparse2fullr   r    r!   sortedget_term_topics)r   doctransformedvecexpectedwords         r   test_transformzTestNmf.test_transformS   s    =!!!$jo";22 
+ 	F3KK1A1AMMMNNN j0066";22
+, 	F3KK1A1AMMMNNNNNr   c                    | j                             t                    }|D ]\  }}|                     t	          |t
                               |                     t	          |t                               |D ]Z\  }}|                     t	          |t                               |                     t          j	        |t                               [d S r(   )
r   
top_topicsr   r   
isinstancer3   floatstrr    
issubdtype)r   r>   topicscorevks         r   test_top_topicszTestNmf.test_top_topicsj   s    Z**=99
& 	9 	9LE5OOJud33444OOJue44555 9 91
1c 2 2333a 7 788889		9 	9r   c                     | j                             d          }|D ]_\  }}|                     t          |t          j                             |                     t          j        |t                               `d S )Nr   )	r   get_topic_termsr   r?   numbersIntegralr    rB   r@   )r   topic_termsrF   rE   s       r   test_get_topic_termszTestNmf.test_get_topic_termsu   st    j0033 	5 	5DAqOOJq'*:;;<<<OOBM!U334444	5 	5r   c                    | j                             t                    }|D ]}|                     t	          |t
                               |D ]_\  }}|                     t	          |t          j                             |                     t          j	        |t                               `| j                             t                    }t          t          |                     |D ]}|                     t	          |t
                               |D ]_\  }}|                     t	          |t          j                             |                     t          j	        |t                               `d S r(   )r   get_document_topicsr   r   r?   r3   rJ   rK   r    rB   r@   print)r   
doc_topicsrC   rF   rE   
all_topicss         r   test_get_document_topicsz TestNmf.test_get_document_topics|   sT   Z33MBB
 	9 	9EOOJud33444 9 91
1g.> ? ?@@@a 7 788889
 Z33MBB
d: 	9 	9EOOJud33444 9 91
1g.> ? ?@@@a 7 788889	9 	9r   c                    | j                             d          }|D ]Z\  }}|                     t          |t                               |                     t          j        |t                               [| j                             t          | j         j	        d                             }|D ]Z\  }}|                     t          |t                               |                     t          j        |t                               [d S )Nr   )
r   r6   r   r?   intr    rB   r@   rA   r   )r   resulttopic_noprobabilitys       r   test_term_topicszTestNmf.test_term_topics   s    ++A..%+ 	? 	?!HkOOJx55666OOBM+u==>>>> ++C
0B10E,F,FGG%+ 	? 	?!HkOOJx55666OOBM+u==>>>>	? 	?r   c                    t          d          }| j                            |           t          j                            |          }g }|                     t          j        | j        |         ||                              d S )Ngensim_models_nmf.tst)	r   r   saver   r   loadr   r    r!   r   fnamemodel2tstvecs       r   test_persistencezTestNmf.test_persistence   sk    344
e$$DJv$6vGGHHHHHr   c                 ^   t          d          }| j                            |d           t          j                            |d          }|                     | j        j        |j                   g }|                     t          j
        | j        |         ||                              d S )Nr[   r   	sep_limitrmmap)r   r   r\   r   r   r]   assertEqualr   r   r    r!   r^   s       r   test_large_mmapzTestNmf.test_large_mmap   s    344 	
+++ e#...0ABBBDJv$6vGGHHHHHr   c                     t          d          }| j                            |d           |                     t          t
          j        j        |d           d S )Nzgensim_models_nmf.tst.gzr   rd   rf   rg   )r   r   r\   assertRaisesIOErrorr   r   r]   )r   r_   s     r   test_large_mmap_compressedz"TestNmf.test_large_mmap_compressed   sS    677 	
+++ 	'37<SAAAAAr   c                     t          d          }g d}dg}t          j                            |          }||         }|                     t          j        ||                     d S )N	nmf_model))r   r   )r   r   )r   r   )r   g      ?)r   r   r   r]   r   r    r!   )r   	nmf_fnametest_docexpected_topicsr   topicss         r   !test_dtype_backward_compatibilityz)TestNmf.test_dtype_backward_compatibility   se    [))	+++#* Y'' xOV<<=====r   N)__name__
__module____qualname__r   r&   r-   r/   r<   rG   rM   rS   rY   rb   rj   rn   ru    r   r   r   r      s        
 
 
Q Q Q*S S SU U U*O O O.	9 	9 	95 5 59 9 9(? ? ?I I I
I 
I 
IB B B> > > > >r   r   __main__z)%(asctime)s : %(levelname)s : %(message)s)formatlevel)__doc__unittestr)   loggingrJ   numpyr    gensimr   gensim.modelsr   gensim.testr   gensim.test.utilsr   r   r   r	   TestCaseTestBaseTopicModelr   rv   basicConfigINFOmainry   r   r   <module>r      s                        # # # # # # U U U U U U U U U U U Uo> o> o> o> o>h!? o> o> o>d z GJRYR^____HMOOOOO r   