§
    �zIf'  ã                   ó¼   — d Z ddl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  G d„ dej        ¦  «        Z G d	„ d
ej        ¦  «        Z G d„ dej        ¦  «        ZdS )z
Tests for stack decoder
é    N)Údefaultdict)Úlog)ÚPhraseTableÚStackDecoder)Ú_HypothesisÚ_Stackc                   ód   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	e
d„ ¦   «         Ze
d	„ ¦   «         Zd
S )ÚTestStackDecoderc                 óà  — t                                ¦   «         }t          |d ¦  «        }d}|                     |¦  «        }|                      |d         dg¦  «         |                      |d         dg¦  «         |                      |d         dg¦  «         |                      |d         ddg¦  «         |                      |d         ¦  «         |                      |d         dg¦  «         d S )	N©ÚmyÚ
hovercraftÚisÚfullÚofÚeelsr   é   é   é   é   é   é   )r
   Úcreate_fake_phrase_tabler   Úfind_all_src_phrasesÚassertEqualÚassertFalse)ÚselfÚphrase_tableÚstack_decoderÚsentenceÚsrc_phrase_spanss        ú_/var/www/piapp/venv/lib/python3.11/site-packages/nltk/test/unit/translate/test_stack_decoder.pyÚtest_find_all_src_phrasesz*TestStackDecoder.test_find_all_src_phrases   s÷   € å'×@Ò@ÑBÔBˆÝ$ \°4Ñ8Ô8ˆØCˆð )×=Ò=¸hÑGÔGÐð 	×ÒÐ)¨!Ô,¨q¨cÑ2Ô2Ð2Ø×ÒÐ)¨!Ô,¨q¨cÑ2Ô2Ð2Ø×ÒÐ)¨!Ô,¨q¨cÑ2Ô2Ð2Ø×ÒÐ)¨!Ô,¨q°!¨fÑ5Ô5Ð5Ø×ÒÐ)¨!Ô,Ñ-Ô-Ð-Ø×ÒÐ)¨!Ô,¨q¨cÑ2Ô2Ð2Ð2Ð2ó    c                 óä   — t          d d ¦  «        }d|_        t          ¦   «         }d|_        |                     |d¦  «        }t          |j        ¦  «        dz  }|                      ||¦  «         d S )Nç      à?©r   r   ©é   é
   r   )r   Údistortion_factorr   Úsrc_phrase_spanÚdistortion_scorer   r   )r   r   Ú
hypothesisÚscoreÚexpected_scores        r"   Útest_distortion_scorez&TestStackDecoder.test_distortion_score&   st   € å$ T¨4Ñ0Ô0ˆØ*-ˆÔ'Ý ‘]”]ˆ
Ø%+ˆ
Ô"ð ×.Ò.¨z¸7ÑCÔCˆõ ˜]Ô<Ñ=Ô=ÀÑGˆØ×Ò˜ Ñ/Ô/Ð/Ð/Ð/r$   c                 ó¨   — t          d d ¦  «        }d|_        t          ¦   «         }|                     |d¦  «        }|                      |d¦  «         d S )Nr&   r(   ç        )r   r+   r   r-   r   )r   r   r.   r/   s       r"   Ú(test_distortion_score_of_first_expansionz9TestStackDecoder.test_distortion_score_of_first_expansion4   sW   € å$ T¨4Ñ0Ô0ˆØ*-ˆÔ'Ý ‘]”]ˆ
ð ×.Ò.¨z¸7ÑCÔCˆð 	×Ò˜ Ñ$Ô$Ð$Ð$Ð$r$   c                 ó  — t                                ¦   «         }t                                ¦   «         }t          ||¦  «        }d}|                     |¦  «        }|                      |d         d         |                     d¦  «        d         j        |                     d¦  «        z   ¦  «         |                      |d         d         |                     d¦  «        d         j        |                     d¦  «        z   ¦  «         d S )Nr   r   r   ©r   r   ©r   r   )	r
   r   Úcreate_fake_language_modelr   Úcompute_future_scoresr   Útranslations_forÚlog_probÚprobability©r   r   Úlanguage_modelr   r    Úfuture_scoress         r"   Útest_compute_future_costsz*TestStackDecoder.test_compute_future_costsA   s  € å'×@Ò@ÑBÔBˆÝ)×DÒDÑFÔFˆÝ$ \°>ÑBÔBˆØCˆð &×;Ò;¸HÑEÔEˆð 	×ÒØ˜!Ô˜QÔà×-Ò-¨oÑ>Ô>¸qÔAÔJØ ×,Ò,¨_Ñ=Ô=ñ>ñ	
