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 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   Q/var/www/auris/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   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      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   r0   ;       zGTestIBMModel3.test_prob_t_a_given_s.<locals>.<lambda>.<locals>.<lambda>r   r   r   r   r   r0   ;   r2   z5TestIBMModel3.test_prob_t_a_given_s.<locals>.<lambda>g
ףp=
?r   c                   S   r,   r-   r.   r   r   r   r   r0   D   r1   g\(\?r$   r   r%   r"   r&   r'   r    r(   r#   r	   c                   S   r,   r-   r.   r   r   r   r   r0   L   r1   gGz?r!   g+?gK7A`?)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   r4   r5   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   r8   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    