o
    i                     @   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model4expected_prob r    ]/var/www/edux/Edux_v2/venv/lib/python3.10/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   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   r0   r,   r-   r.   r/   )r   r	   r#   r   r      r1   UNUSEDr1      c                   S   s   t dd S )Nc                   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!   r8   H   s    z5TestIBMModel4.test_prob_t_a_given_s.<locals>.<lambda>g
ףp=
?c                   S   r4   r5   r6   r    r    r    r!   r8   O   r9   gQ?c                   S   r4   r5   r6   r    r    r    r!   r8   R   r9   g\(\?r,   r'   r-   r*   r.   r/   r(   r0   r+   r   c                   S   r4   r5   r6   r    r    r    r!   r8   Z   r9   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   r<   r=   probabilitiesr   probabilitynull_generation	fertilitylexical_translation
distortionexpected_probabilityr    r    r!   test_prob_t_a_given_s9   sd   	
z#TestIBMModel4.test_prob_t_a_given_sN)__name__
__module____qualname__r"   r&   rL   r    r    r    r!   r      s    r   )__doc__unittestcollectionsr   nltk.translater   r   r   nltk.translate.ibm_modelr   TestCaser   r    r    r    r!   <module>   s    