o
    rZh                     @   sR   d Z ddlZddlmZ ddlmZ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 5 training methods
    Ndefaultdict)AlignedSentIBMModel	IBMModel4	IBMModel5)AlignmentInfoc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestIBMModel5c                 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 d | | |jd d d | d S )Nr      schinkeneierspam   hameggsr   r   r   r   r   r   r   r   r   r   r   g      ?   )r   r   set_uniform_probabilitiesassertEqualhead_vacancy_tablenon_head_vacancy_table)selfsrc_classestrg_classescorpusmodel5Zexpected_prob r    Q/var/www/auris/lib/python3.10/site-packages/nltk/test/unit/translate/test_ibm5.py;test_set_uniform_vacancy_probabilities_of_max_displacements   s   
zITestIBMModel5.test_set_uniform_vacancy_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 d tj | |jd d d tj | |jd d d tj d S )Nr   r
   r   r   r   r   r   r   r   r      r   )r   r   r   r   r   r   ZMIN_PROBr   )r   r   r   r   r   r    r    r!   ;test_set_uniform_vacancy_probabilities_of_non_domain_values%   s   
 zITestIBMModel5.test_set_uniform_vacancy_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 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%}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      t dd S )Nc                   S      t tS Nr   floatr    r    r    r!   <lambda>I       GTestIBMModel5.test_prob_t_a_given_s.<locals>.<lambda>.<locals>.<lambda>r   r    r    r    r!   r7   I       z5TestIBMModel5.test_prob_t_a_given_s.<locals>.<lambda>g
ףp=
?c                   S   r2   )Nc                   S   r3   r4   r5   r    r    r    r!   r7   Q   r8   r9   r   r    r    r    r!   r7   Q   r:   gQ?c                   S   r3   r4   r5   r    r    r    r!   r7   U   r8   g\(\?r+   r&   r,   r)   r-   r.   r'   r/   r*   r   c                   S   r3   r4   r5   r    r    r    r!   r7   ]   r8   gGz?r(   g+?gK7A`?)p1translation_tablefertility_tabler   r   Zhead_distortion_tableZnon_head_distortion_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   r=   r>   Zprobabilitiesr   ZprobabilityZnull_generationZ	fertilityZlexical_translationZvacancyZexpected_probabilityr    r    r!   test_prob_t_a_given_s:   sl   
z#TestIBMModel5.test_prob_t_a_given_sc              	      s   t dd d d t dd d d t dd d d t dd d d t dd d d g}tj}d}t|d d| ||| || d	 t|d
 dd d tdgdgg}tj}t fddt_t|dd d }||}| 	t
|d |t_d S )Nr
   r
   r
   r   r   r
   r   r   r   r   g?g      ?r
   g      ?g?g333333?)rB   rC   rD   rE   rF   abc                    s
    | j  S r4   )Z	alignment)rG   modelZscoresr    r!   r7      s   
 z*TestIBMModel5.test_prune.<locals>.<lambda>r   r0   )r   r   ZMIN_SCORE_FACTORminr   r   Zmodel4_prob_t_a_given_sstaticmethodZpruner   len)r   Zalignment_infosZ
min_factorZ
best_scorer   Zoriginal_prob_functionr   Zpruned_alignmentsr    rJ   r!   
test_prune   s.   



zTestIBMModel5.test_pruneN)__name__
__module____qualname__r"   r%   rA   rN   r    r    r    r!   r	      s
    Er	   )__doc__Zunittestcollectionsr   Znltk.translater   r   r   r   Znltk.translate.ibm_modelr   ZTestCaser	   r    r    r    r!   <module>   s    