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 2 training methods
    Ndefaultdict)AlignedSentIBMModel	IBMModel2)AlignmentInfoc                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestIBMModel2c                 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      ?   gUUUUUU?)r   r   set_uniform_probabilitiesassertEqualalignment_tableselfcorpusmodel2 r   Q/var/www/auris/lib/python3.10/site-packages/nltk/test/unit/translate/test_ibm2.py(test_set_uniform_alignment_probabilities   s   

"z6TestIBMModel2.test_set_uniform_alignment_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 d S )Nr	   r
   r   r   r   r   c   r   r   r   r   )r   r   r   r   r   r   ZMIN_PROBr   r   r   r   =test_set_uniform_alignment_probabilities_of_non_domain_values   s   

 $zKTestIBMModel2.test_set_uniform_alignment_probabilities_of_non_domain_valuesc                 C   sZ  g d}g d}t ||g}tdd g| dg| 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|d d d d< d|d d d d< t|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UNUSEDc                   S      t tS Nr   floatr   r   r   r   <lambda>9       z5TestIBMModel2.test_prob_t_a_given_s.<locals>.<lambda>g\(\?r$   r   r%   r"   r&   r'   r    r(   r#   r	   c                   S      t dd S )Nc                   S   r0   )Nc                   S   r*   r+   r,   r   r   r   r   r.   B   r/   zYTestIBMModel2.test_prob_t_a_given_s.<locals>.<lambda>.<locals>.<lambda>.<locals>.<lambda>r   r   r   r   r   r.   B       zGTestIBMModel2.test_prob_t_a_given_s.<locals>.<lambda>.<locals>.<lambda>r   r   r   r   r   r.   B   r1   g
ףp=
?r   r   r)      r   r   r   gQ?gX?gh\?)	r   r   r   r   translation_tabler   Zprob_t_a_given_sr   round)r   Zsrc_sentenceZtrg_sentencer   Zalignment_infor3   r   r   ZprobabilityZlexical_translationZ	alignmentZexpected_probabilityr   r   r   test_prob_t_a_given_s-   sB   

z#TestIBMModel2.test_prob_t_a_given_sN)__name__
__module____qualname__r   r   r5   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    