
    g$                     b    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
y)z4
Tests for common methods of IBM translation models
    Ndefaultdict)AlignedSentIBMModel)AlignmentInfoc                   d    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y)TestIBMModel)j'aimebienjambonilovehamc                    t        g dg d      t        g dg d      t        g dg      g}t        |      }| j                  t        |j                        d       | j                  t        |j
                        d       y )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/openai/venv/lib/python3.12/site-packages/nltk/test/unit/translate/test_ibm_model.py!test_vocabularies_are_initializedz.TestIBMModel.test_vocabularies_are_initialized   sq    79PQ.0IJVH%
 -.	Y00115Y00115    c                     g }t        |      }| j                  t        |j                        d       | j                  t        |j                        d       y )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   sI    -.	Y00115Y00115r+   c                 v   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                  |      }| j                  |j                  dd  d       | j                  |j                  g dgdgg dgg       y )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                       yNg? r<   r+   r)   <lambda>zoTestIBMModel.test_best_model2_alignment.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>.       PSr+   r   r<   r+   r)   r=   z]TestIBMModel.test_best_model2_alignment.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>.   	    K<Tr+   r   r<   r+   r)   r=   zKTestIBMModel.test_best_model2_alignment.<locals>.<lambda>.<locals>.<lambda>.   
    4T(Ur+   r   r<   r+   r)   r=   z9TestIBMModel.test_best_model2_alignment.<locals>.<lambda>.   
    K UVr+   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.N

 T44qQddRVWT1AN

 &V
 RL	&7	#$3	! 00? 	))!"-y9QC!b1#'>?r+   c           	      z   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      }| j                  |j                  dd  d       | j                  |j                  g dgg g ddgg       y )Nr0   r1   r2   r3   r   r4   r5   r6   r   c                      t        d       S )Nc                      t        d       S )Nc                      t        d       S )Nc                       y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.N
 T44qQddRVWT1AN

 &V
 RL	&7	#$3	! 001E))!"-y9QCR!Q'@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                  |      }| j                  |j                  dd  d       | j                  |j                  dgdgdgddgdgg       y )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                       y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,,
 T44qQ3$dS1cQcJddRVWT1AN
 &V
 RL	&7	#$3	! 00? 	))!"-/ABaS1#1vs'CDr+   c                     t        t        j                  g       }t        g       }|j	                  |      }| j                  |j                  dd  d       | j                  |j                  g dg       y )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   sd    #L$D$DbIRL	 00? 	))!"-y9	{3r+   c                     t        g t        j                        }t        g       }|j	                  |      }| j                  |j                  dd  d       | j                  |j                  g g g g g g       y )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}   sm    #B(H(HIRL	 00? 	))!"-r2BB';<r+   c           	          t        dddg g dgdgg      }t        g       }|j                  |      }t               }|D ]  }|j	                  |j
                          h d}| j                  ||       y )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#	
 RL	 ))&1	 "e!H##H$6$67 "
 	,.ABr+   c           	      B   t        dddg g dgdgg      }t        g       }|j                  |      }|D ]&  }|j                  dk(  r|}|j                  dk(  s%|}( | j	                  j
                  g g ddgg g       | j	                  j
                  g g dgdgg       y )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#	
 RL	 ))&1	 "H!!Y."*##y0$,!	 " 	..R!Q0DE*002rA32DEr+   c           	          t        dddg g dgdgg      }t        g       }|j                  |d      }t               }|D ]  }|j	                  |j
                          h d}| j                  ||       y )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#	
 RL	 ))&!4	 "e!H##H$6$67 "
 	,.ABr+   c                     t        dd d d       }d }d }t        g       }||_        ||_        |j	                  |      }| j                  |j                  d       y )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   sq    {{i'!)T4>!)T4>  	)!)T4>!)T4>  5Lr+   c                 J    dddddd}|j                  | 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   s/    K ??1;;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   sc    ))T4F		6 RL	 0	%:	" #,,->? 	119=r+   c                     t        t        j                  t        j                        }t	        g       }d |_        |j                  |      \  }}| j                  t        |      d       y )Nc                      y)NgMbP?r<   )xs    r)   r=   z*TestIBMModel.test_sample.<locals>.<lambda>  s    ur+   =   )	r   r	   rF   rG   r   r   sampler!   r"   )r&   rN   r(   samplesr   s        r)   test_samplezTestIBMModel.test_sample  s]    #,,l.N.N
 RL	%4	" #,"2"2="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	      sR    :.	66@4B0E:
4
=C@F.C8#>J+r+   r	   )__doc__unittestcollectionsr   nltk.translater   r   nltk.translate.ibm_modelr   TestCaser	   r<   r+   r)   <module>r      s,     # 0 2A+8$$ A+r+   