
    zIf%                     `    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ej	                  Z
dS )z4
Tests for common methods of IBM translation models
    Ndefaultdict)AlignedSentIBMModel)AlignmentInfoc                   f    e Zd Zg dZg 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 )TestIBMModel)j'aimebienjambonilovehamc                 4   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)undeuxtrois)fiver   six)quatrecinqr   sept      )r   r   assertEquallen	src_vocab	trg_vocabselfparallel_corpora	ibm_models      [/var/www/piapp/venv/lib/python3.11/site-packages/nltk/test/unit/translate/test_ibm_model.py!test_vocabularies_are_initializedz.TestIBMModel.test_vocabularies_are_initialized   s    7779P9P9PQQ...0I0I0IJJVH%%
 -..	Y0111555Y011155555    c                     g }t          |          }|                     t          |j                  d           |                     t          |j                  d           d S )N   r   )r   r!   r"   r#   r$   r%   s      r)   9test_vocabularies_are_initialized_even_with_empty_corporazFTestIBMModel.test_vocabularies_are_initialized_even_with_empty_corpora   s^    -..	Y0111555Y011155555r+   c                    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
           }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                  "    t          d           S )Nc                  "    t          d           S )Nc                  "    t          d           S )Nc                      dS Ng? r<   r+   r)   <lambda>zoTestIBMModel.test_best_model2_alignment.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>.       PS r+   r   r<   r+   r)   r=   z]TestIBMModel.test_best_model2_alignment.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>.       K<T<T r+   r   r<   r+   r)   r=   zKTestIBMModel.test_best_model2_alignment.<locals>.<lambda>.<locals>.<lambda>.       4T4T(U(U r+   r   r<   r+   r)   r=   z9TestIBMModel.test_best_model2_alignment.<locals>.<lambda>.       K U UVV r+   r-   )r-         rB      r   r	    _TestIBMModel__TEST_TRG_SENTENCE _TestIBMModel__TEST_SRC_SENTENCEr   r   translation_tablealignment_tablebest_model2_alignmentr!   	alignmentceptsr&   sentence_pairrH   rI   r(   a_infos         r)   test_best_model2_alignmentz'TestIBMModel.test_best_model2_alignment"   s    #,l.N
 

 T44qQQddRVWWT1ANN
 

 &VV
 
 RLL	&7	#$3	! 00?? 	)!""-y999QC!b1#'>?????r+   c           	         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
           }t          g           }||_        ||_        |                    |dd          }| 	                    |j
        dd          d           | 	                    |j        g dgg g ddgg           d S )Nr0   r1   r2   r3   r   r4   r5   r6   r   c                  "    t          d           S )Nc                  "    t          d           S )Nc                  "    t          d           S )Nc                      dS r;   r<   r<   r+   r)   r=   zTestIBMModel.test_best_model2_alignment_does_not_change_pegged_alignment.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>G   r>   r+   r   r<   r+   r)   r=   z~TestIBMModel.test_best_model2_alignment_does_not_change_pegged_alignment.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>G   r?   r+   r   r<   r+   r)   r=   zlTestIBMModel.test_best_model2_alignment_does_not_change_pegged_alignment.<locals>.<lambda>.<locals>.<lambda>G   r@   r+   r   r<   r+   r)   r=   zZTestIBMModel.test_best_model2_alignment_does_not_change_pegged_alignment.<locals>.<lambda>G   rA   r+   rB   rC   r-   )r-   rC   rC   rD   rE   rM   s         r)   ;test_best_model2_alignment_does_not_change_pegged_alignmentzHTestIBMModel.test_best_model2_alignment_does_not_change_pegged_alignment<   s    #,l.N
 
 T44qQQddRVWWT1ANN
 

 &VV
 
 RLL	&7	#$3	! 001EE)!""-y999QCR!Q'@AAAAAr+   c           
         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           }t	          g           }||_        ||_        |                    |          }|                     |j	        dd          d           |                     |j
        dgdgdgddgdgg           d S )N)r   really,rX   r   r   r0   r1   r2   r3   r   r4   r5   g
ףp=
?g333333?ffffff?r6   )r   rX   rY   r   r   c                  "    t          d           S )Nc                  "    t          d           S )Nc                  "    t          d           S )Nc                      dS r;   r<   r<   r+   r)   r=   zTestIBMModel.test_best_model2_alignment_handles_fertile_words.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>c   r>   r+   r   r<   r+   r)   r=   zsTestIBMModel.test_best_model2_alignment_handles_fertile_words.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>c   r?   r+   r   r<   r+   r)   r=   zaTestIBMModel.test_best_model2_alignment_handles_fertile_words.<locals>.<lambda>.<locals>.<lambda>c   r@   r+   r   r<   r+   r)   r=   zOTestIBMModel.test_best_model2_alignment_handles_fertile_words.<locals>.<lambda>c   rA   r+   r-   )r-   rD   r   rD   rB   rC   rD      rB   rC   r    )r   r	   rG   r   r   rH   rI   rJ   r!   rK   rL   rM   s         r)   0test_best_model2_alignment_handles_fertile_wordsz=TestIBMModel.test_best_model2_alignment_handles_fertile_wordsT   s(   #999,
 
 T44qQQ3$dSS1cQcJJddRVWWT1ANN
 
 &VV
 
 RLL	&7	#$3	! 00?? 	)!""-/ABBBaS1#1vs'CDDDDDr+   c                    t          t          j        g           }t          g           }|                    |          }|                     |j        dd          d           |                     |j        g dg           d S )Nr-   )r   r   r   )r-   rB   rD   )r   r	   rF   r   rJ   r!   rK   rL   r&   rN   r(   rO   s       r)   5test_best_model2_alignment_handles_empty_src_sentencezBTestIBMModel.test_best_model2_alignment_handles_empty_src_sentenceq   s|    #L$DbIIRLL	 00?? 	)!""-y999			{33333r+   c                    t          g t          j                  }t          g           }|                    |          }|                     |j        dd          d           |                     |j        g g g g g g           d S )Nr-   r<   )r   r	   rG   r   rJ   r!   rK   rL   rb   s       r)   5test_best_model2_alignment_handles_empty_trg_sentencezBTestIBMModel.test_best_model2_alignment_handles_empty_trg_sentence}   s    #B(HIIRLL	 00?? 	)!""-r222BB';<<<<<r+   c           	         t          dddg g dgdgg          }t          g           }|                    |          }t                      }|D ]}|                    |j                   h d}|                     ||           d S )Nr   rD   rB   Ndesu   œufsvertsUNUSEDgreeneggsrB   r-   >   r   rB   rD   r   rD   r   r   rD   r-   r   r   rB   r   r-   rB   r   rB   rB   r   rD   rD   rg   r   r   neighboringsetaddrK   r!   r&   rO   r(   	neighborsneighbor_alignmentsneighborexpected_alignmentss          r)   *test_neighboring_finds_neighbor_alignmentsz7TestIBMModel.test_neighboring_finds_neighbor_alignments   s    +'aS1#	
 
 RLL	 ))&11	 "ee! 	8 	8H##H$67777
 
 
 	,.ABBBBBr+   c           	      B   t          dddg g dgdgg          }t          g           }|                    |          }|D ]}|j        dk    r|}|j        dk    r|}|                     |j        g g ddgg g           |                     |j        g g dgdgg           d S )Nrg   rh   rk   rB   r-   rt   )r   r   rw   rK   r!   rL   )r&   rO   r(   r{   r}   moved_alignmentswapped_alignments          r)   -test_neighboring_sets_neighbor_alignment_infoz:TestIBMModel.test_neighboring_sets_neighbor_alignment_info   s    +'aS1#	
 
 RLL	 ))&11	 " 	- 	-H!Y.."*#y00$,!.R!Q0DEEE*02rA32DEEEEEr+   c           	         t          dddg g dgdgg          }t          g           }|                    |d          }t                      }|D ]}|                    |j                   h d}|                     ||           d S )Nrg   rh   rk   rB   r-   >   rr   rs   rt   rg   rv   rz   s          r)   8test_neighboring_returns_neighbors_with_pegged_alignmentzETestIBMModel.test_neighboring_returns_neighbors_with_pegged_alignment   s    +'aS1#	
 
 RLL	 ))&!44	 "ee! 	8 	8H##H$67777
 
 
 	,.ABBBBBr+   c                     t          dd d d           }d }d }t          g           }||_        ||_        |                    |          }|                     |j        d           d S )Nrg   c                     | 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 )Nrg   rt   r   r-   r-   ru   r   rC   rC   )rK   r   rx   )ajs     r)   neighboring_mockz5TestIBMModel.test_hillclimb.<locals>.neighboring_mock   s    {i''!)T4>>!)T4>>  	))!)T4>>!)T4>>  55Lr+   c                 H    dddddd}|                     | j        d          S )Ng      ?g333333?g?rZ   )rg   rt   r   ru   r   r5   )getrK   )r   prob_valuess     r)   prob_t_a_given_s_mockz:TestIBMModel.test_hillclimb.<locals>.prob_t_a_given_s_mock   s5     K ??1;555r+   r   )r   r   rw   prob_t_a_given_s	hillclimbr!   rK   )r&   initial_alignmentr   r   r(   best_alignments         r)   test_hillclimbzTestIBMModel.test_hillclimb   s    ))T4FF	 	 		6 	6 	6 RLL	 0	%:	" #,,->?? 	19=====r+   c                     t          t          j        t          j                  }t	          g           }d |_        |                    |          \  }}|                     t          |          d           d S )Nc                     dS )NgMbP?r<   )xs    r)   r=   z*TestIBMModel.test_sample.<locals>.<lambda>  s    u r+   =   )	r   r	   rF   rG   r   r   sampler!   r"   )r&   rN   r(   samplesr   s        r)   test_samplezTestIBMModel.test_sample  sq    #,l.N
 
 RLL	%4_	" #,"2"2="A"A 	Wr*****r+   N)__name__
__module____qualname__rG   rF   r*   r.   rP   rV   r`   rc   re   r   r   r   r   r   r<   r+   r)   r	   r	      s        :::...	6 	6 	66 6 6@ @ @4B B B0E E E:
4 
4 
4
= 
= 
=C C C@F F F.C C C8#> #> #>J+ + + + +r+   r	   )__doc__unittestcollectionsr   nltk.translater   r   nltk.translate.ibm_modelr   TestCaser	   r<   r+   r)   <module>r      s      # # # # # # 0 0 0 0 0 0 0 0 2 2 2 2 2 2A+ A+ A+ A+ A+8$ A+ A+ A+ A+ A+r+   