a
    KbY                     @   sN   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 dej
ZdS )z(
Tests for IBM Model 4 training methods
    Ndefaultdict)AlignedSentIBMModel	IBMModel4)AlignmentInfoc                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestIBMModel4c                 C   s   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 | | |jd d | d S )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model4Zexpected_prob r   Alib/python3.9/site-packages/nltk/test/unit/translate/test_ibm4.py>test_set_uniform_distortion_probabilities_of_max_displacements   s    
zLTestIBMModel4.test_set_uniform_distortion_probabilities_of_max_displacementsc                 C   s   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 tj | |jd d tj d S )Nr   r	   r
   r   r   r   r   r   r   r      d   )r   r   r   r   r   r   ZMIN_PROBr   )r   r   r   r   r   r   r   r    >test_set_uniform_distortion_probabilities_of_non_domain_values%   s    
zLTestIBMModel4.test_set_uniform_distortion_probabilities_of_non_domain_valuesc                 C   s  g d}g d}dddddd}ddddddd	}t ||g}td
d g| dg| 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 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 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%}t|d|||}||}dtd$d td&d }d'}d(}d)}|| | | }| t|dt|d d S )*N)ichessejagern   räucherschinken)ilovetoeatsmokedr   r   r	   r   r   r"   )r)   r'   r%   r&   r(   )r   r.   r*   r+   r,   r-   )r   r	   r"   r   r      r/   ZUNUSEDr/      c                   S   s   t dd S )Nc                   S   s   t tS Nr   floatr   r   r   r    <lambda>H       zGTestIBMModel4.test_prob_t_a_given_s.<locals>.<lambda>.<locals>.<lambda>r   r   r   r   r    r4   H   r5   z5TestIBMModel4.test_prob_t_a_given_s.<locals>.<lambda>g
ףp=
?c                   S   s   t tS r1   r2   r   r   r   r    r4   O   r5   gQ?c                   S   s   t tS r1   r2   r   r   r   r    r4   R   r5   g\(\?r*   r%   r+   r(   r,   r-   r&   r.   r)   r   c                   S   s   t tS r1   r2   r   r   r   r    r4   Z   r5   gGz?r'   g+?gK7A`?)Zp1translation_tabler   r   fertility_tableZalignment_tableg-?gtSU?gX?gW92?)r   r   r   r   Zprob_t_a_given_spowr   round)r   Zsrc_sentenceZtrg_sentencer   r   r   Zalignment_infor   r   r7   r8   Zprobabilitiesr   ZprobabilityZnull_generationZ	fertilityZlexical_translationZ
distortionZexpected_probabilityr   r   r    test_prob_t_a_given_s9   sd    	
z#TestIBMModel4.test_prob_t_a_given_sN)__name__
__module____qualname__r!   r$   r;   r   r   r   r    r      s   r   )__doc__Zunittestcollectionsr   Znltk.translater   r   r   Znltk.translate.ibm_modelr   ZTestCaser   r   r   r   r    <module>   s
   