
    ca              
          d Z ddlZddlZddlZddlmZ ddlZddlm	Z	m
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mZ dd	lmZ g d
g dg dg ddZddgddgg dg dg dg dg dddgddgd	Zedd         ZdgddgddgdZ e
e          Zd eD             Z  G d dej!        ej"                  Z#e$dk    r( ej%        dej&                    ej'                     dS dS ) z
Automated tests for the author-topic model (AuthorTopicModel class). These tests
are based on the unit tests of LDA; the classes are quite similar, and the tests
needed are thus quite similar.
    N)remove)mmcorpus
Dictionary)atmodel)matutils)basetmtests)datapathget_tmpfilecommon_textscommon_dictionarycommon_corpus)jensen_shannon)r                     )r   r   r   r   r         )r   r   r   r   r   )r   r   r   r   )johnjanejackjillr   r   r   )r   r   r   )r   r   r   r   )	r   r   r   r   r   r   r   r   r   r   r   r   )r   bobsallyc                 B    g | ]}t                               |          S  )dictionary_newdoc2bow).0texts     8lib/python3.11/site-packages/gensim/test/test_atmodel.py
<listcomp>r$   @   s&    AAAtn$$T**AAA    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S )TestAuthorTopicModelc                     t          j        t          d                    | _        t          j        | _        |                     t          t          t          dd          | _	        d S )Nztestcorpus.mmr   d   )id2word
author2doc
num_topicspasses)
r   MmCorpusr	   corpusr   AuthorTopicModelclass_
dictionaryr+   model)selfs    r#   setUpzTestAuthorTopicModel.setUpD   sI    '(A(ABB.[[
_`il[mm


r%   c           	         d}t          d          D ]}|                     t          ddd          }|                    t          t
                     |                    d          }t          j        |d          }dd	g}t          j
        t          |          t          |          d
          }|r n2t          j        d|t          |          t          |                     |                     |           d S )NF   r   r)   r   )r*   r,   r-   random_stater   Q?{Gz?皙?atolIAuthor-topic model failed to converge on attempt %i (got %s, expected %s))ranger1   r2   updater/   r+   get_author_topicsr   sparse2fullnpallclosesortedloggingwarning
assertTruer4   passedir3   jill_topicsvecexpecteds          r#   test_transformz#TestAuthorTopicModel.test_transformI   s     r 	 	AKK
q[\K]]ELL,,,11&99K &{A66Cd|H[fX.>.>TJJJF O[6#;;x 0 0    	r%   c                     |                      t          t          t          d          }|                    d          }t          j        ||j                  }|                     t          |dk                         d S )Nr   r+   r*   r,   r   r   )
r1   r/   r+   r2   rA   r   rB   r,   rH   all)r4   r3   rL   s      r#   
test_basiczTestAuthorTopicModel.test_basicf   sj     Fz:Z[\\--f55*;8HIIK!O,,-----r%   c                    t           dggz   }t          |           j        d           fd|D             }t                                          }t          |          dz
  g|d<   |                     ||d           d S )N+only_occurs_once_in_corpus_and_alone_in_docr   )no_belowc                 0    g | ]} j         |          S r   )r    )r!   r"   r2   s     r#   r$   z<TestAuthorTopicModel.test_empty_document.<locals>.<listcomp>t   s'    CCCt$*$T**CCCr%   r   joaquinrQ   )r   r   filter_extremesr+   copylenr1   )r4   local_textsr/   a2dr2   s       @r#   test_empty_documentz(TestAuthorTopicModel.test_empty_documentp   s    "'T&U%VV,,
"
"A....CCCC{CCCook**Q./IFsJ1MMMMMr%   c                    |                      t          t          t          t          dd          }|                      t          t          t          dd          }|                    d          }|                    d          }t          j        ||j                  }t          j        ||j                  }| 	                    t          j        ||                     d S )Nr   r   r+   
doc2authorr*   r,   r8   )ra   r*   r,   r8   r   r1   r/   r+   ra   r2   rA   r   rB   r,   rH   rC   rD   r4   r3   model2rL   jill_topics2s        r#   test_author2doc_missingz,TestAuthorTopicModel.test_author2doc_missingz       zj11  
 
 z:q  
 
 --f55//77*;8HII+L%:JKKK>>?????r%   c                    |                      t          t          t          t          dd          }|                      t          t          t          dd          }|                    d          }|                    d          }t          j        ||j                  }t          j        ||j                  }| 	                    t          j        ||                     d S )Nr   r   r`   )r+   r*   r,   r8   r   rb   rc   s        r#   test_doc2author_missingz,TestAuthorTopicModel.test_doc2author_missing   rg   r%   c                    |                      t          t          t          d          }|                    d          }t          j        ||j                  }|                                 |                    d          }t          j        ||j                  }| 	                    t          t          j        ||                               d S Nr   rQ   r   )r1   r/   r+   r2   rA   r   rB   r,   r@   assertFalserR   rC   equalr4   r3   rL   re   s       r#   test_updatez TestAuthorTopicModel.test_update   s    Fz:Z[\\--f55*;8HII..v66+L%:JKK 	RXk<@@AABBBBBr%   c                    |                      t          t          t          d          }|                    d          }t          j        ||j                  }|                    t          t                     |                    d          }t          j        ||j                  }|                     t          t          j        ||                               d S rk   )r1   r/   r+   r2   rA   r   rB   r,   r@   
