a
    Kb]                     @   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 3 training methods
    Ndefaultdict)AlignedSentIBMModel	IBMModel3)AlignmentInfoc                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestIBMModel3c                 C   sx   t ddgg dt g dddgg}t|d}|| | |jd d d d	 d
 | |jd d	 d	 d d d S )Nhameggsschinkenr   Zeierspamr   r   r   r   r            g      ?   g      ?)r   r   set_uniform_probabilitiesassertEqualdistortion_tableselfcorpusmodel3 r   Alib/python3.9/site-packages/nltk/test/unit/translate/test_ibm3.py)test_set_uniform_distortion_probabilities   s    

z7TestIBMModel3.test_set_uniform_distortion_probabilitiesc                 C   s   t ddgg dt g dddgg}t|d}|| | |jd d d d tj | |jd	 d d d
 tj | |jd d	 d d
 tj d S )Nr	   r
   r   r   r   r   r   r   	   r   )r   r   r   r   r   r   ZMIN_PROBr   r   r   r   >test_set_uniform_distortion_probabilities_of_non_domain_values   s    

  zLTestIBMModel3.test_set_uniform_distortion_probabilities_of_non_domain_valuesc                 C   s  g d}g 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|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< 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)   ZUNUSEDr   r   r   r   r)      c                   S   s   t dd S )Nc                   S   s   t dd S )Nc                   S   s   t tS Nr   floatr   r   r   r   <lambda>;       zYTestIBMModel3.test_prob_t_a_given_s.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>r   r   r   r   r   r.   ;   r/   zGTestIBMModel3.test_prob_t_a_given_s.<locals>.<lambda>.<locals>.<lambda>r   r   r   r   r   r.   ;   r/   z5TestIBMModel3.test_prob_t_a_given_s.<locals>.<lambda>g
ףp=
?r   c                   S   s   t tS r+   r,   r   r   r   r   r.   D   r/   g\(\?r$   r   r%   r"   r&   r'   r    r(   r#   r	   c                   S   s   t tS r+   r,   r   r   r   r   r.   L   r/   gGz?r!   g+?gK7A`?)Zp1translation_tabler   fertility_tableZalignment_tableg-?gtSU?gX?gV紧?)r   r   r   r   Zprob_t_a_given_spowr   round)r   Zsrc_sentenceZtrg_sentencer   Zalignment_infor   r0   r1   Zprobabilitiesr   ZprobabilityZnull_generationZ	fertilityZlexical_translationZ
distortionZexpected_probabilityr   r   r   test_prob_t_a_given_s.   s^    
z#TestIBMModel3.test_prob_t_a_given_sN)__name__
__module____qualname__r   r   r4   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
   