o
    rZh                     @   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   Q/var/www/auris/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   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      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    r5   H   s    z5TestIBMModel4.test_prob_t_a_given_s.<locals>.<lambda>g
ףp=
?c                   S   r1   r2   r3   r   r   r   r    r5   O   r6   gQ?c                   S   r1   r2   r3   r   r   r   r    r5   R   r6   g\(\?r*   r%   r+   r(   r,   r-   r&   r.   r)   r   c                   S   r1   r2   r3   r   r   r   r    r5   Z   r6   gGz?r'   g+?gK7A`?)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   r9   r:   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    