corpus_newauthor2doc_newrl   rR   rC   rm   rn   s       r#   test_update_new_data_old_authorz4TestAuthorTopicModel.test_update_new_data_old_author   s     Fz:Z[\\--f55*;8HIIZ000..v66+L%:JKK 	RXk<@@AABBBBBr%   c                 @   |                      t          t          t          d          }|                    t
          t                     |                    d          }t          j	        ||j
                  }|                     t          |dk                         d S )Nr   rQ   r   r   )r1   r/   r+   r2   r@   rq   rr   rA   r   rB   r,   rH   rR   )r4   r3   sally_topicss      r#   test_update_new_data_new_authorz4TestAuthorTopicModel.test_update_new_data_new_author   s     Fz:Z[\\Z000 ..w77+L%:JKKL1,--.....r%   c           
      0   |                      | j        t          t          ddt	          d                    }|                    d          }t          j        ||j                  }| 	                    t          |dk                         |                                 |                    d          }t          j        ||j                  }|                     t          t          j        ||                               |                    t          t                      |                    d          }t          j        ||j                  }| 	                    t          |dk                         t#          t	          d                     d S )Nr   Ttestcorpus_serialization.mm)r+   r*   r,   
serializedserialization_pathr   r   r   )r1   r/   r+   r2   r	   rA   r   rB   r,   rH   rR   r@   rl   rC   rm   rq   rr   r   )r4   r3   rL   re   ru   s        r#   test_serializedz$TestAuthorTopicModel.test_serialized   sX    KJ
q9V0W0W  
 

 --f55*;8HIIK!O,,---..v66+L%:JKK 	RXk<@@AABBBZ000 ..w77+L%:JKKL1,--... 	x56677777r%   c                 V   d}t          d          D ] }|                     t          ddddt          d                    }|                    | j        t                     |                    d	          }t          j	        |d          }d
dg}t          j        t          |          t          |          d          }t          t          d                     |r n3t          j        d|t          |          t          |                     |                     |           d S )NFr7   r   r)   r   Trx   )r*   r,   r-   r8   ry   rz   r   r9   r:   r;   r<   r>   )r?   r1   r2   r	   r@   r/   r+   rA   r   rB   rC   rD   rE   r   rF   rG   rH   rI   s          r#   test_transform_serializedz.TestAuthorTopicModel.test_transform_serialized   s*    r 	 	AKK"q1H=Z4[4[    E LLj11111&99K &{A66Cd|H[fX.>.>TJJJF 89::;;; O[6#;;x 0 0    	r%   c                 ,   |                      t          t          t          ddd          }|                      t          t          t          ddd          }|                     t          t          j        |j        |j                                       d S )N	symmetric
   r   )r+   r*   alphar-   r,   auto)	r1   r/   r+   r2   rl   rR   rC   rm   r   r4   model1	modelautos      r#   test_alpha_autoz$TestAuthorTopicModel.test_alpha_auto
  s    z:bQ  
 
 KKz:   
 
	 	RXflIODDEEFFFFFr%   c           	         t          t          t          dd           }d} | j        di | d|d<    | j        di |}|                     |j        j        |           |                     t          |j        t          j
        ddg          k                         d|d<    | j        di |}|                     |j        j        |           |                     t          j        |j        dd	g                     d
|d<    | j        di |}|                     |j        j        |           |                     t          |j        t          j
        d
d
g          k                         d|d<    | j        di |}|                     |j        j        |           |                     t          |j        t          j
        ddg          k                         d
d
g|d<    | j        di |}|                     |j        j        |           |                     t          |j        t          j
        d
d
g          k                         t          j
        d
d
g          |d<    | j        di |}|                     |j        j        |           |                     t          |j        t          j
        d
