o
    i                     @   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model5expected_prob r!   ]/var/www/edux/Edux_v2/venv/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   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   r1   r-   r.   r/   r0   )r   r
   r   r   r   r$   r$   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"   r:   I       z5TestIBMModel5.test_prob_t_a_given_s.<locals>.<lambda>g
ףp=
?c                   S   r5   )Nc                   S   r6   r7   r8   r!   r!   r!   r"   r:   Q   r;   r<   r   r!   r!   r!   r"   r:   Q   r=   gQ?c                   S   r6   r7   r8   r!   r!   r!   r"   r:   U   r;   g\(\?r-   r(   r.   r+   r/   r0   r)   r1   r,   r   c                   S   r6   r7   r8   r!   r!   r!   r"   r:   ]   r;   gGz?r*   g+?gK7A`?)p1translation_tablefertility_tabler   r   head_distortion_tablenon_head_distortion_tablealignment_tableg-?gtSU?gX?gW92?)r   r   r   r   prob_t_a_given_spowr   round)r   src_sentencetrg_sentencer   r   r   alignment_infor   r   r@   rA   probabilitiesr   probabilitynull_generation	fertilitylexical_translationvacancy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?)rS   rT   rU   rV   rW   abc                    s
    | j  S r7   )	alignment)rX   modelscoresr!   r"   r:      s   
 z*TestIBMModel5.test_prune.<locals>.<lambda>r   r2   )r   r   MIN_SCORE_FACTORminr   r   model4_prob_t_a_given_sstaticmethodpruner   len)r   alignment_infos
min_factor
best_scorer   original_prob_functionr   pruned_alignmentsr!   r\   r"   
test_prune   s.   



zTestIBMModel5.test_pruneN)__name__
__module____qualname__r#   r'   rR   ri   r!   r!   r!   r"   r	      s
    Er	   )__doc__unittestcollectionsr   nltk.translater   r   r   r   nltk.translate.ibm_modelr   TestCaser	   r!   r!   r!   r"   <module>   s    