ô 	
ð 	
ð 	×ÒØ˜!Ô˜QÔà×-Ò-Ð.BÑCÔCÀAÔFÔOØ ×,Ò,Ð-AÑBÔBñCñ	
ô 	
ð 	
ð 	
ð 	
r$   c                 ó2  — t                                ¦   «         }t                                ¦   «         }t          ||¦  «        }d}|                     |¦  «        }|                      |d         d         |d         d         |d         d         z   ¦  «         d S )Nr   r   r   r   )r
   r   r8   r   r9   r   r=   s         r"   Ú9test_compute_future_costs_for_phrases_not_in_phrase_tablezJTestStackDecoder.test_compute_future_costs_for_phrases_not_in_phrase_table[   sš   € å'×@Ò@ÑBÔBˆÝ)×DÒDÑFÔFˆÝ$ \°>ÑBÔBˆØCˆð &×;Ò;¸HÑEÔEˆð 	×ÒØ˜!Ô˜QÔØ˜!Ô˜QÔ -°Ô"2°1Ô"5Ñ5ñ	
ô 	
ð 	
ð 	
ð 	
r$   c                 óø   — t          ¦   «         }d„ |_        t          d„ ¦  «        }d|d         d<   d|d         d<   t          d d ¦  «        }|                     ||d¦  «        }|                      |d	¦  «         d S )
Nc                 ó
   — ddgS )N©r   r   )r   r)   © ©Ú_s    r"   ú<lambda>z4TestStackDecoder.test_future_score.<locals>.<lambda>n   ó   € °6¸6Ð2B€ r$   c                  ó*   — t          t          ¦  «        S ©N)r   ÚfloatrF   r$   r"   rI   z4TestStackDecoder.test_future_score.<locals>.<lambda>o   s   € µ½UÑ1CÔ1C€ r$   çš™™™™™Ù?r   r   r&   r   r)   çÍÌÌÌÌÌì?)r   Úuntranslated_spansr   r   Úfuture_scorer   )r   r.   Úfuture_score_tabler   rQ   s        r"   Útest_future_scorez"TestStackDecoder.test_future_scorek   s�   € å ‘]”]ˆ
Ø(BÐ(Bˆ
Ô%Ý(Ð)CÐ)CÑDÔDÐØ#&Ð˜1Ô˜aÑ Ø#&Ð˜1Ô˜aÑ Ý$ T¨4Ñ0Ô0ˆð %×1Ò1°*Ð>PÐRSÑTÔTˆð 	×Ò˜ yÑ1Ô1Ð1Ð1Ð1r$   c                 ó¬   — t          ¦   «         }d„ |_        ddgdgg dgg d¢g dgg}t          j        ||¦  «        }|                      |g d¢¦  «         d S )	Nc                 ó
   — ddgS )NrE   )r   r   rF   rG   s    r"   rI   z5TestStackDecoder.test_valid_phrases.<locals>.<lambda>~   rJ   r$   r   r   r   r   )r   r   é   rV   )©r   r   ©r   r   r'   )r   r   )r   r   )r   rP   r   Úvalid_phrasesr   )r   r.   Úall_phrases_fromÚphrase_spanss       r"   Útest_valid_phrasesz#TestStackDecoder.test_valid_phrasesz   ss   € å ‘]”]ˆ