d
g          k                         g d|d<    | j        t          | j        fi | d
gd
gg|d<    | j        t          | j        fi | d
g|d<    | j        t          | j        fi | d|d<    | j        t          | j        fi | d S )Nr   )r+   r*   r,   r   )r   r   r         ?
asymmetricgY>-?gLM7?333333?r   )r   r   r   gensim is coolr   )dictr+   r2   r1   assertEqualr   shaperH   rR   rC   arrayrD   assertRaisesAssertionError
ValueError)r4   kwargsexpected_shaper3   s       r#   
test_alphazTestAuthorTopicModel.test_alpha  s}   !	
 
 
  	f%w%%f%%*N;;;EK28S#J+?+??@@AAA&w%%f%%*N;;;EK(H1EFFGGGw%%f%%*N;;;EK28S#J+?+??@@AAAw%%f%%*N;;;EK28QF+;+;;<<===*w%%f%%*N;;;EK28S#J+?+??@@AAA(C:..w%%f%%*N;;;EK28S#J+?+??@@AAA *//w.$+@@@@@53%.w.$+@@@@@%w.$+@@@@@*w*dk<<V<<<<<r%   c                 ,   |                      t          t          t          ddd          }|                      t          t          t          ddd          }|                     t          t          j        |j        |j                                       d S )Nr   r   r   )r+   r*   etar-   r,   r   )	r1   r/   r+   r2   rl   rR   rC   rm   r   r   s      r#   test_eta_autoz"TestAuthorTopicModel.test_eta_autoN  s    z:B1  
 
 KKz:ra   
 
	 	RXfj)-@@AABBBBBr%   c           	         t          t          t          dd           }t          t                    }|f} | j        di |}|                     |j        j        |           |                     t          |j        t          j        dg|z            k                         d|d<    | j        di |}|                     |j        j        |           |                     t          |j        t          j        dg|z            k                         d|d<    | j        di |}|                     |j        j        |           |                     t          |j        t          j        dg|z            k                         d|d<    | j        di |}|                     |j        j        |           |                     t          |j        t          j        dg|z            k                         dg|z  |d<    | j        di |}|                     |j        j        |           |                     t          |j        t          j        dg|z            k                         t          j        dg|z            |d<    | j        di |}|                     |j        j        |           |                     t          |j        t          j        dg|z            k                         t          j        dgt          t                    z  gdz            }||d<    | j        di | |                    t          t          |j                                      |d<    | j        t           | j        fi | dg|d<    | j        t           | j        fi | dg|dz   z  |d<    | j        t           | j        fi | d	|d<    | j        t"          | j        fi | d
|d<    | j        t"          | j        fi | d S )Nr   )r+   r*   r,   r   r   r   r   r   r   r   r   r   r   )r   r+   r2   r[   r1   r   r   r   rH   rR   rC   r   reshapetuplereversedr   r   r   )r4   r   	num_termsr   r3   testetas         r#   test_etazTestAuthorTopicModel.test_eta[  s   !	
 
 
 
OO	# %%f%%.999EI3%)2C)D)DDEEFFF#u%%f%%.999EI3%)2C)D)DDEEFFFu%%f%%.999EI3%)2C)D)DDEEFFFu%%f%%.999EI1#	/)B)BBCCDDD	)u%%f%%.999EI3%)2C)D)DDEEFFF#!233u%%f%%.999EI3%)2C)D)DDEEFFF (SEC
OO34q899uf  hw}.E.E(F(FGGu.$+@@@@@u.$+@@@@@Q/u.$+@@@@@(u*dk<<V<<<$u*dk<<V<<<<<r%   c                    | j                             t                    }|D ]\  }}|                     t	          |t
                               |                     t	          |t                               |D ]U\  }}|                     t	          |t                               |                     t	          |t                               Vd S )N)r3   
top_topicsr/   rH   
isinstancelistfloatstr)r4   r   topicscorevks         r#   test_top_topicsz$TestAuthorTopicModel.test_top_topics  s    Z**622
& 	6 	6LE5OOJud33444OOJue44555 6 61
1c 2 2333
1e 4 455556		6 	6r%   c                     | j                             d          }|D ]Z\  }}|                     t          |t          j                             |                     t          |t                               [d S Nr   )r3   get_topic_termsrH   r   numbersIntegralr   )r4   topic_termsr   r   s       r#   test_get_topic_termsz)TestAuthorTopicModel.test_get_topic_terms  sr    j0033 	2 	2DAqOOJq'*:;;<<<OOJq%001111	2 	2r%   c           
      *   |                      t          t          t          ddt          j                            d                    }g }|j                                        D ]*}|	                    |
                    |                     +|D ]}|                     t          |t                               |D ]U\  }}|                     t          |t                               |                     t          |t                               Vd S Nr   r)   r   r+   r*   r,   r-   r8   )r1   r/   r+   r2   rC   randomseed	id2authorvaluesappendrA   rH   r   r   intr   )r4   r3   author_topicsar   r   r   s          r#   test_get_author_topicsz+TestAuthorTopicModel.test_get_author_topics  s   z:!RY^^A%6%6  
 

 '')) 	= 	=A  !8!8!;!;<<<<" 	6 	6EOOJud33444 6 61
