o
    rZh$                     @   sJ   d Z ddlZddlmZ ddlmZmZ ddlmZ G dd dej	Z
dS )z4
Tests for common methods of IBM translation models
    Ndefaultdict)AlignedSentIBMModel)AlignmentInfoc                   @   s|   e Zd Zg dZg dZdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd ZdS )TestIBMModel)j'aimebienjambonilovehamc                 C   s^   t g dg dt g dg dt g dgg}t|}| t|jd | t|jd d S )N)onetwothreefour)unZdeuxZtrois)fiver   six)ZquatreZcinqr   Zsept      )r   r   assertEquallen	src_vocab	trg_vocabselfZparallel_corpora	ibm_model r    V/var/www/auris/lib/python3.10/site-packages/nltk/test/unit/translate/test_ibm_model.py!test_vocabularies_are_initialized   s   
z.TestIBMModel.test_vocabularies_are_initializedc                 C   s4   g }t |}| t|jd | t|jd d S )N   r   )r   r   r   r   r   r   r    r    r!   9test_vocabularies_are_initialized_even_with_empty_corpora   s   zFTestIBMModel.test_vocabularies_are_initialized_even_with_empty_corporac                 C   s   t tjtj}ddddddddddddddddddd	}td
d }tg }||_||_||}| 	|j
dd  d | 	|jg dgdgg dgg d S )N?皙?{Gz?Q?r   r   r	   r
   r   N{Gz?Gz?r   c                   S      t dd S )Nc                   S   r,   )Nc                   S   r,   )Nc                   S      dS Ng?r    r    r    r    r!   <lambda>.       zoTestIBMModel.test_best_model2_alignment.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>r   r    r    r    r!   r/   .       z]TestIBMModel.test_best_model2_alignment.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>r   r    r    r    r!   r/   .   r1   zKTestIBMModel.test_best_model2_alignment.<locals>.<lambda>.<locals>.<lambda>r   r    r    r    r!   r/   .   r1   z9TestIBMModel.test_best_model2_alignment.<locals>.<lambda>r#   )r#         r2      r   r    _TestIBMModel__TEST_TRG_SENTENCE _TestIBMModel__TEST_SRC_SENTENCEr   r   translation_tablealignment_tablebest_model2_alignmentr   	alignmentceptsr   sentence_pairr8   r9   r   a_infor    r    r!   test_best_model2_alignment"   s    
"z'TestIBMModel.test_best_model2_alignmentc              	   C   s   t tjtj}ddddddddddddddddddd	}td
d }tg }||_||_||dd}| 	|j
dd  d | 	|jg dgg g ddgg d S )Nr%   r&   r'   r(   r   r)   r*   r+   r   c                   S   r,   )Nc                   S   r,   )Nc                   S   r,   )Nc                   S   r-   r.   r    r    r    r    r!   r/   G   r0   zTestIBMModel.test_best_model2_alignment_does_not_change_pegged_alignment.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>r   r    r    r    r!   r/   G   r1   z~TestIBMModel.test_best_model2_alignment_does_not_change_pegged_alignment.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>r   r    r    r    r!   r/   G   r1   zlTestIBMModel.test_best_model2_alignment_does_not_change_pegged_alignment.<locals>.<lambda>.<locals>.<lambda>r   r    r    r    r!   r/   G   r1   zZTestIBMModel.test_best_model2_alignment_does_not_change_pegged_alignment.<locals>.<lambda>r2   r3   r#   )r#   r3   r3   r4   r5   r=   r    r    r!   ;test_best_model2_alignment_does_not_change_pegged_alignment<   s    "zHTestIBMModel.test_best_model2_alignment_does_not_change_pegged_alignmentc              
   C   s   t g dtj}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d}tdd }tg }||_||_||}| |j	dd  d | |j