à(BÐ(Bˆ
Ô%Ø ˜F Q C¨¨a¨S°)°)°)¸RÀ!ÀÐEÐõ $Ô1Ð2BÀJÑOÔOˆð 	×Ò˜Ð'OÐ'OÐ'OÑPÔPÐPÐPÐPr$   c                  óî  — t          ¦   «         } |                      ddd¦  «         |                      ddd¦  «         |                      ddd¦  «         |                      ddd¦  «         |                      ddd	¦  «         |                      d
dd¦  «         |                      ddd	¦  «         |                      ddd	¦  «         |                      ddd	¦  «         |                      ddd	¦  «         | S )Nr6   )Ú gš™™™™™é?r7   )r^   r^   gffffffæ?)r   Úcheese©r   r&   )r   r   ç{®Gáz„?)r   r   r   )r^   r^   r^   )r   r   Úspam©r   )rb   )r   Úadd)r   s    r"   r   z)TestStackDecoder.create_fake_phrase_table‡   s  € å"‘}”}ˆØ×Ò˜¨%°Ñ5Ô5Ð5Ø×ÒÐ-¨x¸Ñ=Ô=Ð=Ø×ÒÐ)¨8°SÑ9Ô9Ð9Ø×Ò˜ %¨Ñ-Ô-Ð-Ø×Ò˜ %¨Ñ-Ô-Ð-Ø×Ò˜¨°4Ñ8Ô8Ð8Ø×ÒÐ/°¸sÑCÔCÐCØ×ÒÐ/°¸3Ñ?Ô?Ð?Ø×Ò˜ E¨3Ñ/Ô/Ð/Ø×Ò˜ E¨3Ñ/Ô/Ð/ØÐr$   c                  ól  ‡— t          d„ ¦  «        Št          d¦  «        ‰d<   t          d¦  «        ‰d<   t          d¦  «        ‰d<   t          d¦  «        ‰d<   t          d¦  «        ‰d<   t          d¦  «        ‰d<   t          d	¦  «        ‰d
<    t          dt          fdˆfd„i¦  «        ¦   «         } | S )Nc                  ó   — dS )Ng     8�ÀrF   rF   r$   r"   rI   z=TestStackDecoder.create_fake_language_model.<locals>.<lambda>™   s   € ¨F€ r$   çš™™™™™¹?)r   r6   r`   )r   )r   rc   ç333333Ó?r7   r^   r<   c                 ó   •— ‰|         S rL   rF   )rH   ÚphraseÚlanguage_probs     €r"   rI   z=TestStackDecoder.create_fake_language_model.<locals>.<lambda>¢   s   ø€ ¸]È6Ô=R€ r$   )r   r   ÚtypeÚobject)r>   rk   s    @r"   r8   z+TestStackDecoder.create_fake_language_model–   sÂ   ø€ õ $ N NÑ3Ô3ˆÝ!$ S¡¤ˆ�gÑÝ),¨S©¬ˆ�oÑ&Ý!$ S¡¤ˆ�gÑÝ#& s¡8¤8ˆ�iÑ Ý!$ S¡¤ˆ�gÑÝ#& s¡8¤8ˆ�iÑ Ý.1°#©h¬hˆÐ*Ñ+ð
�Ø•�	˜MÐ+RÐ+RÐ+RÐ+RÐSñ
ô 
ñ ô ˆð Ðr$   N)Ú__name__Ú
__module__Ú__qualname__r#   r1   r4   r@   rB   rS   r\   Ústaticmethodr   r8   rF   r$   r"   r
   r
      s¶   € € € € € ð3ð 3ð 3ð"0ð 0ð 0ð%ð %ð %ð
ð 
ð 
ð4
ð 
ð 
ð 2ð 2ð 2ðQð Qð Qð ðð ñ „\ðð ðð ñ „\ðð ð r$   r
   c                   ó8   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚTestHypothesisc                 ó|   — t          ¦   «         }t          ddd|¬¦  «        }t          ddd|¬¦  «        }|| _        d S )Nr&   )r   rV   )ÚhelloÚworld)Ú	raw_scorer,   Ú