1c 2 2333
1e 4 455556	6 	6r%   c           
      x   |                      t          t          t          ddt          j                            d                    }|                    d          }|D ]U\  }}|                     t          |t                               |                     t          |t                               V|                    t          |j        d                             }|D ]U\  }}|                     t          |t                               |                     t          |t                               Vd S r   )r1   r/   r+   r2   rC   r   r   get_term_topicsrH   r   r   r   r   r*   )r4   r3   resulttopic_noprobabilitys        r#   test_term_topicsz%TestAuthorTopicModel.test_term_topics  s   z:!RY^^A%6%6  
 
 &&q))%+ 	< 	<!HkOOJx55666OOJ{E::;;;; &&s5=+;'<'<==%+ 	< 	<!HkOOJx55666OOJ{E::;;;;	< 	<r%   c           
      `   |                      t          t          t          ddt          j                            d                    }i }ddg|d<   |                    t          dd         |           t          |j	        j
                  }t          |j                  }t          |j                  }t          |j                  }t          |j                  }|                    t          dd                   }|D ]U\  }	}
|                     t!          |	t"                               |                     t!          |
t$                               Vddt'          |d         |          z   z  }|                     |d	k               |                     t*                    5  |                    t          d                    d d d            n# 1 swxY w Y   |                     |t          |j	        j
                             |                     |t          |j                             |                     |t          |j                             |                     |t          |j                             |                     |t          |j                             d S )
Nr   r)   r   r   r   test)r/   r+   )r/   g?)r1   r/   r+   r2   rC   r   r   r@   r[   stategamma	author2idr   ra   get_new_author_topicsrH   r   r   r   r   r   	TypeErrorr   )r4   r3   author2doc_newauthorstate_gamma_lenauthor2doc_lenauthor2id_lenid2author_lendoc2author_lennew_author_topicsr   r   
similaritys               r#   test_new_author_topicsz+TestAuthorTopicModel.test_new_author_topics  s   z:!RY^^A%6%6  
 
  "()1vV$F1Q3K4HIII ek/00U-..EO,,EO,,U-..!77vac{7KK & 	2 	2DAqOOJq#..///OOJq%001111 !nU6]<MNNNO

c)*** y)) 	: 	:''vay'999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	#ek.?*@*@AAAU-=)>)>???EO(<(<===EO(<(<===U-=)>)>?????s   ("GGGc                 V   d| _         g }|                     t          dd          }d }t          d          D ]@}|                    t
          t                     |                     ||                     AdD ]+}|                     t          dd|          }|                      ||          d	           |D ]i}|                    t
          t                     d
	                    ||j
        |j        j                  }|                      ||          ||           j|                     |j        j        t          t
                    t          |          z             |                     |j
        t          t
                    t          |          z             -d S )NTr   r   )r*   	chunksizer,   c                 ^    t          | j        d| j        z  | j        z  z   | j                   S r   )powoffsetnum_updatesr   decay)r3   s    r#   
final_rhotz4TestAuthorTopicModel.test_passes.<locals>.final_rhot  s/    u|q5+<'<&OORWR]Q]^^^r%   r   )r   r   r   2   r)   )r*   r   r,   r-   g      ?z
{}, {}, {})msg)longMessager1   r2   r?   r@   r/   r+   r   r   formatr   r   numdocsassertAlmostEqualr[   )r4   
test_rhotsr3   r   _r-   	test_rhotr   s           r#   test_passesz TestAuthorTopicModel.test_passes  s   
J!JJ	_ 	_ 	_ q 	1 	1ALL,,,jj//0000) 	O 	OFKK
aAV\K]]EZZ..444' N N	VZ000"))&%2CU[EXYY&&zz%'8'8)&MMMMU[0#f++J2OPPPU.Fc*oo0MNNNN	O 	Or%   c                    t          d          }| j        }|                    |           | j                            |          }|                     |j        |j                   |                     t          j	        |j
        |j
                             |                     t          j	        |j        j        |j        j                             d S )Ngensim_models_atmodel.tst)r
   r3   saver1   loadr   r,   rH   rC   rD   expElogbetar   r   r4   fnamer3   rd   s       r#   test_persistencez%TestAuthorTopicModel.test_persistence  s    788


5!!%(()6+<===E$5v7IJJKKKEK$5v|7IJJKKKKKr%   c                    t          d          }t          j        t          t          d          }|                    |d           t          j                            |          }|                     |j        d u            |                    |dg           t          j                            |          }|                     |j        d u            d S )Nz/gensim_models_atmodel_testPersistenceIgnore.tstr   )r+   r,   r*   )ignore)	r
   r   r0   r/   r+   r   r   rH   r*   r   s       r#   test_persistence_ignorez,TestAuthorTopicModel.test_persistence_ignore  s    MNN(JSTUUU

5
+++)..u55$.///

5)
---)..u55$./////r%   c                 D   t          d          }| j        }|                    |           | j                            |d           }|                     |j        |j                   |                     t          j	        |j
        |j
                             |                    d          }|                    d          }t          j        ||j                  }t          j        ||j                  }|                     t          j	        ||                     d S )Ngensim_models_atmodel.tst.gzmmapr   )r
   r3   r   r1   r   r   r,   rH   rC   rD   r   rA   r   rB   r4   r   r3   rd   rL   re   s         r#   test_persistence_compressedz0TestAuthorTopicModel.test_persistence_compressed%  s    :;;


5!!%d!33)6+<===E$5v7IJJKKK --f55//77*;8HII+L%:JKKK>>?????r%   c                    t          d          }| j        }|                    |d           | j                            |d          }|                     |j        |j                   |                     t          |j	        t          j                             |                     t          j        |j	        |j	                             |                    d          }|                    d          }t          j        ||j                  }t          j        ||j                  }|                     t          j        ||                     d S )Nr   r   	sep_limitrr   r   )r
   r3   r   r1   r   r   r,   rH   r   r   rC   memmaprD   rA   r   rB   r   s         r#   test_large_mmapz$TestAuthorTopicModel.test_large_mmap4  s"   788
 	

5A
&&& !!%c!22)6+<===
6#5ryAABBBE$5v7IJJKKK --f55//77*;8HII+L%:JKKK>>?????r%   c                     t          d          }| j        }|                    |d           |                     t          | j        j        |d           d S )Nr   r   r   r   r   )r
   r3   r   r   IOErrorr1   r   )r4   r   r3   s      r#   test_large_mmap_compressedz/TestAuthorTopicModel.test_large_mmap_compressedH  sY    :;;
 	

5A
&&& 	'4;#3UEEEEEr%   c                     t          d          }ddg}| j                            |          }|d         }|                     t	          j        ||                     d S )Natmodel_3_0_1_model)r   g%Fu?)r   gJ;wL?r   )r	   r1   r   rH   rC   rD   )r4   atmodel_3_0_1_fnameexpected_topicsr3   topicss        r#   !test_dtype_backward_compatibilityz6TestAuthorTopicModel.test_dtype_backward_compatibilityR  sc    &'<==46NO   !455 vOV<<=====r%   N)__name__
__module____qualname__r5   rO   rS   r^   rf   ri   ro   rs   rv   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r%   r#   r'   r'   C   s       n n n
     :. . .N N N@ @ @$@ @ @$C C CC C C / / /8 8 8:"  "  " HG G G5= 5= 5=nC C C;= ;= ;=z	6 	6 	62 2 26 6 6"< < <&%@ %@ %@NO O O8L L L	0 	0 	0@ @ @@ @ @(F F F> > > > >r%   r'   __main__z)%(asctime)s : %(levelname)s : %(message)s)r   level)(__doc__rF   unittestr   osr   numpyrC   gensim.corporar   r   gensim.modelsr   gensimr   gensim.testr   gensim.test.utilsr	   r
   r   r   r2   r   r/   gensim.matutilsr   r+   ra   	texts_newrr   r   rq   TestCaseTestBaseTopicModelr'   r  basicConfigDEBUGmainr   r%   r#   <module>r     sT                 / / / / / / / / ! ! ! ! ! !       # # # # # #Y Y Y Y Y Y Y Y Y Y Y Y Y Y * * * * * * "!!!!!OOLL	 
 	
 

 1	#q!f1v>>I&&AAyAAA
[> [> [> [> [>8,k.L [> [> [>| z GJRYR_````HMOOOOO r%   