
    g                     f    d Z ddlZddlmZ ddlmZmZmZ ddlm	Z	  G d dej                        Zy)z(
Tests for IBM Model 4 training methods
    Ndefaultdict)AlignedSentIBMModel	IBMModel4)AlignmentInfoc                       e Zd Zd Zd Zd Zy)TestIBMModel4c                    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   |       | j                  |j
                  d   d   |       y )Nr      schinkeneierspam   hameggsr   r   r   r   r   r   r   r   r   r   r   gUUUUUU?   )r   r   set_uniform_probabilitiesassertEqualhead_distortion_tablenon_head_distortion_table)selfsrc_classestrg_classescorpusmodel4expected_probs         W/var/www/openai/venv/lib/python3.12/site-packages/nltk/test/unit/translate/test_ibm4.py>test_set_uniform_distortion_probabilities_of_max_displacementszLTestIBMModel4.test_set_uniform_distortion_probabilities_of_max_displacements   s    #$a;A6)IJ866:JK
 61k;? 	((0
 , 	55a8;A>N55b9!<Q?O99!<Q?O99"=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   t
        j                         | j                  |j                  d   d   t
        j                         y )Nr   r   r   r   r   r   r   r   r   r      d   )r   r   r   r   r   r   MIN_PROBr   )r   r   r   r    r!   s        r#   >test_set_uniform_distortion_probabilities_of_non_domain_valueszLTestIBMModel4.test_set_uniform_distortion_probabilities_of_non_domain_values%   s   #$a;A6)IJ866:JK
 61k;? 	((0 	55a8;A>@Q@QR55c:1=a@(BSBST99!<Q?ARARS99#>qA8CTCTUr%   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<   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$}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   r'   )r0   r.   r,   r-   r/   )r   r5   r1   r2   r3   r4   )r   r   r'   r   r      r6   UNUSEDr6      c                      t        d       S )Nc                       t        t              S Nr   float r%   r#   <lambda>zGTestIBMModel4.test_prob_t_a_given_s.<locals>.<lambda>.<locals>.<lambda>H   s	    E(:r%   r   r>   r%   r#   r?   z5TestIBMModel4.test_prob_t_a_given_s.<locals>.<lambda>H   s
    K :;r%   g
ףp=
?c                       t        t              S r;   r<   r>   r%   r#   r?   z5TestIBMModel4.test_prob_t_a_given_s.<locals>.<lambda>O   s	    E8Jr%   gQ?c                       t        t              S r;   r<   r>   r%   r#   r?   z5TestIBMModel4.test_prob_t_a_given_s.<locals>.<lambda>R   s	    E0Br%   g\(\?r1   r,   r2   r/   r3   r4   r-   r5   r0   r   c                       t        t              S r;   r<   r>   r%   r#   r?   z5TestIBMModel4.test_prob_t_a_given_s.<locals>.<lambda>Z   s	    k%.@r%   gGz?r.   g+?gK7A`?)p1translation_tabler   r   fertility_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   rE   rF   probabilitiesr!   probabilitynull_generation	fertilitylexical_translation
distortionexpected_probabilitys                      r#   test_prob_t_a_given_sz#TestIBMModel4.test_prob_t_a_given_s9   sy   HB+,AaTUV11aqQRSlL9:&!F\!J%S1#sBaV,	
 !,;!
 -1a &q))-a #A&*.b!!$Q')-a #A&$/0J$K!*.!!$Q''(BC(,#u%,0&!&)(,$%+/% (:>(#$677;% !34%&@A$(5!%)6"#'4 %)6"16-.#'4  !2%:)B.#
 61k;N --n= c%m+c%m;I	E9
i'*==
J 	 	{A.6JA0NOr%   N)__name__
__module____qualname__r$   r*   rU   r>   r%   r#   r
   r
      s    Q0V(?Pr%   r
   )__doc__unittestcollectionsr   nltk.translater   r   r   nltk.translate.ibm_modelr   TestCaser
   r>   r%   r#   <module>r_      s1     # ; ; 2lPH%% lPr%   