dgdgdgddgdgg d S )N)r   really,rB   r   r   r%   r&   r'   r(   r   r)   r*   g
ףp=
?g333333?ffffff?r+   )r   rB   rC   r   r   c                   S   r,   )Nc                   S   r,   )Nc                   S   r,   )Nc                   S   r-   r.   r    r    r    r    r!   r/   c   r0   zTestIBMModel.test_best_model2_alignment_handles_fertile_words.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>r   r    r    r    r!   r/   c   r1   zsTestIBMModel.test_best_model2_alignment_handles_fertile_words.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>r   r    r    r    r!   r/   c   r1   zaTestIBMModel.test_best_model2_alignment_handles_fertile_words.<locals>.<lambda>.<locals>.<lambda>r   r    r    r    r!   r/   c   r1   zOTestIBMModel.test_best_model2_alignment_handles_fertile_words.<locals>.<lambda>r#   )r#   r4   r   r4   r2   r3   r4      r2   r3   r   )r   r   r7   r   r   r8   r9   r:   r   r;   r<   r=   r    r    r!   0test_best_model2_alignment_handles_fertile_wordsT   s&   
(z=TestIBMModel.test_best_model2_alignment_handles_fertile_wordsc                 C   sL   t tjg }tg }||}| |jdd  d | |jg dg d S )Nr#   )r   r   r   )r#   r2   r4   )r   r   r6   r   r:   r   r;   r<   r   r>   r   r?   r    r    r!   5test_best_model2_alignment_handles_empty_src_sentenceq   s
   
zBTestIBMModel.test_best_model2_alignment_handles_empty_src_sentencec                 C   sP   t g tj}tg }||}| |jdd  d | |jg g g g g g d S )Nr#   r    )r   r   r7   r   r:   r   r;   r<   rG   r    r    r!   5test_best_model2_alignment_handles_empty_trg_sentence}   s
   
zBTestIBMModel.test_best_model2_alignment_handles_empty_trg_sentencec                 C   s`   t dddg g dgdgg}tg }||}t }|D ]}||j qh d}| || d S )Nr   r4   r2   NZdesu   œufsZvertsZUNUSEDgreeneggsr2   r#   >   )r   r4   r#   )r   r4   r   )r   r2   r4   r   r4   r4   r   r   r2   r   r#   r2   r   r2   r2   rJ   r   r   neighboringsetaddr;   r   r   r?   r   	neighborsZneighbor_alignmentsneighborZexpected_alignmentsr    r    r!   *test_neighboring_finds_neighbor_alignments   s   
z7TestIBMModel.test_neighboring_finds_neighbor_alignmentsc                 C   s   t dddg g dgdgg}tg }||}|D ]}|jdkr"|}q|jdkr)|}q| |jg g ddgg g | |jg g dgdgg d S )NrJ   rK   rL   r2   r#   rR   )r   r   rT   r;   r   r<   )r   r?   r   rX   rY   Zmoved_alignmentZswapped_alignmentr    r    r!   -test_neighboring_sets_neighbor_alignment_info   s    


z:TestIBMModel.test_neighboring_sets_neighbor_alignment_infoc                 C   sb   t dddg g dgdgg}tg }||d}t }|D ]}||j qh d}| || d S )NrJ   rK   rL   r2   r#   >   rQ   rR   rP   rJ   rS   rW   r    r    r!   8test_neighboring_returns_neighbors_with_pegged_alignment   s   	zETestIBMModel.test_neighboring_returns_neighbors_with_pegged_alignmentc                 C   sN   t dd d d }dd }dd }tg }||_||_||}| |jd d S )NrJ   c                 S   sR   | j dkrtdd d d tdd d d hS | j dkr&tdd d d tdd d d hS t S )NrJ   rR   r   r#   r#   rO   r   r3   r3   )r;   r   rU   )ajr    r    r!   neighboring_mock   s   

z5TestIBMModel.test_hillclimb.<locals>.neighboring_mockc                 S   s   dddddd}| | jdS )Ng      ?g333333?g?rD   )rJ   rR   r]   rO   r^   r*   )getr;   )r_   Zprob_valuesr    r    r!   prob_t_a_given_s_mock   s   z:TestIBMModel.test_hillclimb.<locals>.prob_t_a_given_s_mockr^   )r   r   rT   prob_t_a_given_sZ	hillclimbr   r;   )r   Zinitial_alignmentra   rc   r   best_alignmentr    r    r!   test_hillclimb   s   

zTestIBMModel.test_hillclimbc                 C   sB   t tjtj}tg }dd |_||\}}| t|d d S )Nc                 S   r-   )NgMbP?r    )xr    r    r!   r/     r0   z*TestIBMModel.test_sample.<locals>.<lambda>=   )	r   r   r6   r7   r   rd   sampler   r   )r   r>   r   Zsamplesre   r    r    r!   test_sample  s   
zTestIBMModel.test_sampleN)__name__
__module____qualname__r7   r6   r"   r$   r@   rA   rF   rH   rI   rZ   r[   r\   rf   rj   r    r    r    r!   r      s     %r   )__doc__Zunittestcollectionsr   Znltk.translater   r   Znltk.translate.ibm_modelr   ZTestCaser   r    r    r    r!   <module>   s    