trg_phraseÚpreviousrN   rX   )ÚandÚgoodbye)r   Úhypothesis_chain)r   ÚrootÚchildÚ
grandchilds       r"   ÚsetUpzTestHypothesis.setUp¨   s]   € Ý‰}Œ}ˆÝØØ"Ø)Øð	
ñ 
ô 
ˆõ !ØØ"Ø)Øð	
ñ 
ô 
ˆ
ð !+ˆÔÐÐr$   c                 óh   — | j                              ¦   «         }|                      |g d¢¦  «         d S )N)ru   rv   rz   r{   )r|   Útranslation_so_farr   )r   Útranslations     r"   Útest_translation_so_farz&TestHypothesis.test_translation_so_far¸   s;   € àÔ+×>Ò>Ñ@Ô@ˆð 	×Ò˜Ð&JÐ&JÐ&JÑKÔKÐKÐKÐKr$   c                 óv   — t          ¦   «         }|                     ¦   «         }|                      |g ¦  «         d S rL   )r   r‚   r   )r   r.   rƒ   s      r"   Ú,test_translation_so_far_for_empty_hypothesisz;TestHypothesis.test_translation_so_far_for_empty_hypothesis¿   s<   € å ‘]”]ˆ
ð !×3Ò3Ñ5Ô5ˆð 	×Ò˜ bÑ)Ô)Ð)Ð)Ð)r$   c                 ód   — | j                              ¦   «         }|                      |d¦  «         d S )Nr   )r|   Útotal_translated_wordsr   )r   rˆ   s     r"   Útest_total_translated_wordsz*TestHypothesis.test_total_translated_wordsÉ   s6   € à!%Ô!6×!MÒ!MÑ!OÔ!OÐð 	×ÒÐ/°Ñ3Ô3Ð3Ð3Ð3r$   c                 ó�   — | j                              ¦   «         }|                     ¦   «          |                      |g d¢¦  «         d S )N)r   r   r   r   r   )r|   Útranslated_positionsÚsortr   )r   r‹   s     r"   Útest_translated_positionsz(TestHypothesis.test_translated_positionsÐ   sL   € à#Ô4×IÒIÑKÔKÐð 	×!Ò!Ñ#Ô#Ð#Ø×ÒÐ-¨¨¨Ñ?Ô?Ð?Ð?Ð?r$   c                 ój   — | j                              d¦  «        }|                      |g d¢¦  «         d S )Nr*   )rW   )r   r   )rV   r*   )r|   rP   r   )r   rP   s     r"   Útest_untranslated_spansz&TestHypothesis.test_untranslated_spansØ   s?   € à!Ô2×EÒEÀbÑIÔIÐð 	×ÒÐ+Ð-FÐ-FÐ-FÑGÔGÐGÐGÐGr$   c                 óz   — t          ¦   «         }|                     d¦  «        }|                      |dg¦  «         d S )Nr*   )r   r*   )r   rP   r   )r   r.   rP   s      r"   Ú,test_untranslated_spans_for_empty_hypothesisz;TestHypothesis.test_untranslated_spans_for_empty_hypothesisß   sB   € å ‘]”]ˆ
ð (×:Ò:¸2Ñ>Ô>Ðð 	×ÒÐ+¨g¨YÑ7Ô7Ð7Ð7Ð7r$   N)
rn   ro   rp   r€   r„   r†   r‰   r�   r�   r‘   rF   r$   r"   rs   rs   §   s†   € € € € € ð+ð +ð +ð Lð Lð Lð*ð *ð *ð4ð 4ð 4ð@ð @ð @ðHð Hð Hð8ð 8ð 8ð 8ð 8r$   rs   c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú	TestStackc                 óf  — t          d¦  «        }t          d¦  «        }|                     t          d¦  «        ¦  «         |                     |¦  «         |                     t          d¦  «        ¦  «         |                     t          d¦  «        ¦  «         |                      ||v ¦  «         d S )Nr   ra   gš™™™™™É?rg   rh   ©r   r   Úpushr   ©r   ÚstackÚpoor_hypothesiss      r"   Ú7test_push_bumps_off_worst_hypothesis_when_stack_is_fullzATestStack.test_push_bumps_off_worst_hypothesis_when_stack_is_fullë   s�   € å�q‘	”	ˆÝ% dÑ+Ô+ˆð 	�
Š
•;˜sÑ#Ô#Ñ$Ô$Ð$Ø�
Š
�?Ñ#Ô#Ð#Ø�
Š
•;˜sÑ#Ô#Ñ$Ô$Ð$Ø�
Š
•;˜sÑ#Ô#Ñ$Ô$Ð$ð 	×Ò˜¨EÐ1Ñ2Ô2Ð2Ð2Ð2r$   c                 óV  — t          dd¦  «        }t          d¦  «        }t          d¦  «        }|                     |¦  «         |                     |¦  «         |                     t          d¦  «        ¦  «         |                      ||v ¦  «         |                      ||v ¦  «         d S )Nr   r&   ra   g;ßO�—n‚?rO   r•   )r   r˜   r™   Úworse_hypothesiss       r"   Ú;test_push_removes_hypotheses_that_fall_below_beam_thresholdzETestStack.test_push_removes_hypotheses_that_fall_below_beam_thresholdù   s¦   € å�q˜#‘”ˆÝ% dÑ+Ô+ˆÝ& uÑ-Ô-Ðð 	�
Š
�?Ñ#Ô#Ð#Ø�
Š
Ð#Ñ$Ô$Ð$Ø�
Š
•;˜sÑ#Ô#Ñ$Ô$Ð$ð 	×Ò˜¨EÐ1Ñ2Ô2Ð2Ø×ÒÐ)¨UÐ2Ñ3Ô3Ð3Ð3Ð3r$   c                 óà   — t          dd¦  «        }t          d¦  «        }|                     t          d¦  «        ¦  «         |                     |¦  «         |                      ||v ¦  «         d S )Nr   r&   ra   rO   r•   r—   s      r"   ÚAtest_push_does_not_add_hypothesis_that_falls_below_beam_thresholdzKTestStack.test_push_does_not_add_hypothesis_that_falls_below_beam_threshold  sk   € å�q˜#‘”ˆÝ% dÑ+Ô+ˆð 	�
Š
•;˜sÑ#Ô#Ñ$Ô$Ð$Ø�
Š
�?Ñ#Ô#Ð#ð 	×Ò˜¨EÐ1Ñ2Ô2Ð2Ð2Ð2r$   c                 óD  — t          d¦  «        }t          d¦  «        }|                     t          d¦  «        ¦  «         |                     |¦  «         |                     t          d¦  «        ¦  «         |                      |                     ¦   «         |¦  «         d S )Nr   g®Gáz®ï?r3   r&   )r   r   r–   r   Úbest)r   r˜   Úbest_hypothesiss      r"   Ú%test_best_returns_the_best_hypothesisz/TestStack.test_best_returns_the_best_hypothesis  sˆ   € å�q‘	”	ˆÝ% dÑ+Ô+ˆð 	�
Š
•;˜sÑ#Ô#Ñ$Ô$Ð$Ø�
Š
�?Ñ#Ô#Ð#Ø�
Š
•;˜sÑ#Ô#Ñ$Ô$Ð$ð 	×Ò˜Ÿš™œ Ñ7Ô7Ð7Ð7Ð7r$   c                 ót   — t          d¦  «        }|                      |                     ¦   «         d ¦  «         d S )Nr   )r   r   r¡   )r   r˜   s     r"   Ú*test_best_returns_none_when_stack_is_emptyz4TestStack.test_best_returns_none_when_stack_is_empty!  s3   € å�q‘	”	ˆð 	×Ò˜Ÿš™œ tÑ,Ô,Ð,Ð,Ð,r$   N)rn   ro   rp   rš   r�   rŸ   r£   r¥   rF   r$   r"   r“   r“   ê   s_   € € € € € ð3ð 3ð 3ð4ð 4ð 4ð
3ð 
3ð 
3ð8ð 8ð 8ð-ð -ð -ð -ð -r$   r“   )Ú__doc__ÚunittestÚcollectionsr   Úmathr   Únltk.translater   r   Únltk.translate.stack_decoderr   r   ÚTestCaser
   rs   r“   rF   r$   r"   ú<module>r­      s  ððð ð €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð à 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <ðPð Pð Pð Pð P�xÔ(ñ Pô Pð Pðf@8ð @8ð @8ð @8ð @8�XÔ&ñ @8ô @8ð @8ðF<-ð <-ð <-ð <-ð <-�Ô!ñ <-ô <-ð <-ð <-ð <-r$   