
    c\                     ,   d dl m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mZ  G d	 d
ej                  Zd Z G d dej                  Zedk    r( ej        dej                    ej                     dS dS )    )
namedtupleN)cosine)Doc2Vec)utils)translation_matrix)KeyedVectors)datapathget_tmpfilec                   p    e Zd Zd Zd Zd Zd Zej        	                    dd          d             Z
d	S )
TestTranslationMatrixc                     t          d          | _        t          d          | _        g d| _        ddg| _        t          j        | j        d          | _        t          j        | j        d          | _        d S )Nz3EN.1-10.cbow1_wind5_hs0_neg10_size300_smpl1e-05.txtz3IT.1-10.cbow1_wind5_hs0_neg10_size300_smpl1e-05.txt))oneuno)twodue)threetre)fourquattro)fivecinque)sevensette)eightotto)dogcane)pigmaiale)fishcavallo)birdsuccelli)applemela)orange	arancione)grapeacino)bananar*   )tendieci)catgattoF)binary)	r	   source_word_vec_filetarget_word_vec_file
word_pairstest_word_pairsr   load_word2vec_formatsource_word_vectarget_word_vec)selfs    Clib/python3.11/site-packages/gensim/test/test_translation_matrix.pysetUpzTestTranslationMatrix.setUp   s    $,-b$c$c!$,-b$c$c!
 
 
 !12BC+@AZchiii+@AZchiii    c                     t          j        | j        | j        | j                  }|                    | j                   |                     |j         j        d           d S )N),  r<   )r   TranslationMatrixr5   r6   r2   trainassertEqualshape)r7   models     r8   test_translation_matrixz-TestTranslationMatrix.test_translation_matrix$   sV    "4T5I4K_aeapqqDO$$$17DDDDDr:   c                 n   t          d          }t          j        | j        | j        | j                  }|                    | j                   |                    |           t          j                            |          }| 	                    t          j        |j        |j                             dS )z&Test storing/loading the entire model.ztransmat-en-it.pklN)r
   r   r=   r5   r6   r2   r>   saveload
assertTruenpallclose)r7   tmpfrA   loaded_models       r8   test_persistencez&TestTranslationMatrix.test_persistence)   s    /00"4T5I4K_aeapqqDO$$$

4);@@FFE$<l>]^^_____r:   c                 r   t          j        | j        | j        | j                  }|                    | j                   t          | j         \  }}|                    |d| j        | j                  }t          | j                  D ].\  }}| 
                    |d         ||d                  v            /d S )N   )topnsource_lang_vectarget_lang_vec   r   r   r=   r5   r6   r2   r>   zipr3   	translate	enumeraterF   r7   rA   test_source_wordtest_target_wordtranslated_wordsidxitems          r8   test_translate_nnz'TestTranslationMatrix.test_translate_nn4   s    "4T5I4K_aeapqqDO$$$-0$2F-G** ??1d6J\`\p + 
 
 #4#788 	B 	BICOODG'7Q'@@AAAA	B 	Br:   TzZblinking test, can be related to <https://github.com/RaRe-Technologies/gensim/issues/2977>)reasonc                 v   t          j        | j        | j        | j                  }|                    | j                   t          | j         \  }}|                    |ddd| j        | j                  }t          | j                  D ].\  }}| 
                    |d         ||d                  v            /d S )NrM   rQ      )rN   gc
sample_numrO   rP   r   rR   rV   s          r8   test_translate_gcz'TestTranslationMatrix.test_translate_gcA   s     #4T5I4K_aeapqqDO$$$-0$2F-G** ??1q 0$BV + 
 

 #4#788 	B 	BICOODG'7Q'@@AAAA	B 	Br:   N)__name__
__module____qualname__r9   rB   rK   r\   pytestmarkxfailrb    r:   r8   r   r      s        j j j E E E
	` 	` 	`B B B [k   B B	 B B Br:   r   c                 `   t          dd          }g }t          j        | dd          5 }t          |          D ][\  }}t          j        |                                          }|}t          |          }|                     |||                     \	 d d d            n# 1 swxY w Y   |S )NSentimentDocumentz
words tagsrbzutf-8)modeencoding)r   r   openrU   
to_unicodesplitstrappend)	filenamesentiment_documentalldocsalldataline_nolinetokenswordstagss	            r8   read_sentiment_docsr}   T   s    #$7FFG	H4'	:	:	: <g&w// 	< 	<MGT%d++1133FEw<<DNN--eT::;;;;		<< < < < < < < < < < < < < < < Ns   A,B##B'*B'c                   L    e Zd Zd Zd Z ej        d          d             ZdS ) TestBackMappingTranslationMatrixc                     t          d          }t          |          }|| _        t          |d d         ddd          | _        t          |ddd          | _        d S )Nzalldata-id-10.txtrM      2   rQ   )	documentsvector_sizeepochsseed   )r	   r}   
train_docsr   source_doc_vectarget_doc_vec)r7   rt   r   s      r8   r9   z&TestBackMappingTranslationMatrix.setUpa   sh    /00(22
$%
2A2AVX_`aaa%
RT[\]]]r:   c                     t          j        | j        | j        | j        d d                   }|                    | j        d d                   }|                     |j        d           d S )NrM   )r   r   )r   BackMappingTranslationMatrixr   r   r   r>   r?   r@   )r7   rA   transmats      r8   rB   z8TestBackMappingTranslationMatrix.test_translation_matrixh   sh    "?!4dobqb6I
 
 ;;trr23300000r:   zmflaky test likely to be discarded when <https://github.com/RaRe-Technologies/gensim/issues/2977> is addressedc                    t          j        | j        | j        | j        dd                   }|                    | j        dd                    |                    | j        j        | j        d         j        d                            }| 	                    |j
        d           | j                            | j        d         j                  }t          ||          }|                     |d           dS )a  Test that translation gives similar results to traditional inference.

        This may not be completely sensible/salient with such tiny data, but
        replaces what seemed to me to be an ever-more-nonsensical test.

        See <https://github.com/RaRe-Technologies/gensim/issues/2977> for discussion
        of whether the class this supposedly tested even survives when the
        TranslationMatrix functionality is better documented.
        NrM   r   )r   g?)r   r   r   r   r   r>   infer_vectordvr|   r?   r@   r{   r   assertLessEqual)r7   rA   backmapped_vecd2v_inferred_vectordistances        r8   test_infer_vectorz2TestBackMappingTranslationMatrix.test_infer_vectoro   s     #?!4dobqb6I
 
 	DOBQB'(((++D,?,B4?STCUCZ[\C],^__-u555"1>>tq?Q?WXX.*=>>Xs+++++r:   N)rc   rd   re   r9   rB   unittestskipr   ri   r:   r8   r   r   `   sf        ^ ^ ^1 1 1 X]	 , ,	 , , ,r:   r   __main__z)%(asctime)s : %(levelname)s : %(message)s)formatlevel)collectionsr   r   loggingnumpyrG   rf   scipy.spatial.distancer   gensim.models.doc2vecr   gensimr   gensim.modelsr   r   gensim.test.utilsr	   r
   TestCaser   r}   r   rc   basicConfigDEBUGmainri   r:   r8   <module>r      sl   # " " " " "        ) ) ) ) ) ) ) ) ) ) ) )       , , , , , , & & & & & & 3 3 3 3 3 3 3 3>B >B >B >B >BH- >B >B >BB	 	 	', ', ', ', ',x'8 ', ', ',T z GJRYR_````HMOOOOO r:   