
    g                     j    d Z ddlZddlmZ ddlmZmZmZmZ ddl	m
Z
  G d dej                        Zy)z(
Tests for IBM Model 5 training methods
    Ndefaultdict)AlignedSentIBMModel	IBMModel4	IBMModel5)AlignmentInfoc                   $    e Zd Zd Zd Zd Zd Zy)TestIBMModel5c                    dddd}dddd}t        ddgg d      t        g d	d
d
g      g}t        |d||      }|j                  |       d}| j                  |j                  d   d   d   |       | j                  |j                  d   d   d   |       | j                  |j
                  d   d   d   |       | j                  |j
                  d   d   d   |       y )Nr      schinkeneierspam   hameggsr   r   r   r   r   r   r   r   r   r   r   g      ?   )r   r   set_uniform_probabilitiesassertEqualhead_vacancy_tablenon_head_vacancy_table)selfsrc_classestrg_classescorpusmodel5expected_probs         W/var/www/openai/venv/lib/python3.12/site-packages/nltk/test/unit/translate/test_ibm5.py;test_set_uniform_vacancy_probabilities_of_max_displacementszITestIBMModel5.test_set_uniform_vacancy_probabilities_of_max_displacements   s    #$a;A6)IJ866:JK
 61k;? 	((0
 & 	2215a8;]K2226q9!<mL66q9!<Q?O66r:1=a@-P    c                    dddd}dddd}t        ddgg d      t        g d	d
d
g      g}t        |d||      }|j                  |       | j                  |j                  d   d   d   t
        j                         | j                  |j                  d   d   d   t
        j                         | j                  |j                  d   d   d   t
        j                         | j                  |j                  d   d   d   t
        j                         | j                  |j                  d   d   d   t
        j                         y )Nr   r   r   r   r   r   r   r   r   r      r   )r   r   r   r   r   r   MIN_PROBr   )r   r   r    r!   r"   s        r$   ;test_set_uniform_vacancy_probabilities_of_non_domain_valueszITestIBMModel5.test_set_uniform_vacancy_probabilities_of_non_domain_values%   s;   #$a;A6)IJ866:JK
 61k;? 	((0 	2215a8;X=N=NO2226q9!<h>O>OP2215a8;X=N=NO66q9!<Q?ARARS66r:1=a@(BSBSTr&   c                    g d}g d}dddddd}ddddddd	}t        ||      g}t        d
d g|z   dg|z   dgdgdgg dgddgg      }t        d       }d|d   d   d<   d|d   d   d<   d|d   d   d<   d|d   d   d<   t        d       }d|d   d   d<   t        d       }	d|	d   d<   d|	d   d<   d|	d   d <   d|	d   d<   d|	d   d<   d|	d   d<   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$}t        |d|||      }|j	                  |      }dt        d#d      z  t        d%d      z  }d&}d'}d(}||z  |z  |z  }| j                  t        |d      t        |d             y ))N)ichessejagern   räucherschinken)ilovetoeatsmokedr   r   r   r      r   )r1   r/   r-   r.   r0   )r   r6   r2   r3   r4   r5   )r   r   r   r   r   r(   r(   UNUSEDr(      c                      t        d       S )Nc                       t        t              S Nr   float r&   r$   <lambda>zGTestIBMModel5.test_prob_t_a_given_s.<locals>.<lambda>.<locals>.<lambda>I   	    E(:r&   r   r?   r&   r$   r@   z5TestIBMModel5.test_prob_t_a_given_s.<locals>.<lambda>I   
    K :;r&   g
ףp=
?c                      t        d       S )Nc                       t        t              S r<   r=   r?   r&   r$   r@   zGTestIBMModel5.test_prob_t_a_given_s.<locals>.<lambda>.<locals>.<lambda>Q   rA   r&   r   r?   r&   r$   r@   z5TestIBMModel5.test_prob_t_a_given_s.<locals>.<lambda>Q   rB   r&   gQ?c                       t        t              S r<   r=   r?   r&   r$   r@   z5TestIBMModel5.test_prob_t_a_given_s.<locals>.<lambda>U   s	    E0Br&   g\(\?r2   r-   r3   r0   r4   r5   r.   r6   r1   r   c                       t        t              S r<   r=   r?   r&   r$   r@   z5TestIBMModel5.test_prob_t_a_given_s.<locals>.<lambda>]   s	    k%.@r&   gGz?r/   g+?gK7A`?)p1translation_tablefertility_tabler   r   head_distortion_tablenon_head_distortion_tablealignment_tableg-?gtSU?gX?gW92?)r   r	   r   r   prob_t_a_given_spowr   round)r   src_sentencetrg_sentencer   r    r!   alignment_infor   r   rI   rJ   probabilitiesr"   probabilitynull_generation	fertilitylexical_translationvacancyexpected_probabilitys                      r$   test_prob_t_a_given_sz#TestIBMModel5.test_prob_t_a_given_s:   s   HB+,AaTUV11aqQRSlL9:&!F\!J%S1#sBaV,	
 );
 +/5!!$Q'*.5!!$Q'*.5!!$Q'*.5!!$Q'!,;"
 /3u%a(+'(BC(,#u%,0&!&)(,$%+/% (:>(#$677;% !34%&@A$(5!%)6"#'4 %)6"16-.#'4  !2."4&<%))-#	
 61k;N --n= c%m+c%m;I	E6i'*==G 	 	{A.6JA0NOr&   c           
         t        dd d d       t        dd d d       t        dd d d       t        dd d d       t        dd d d       g}t        j                  }d}t        |dz  d      |z  |||z  ||z  d	z  t        |d
z  d      dz  dt	        dgdg      g}t
        j                  }t        fd      t
        _        t        |dd d       }|j                  |      }| j                  t        |      d       |t
        _        y )Nr   r   r   r   r   r   r   r   r   r   g?g      ?r   g      ?g?g333333?)r]   r^   r_   r`   ra   abc                 "    | j                      S r<   )	alignment)rb   modelscoress     r$   r@   z*TestIBMModel5.test_prune.<locals>.<lambda>   s    VAKK0r&   r   r7   )r	   r   MIN_SCORE_FACTORminr   r   model4_prob_t_a_given_sstaticmethodpruner   len)	r   alignment_infos
min_factor
best_scorer!   original_prob_functionr"   pruned_alignmentsrg   s	           @r$   
test_prunezTestIBMModel5.test_prune   s"    &$d3&$d3&$d3&$d3&$d3
 //


S(!,z9++c1
S(!,s2
 secU+,!*!B!B,80-
	) 61dD1 #LL9 	./3 -C	)r&   N)__name__
__module____qualname__r%   r+   r[   rs   r?   r&   r$   r   r      s    Q0U*CPJ!Cr&   r   )__doc__unittestcollectionsr   nltk.translater   r   r   r   nltk.translate.ibm_modelr	   TestCaser   r?   r&   r$   <module>r}      s1     # F F 2TCH%% TCr&   