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 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   eierspamr   r   r   r   r            g      ?   g      ?)r   r   set_uniform_probabilitiesassertEqualdistortion_tableselfcorpusmodel3 r   ]/var/www/edux/Edux_v2/venv/lib/python3.10/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   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+   UNUSEDr   r   r   r   r+      c                   S      t dd S )Nc                   S   r.   )Nc                   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   r3   ;       zGTestIBMModel3.test_prob_t_a_given_s.<locals>.<lambda>.<locals>.<lambda>r   r   r   r   r   r3   ;   r5   z5TestIBMModel3.test_prob_t_a_given_s.<locals>.<lambda>g
ףp=
?r   c                   S   r/   r0   r1   r   r   r   r   r3   D   r4   g\(\?r&   r!   r'   r$   r(   r)   r"   r*   r%   r	   c                   S   r/   r0   r1   r   r   r   r   r3   L   r4   gGz?r#   g+?gK7A`?)p1translation_tabler   fertility_tablealignment_tableg-?gtSU?gX?gV紧?)r   r   r   r   prob_t_a_given_spowr   round)r   src_sentencetrg_sentencer   alignment_infor   r7   r8   probabilitiesr   probabilitynull_generation	fertilitylexical_translation
distortionexpected_probabilityr   r   r   test_prob_t_a_given_s.   s^   
z#TestIBMModel3.test_prob_t_a_given_sN)__name__
__module____qualname__r   r    rG   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    