
    Ng                     h    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dS )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dS )TestIBMModel5c                 (   dddd}dddd}t          ddgg d          t          g d	d
d
g          g}t          |d||          }|                    |           d}|                     |j        d         d         d         |           |                     |j        d         d         d         |           |                     |j        d         d         d         |           |                     |j        d         d         d         |           d S )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         ^/var/www/html/ai-engine/env/lib/python3.11/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   s2   #$a;;A66)I)I)IJJ88866:JKK
 61k;?? 	((000
 & 	215a8;]KKK226q9!<mLLL6q9!<Q?OOO6r:1=a@-PPPP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        d         d         d         t
          j                   |                     |j        d         d         d         t
          j                   |                     |j        d         d         d         t
          j                   |                     |j        d         d         d         t
          j                   |                     |j        d         d         d         t
          j                   d S )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%   sb   #$a;;A66)I)I)IJJ88866:JKK
 61k;?? 	((000 	215a8;X=NOOO226q9!<h>OPPP215a8;X=NOOO6q9!<Q?ARSSS6r:1=a@(BSTTTT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|||          }|                    |          }dt          d#d          z  t          d%d          z  }d&}d'}d(}||z  |z  |z  }|                     t          |d          t          |d                     d S ))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    E0B0B r&   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HHBBB+,AaTUVV11aqQRSSlL99:&!F\!J%S1#sBaV,	
 
 );;
 
 +/5!!$Q'*.5!!$Q'*.5!!$Q'*.5!!$Q'!,;;"
 "
 /3u%a(+'(B(BCC(,#u%,0&!&)(,$%+/% (:>(#$677;% !34%&@&@AA$(5!%)6"#'4 %)6"16-.#'4  !2."4&<%))-#	
 	
 61k;NN --n== c%mm+c%mm;I	E6i'*==G 	 	{A..6JA0N0NOOOOOr&   c           
      f   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           }|                    |          }| 	                    t          |          d           |t
          _        d S )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    VAK0 r&   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3&$d33&$d33&$d33&$d33
 /


S(!,,z9++c1
S(!,,s2
 
 secU++,!*!B,80000-
 -
	) 61dD11 #LL99 	.//333 -C	)))r&   N)__name__
__module____qualname__r%   r+   r[   rs   r?   r&   r$   r   r      sb        Q Q Q0U U U*CP CP CPJ!C !C !C !C !Cr&   r   )__doc__unittestcollectionsr   nltk.translater   r   r   r   nltk.translate.ibm_modelr	   TestCaser   r?   r&   r$   <module>r}      s      # # # # # # F F F F F F F F F F F F 2 2 2 2 2 2TC TC TC TC TCH% TC TC TC TC TCr&   