o
    i@%                     @   s  d dl Z d dlZd dlmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ ddlmZ ejd	d
 Zejdd Zejdd Zejdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Z dS )-    N)registryutilEnglish)AttributeRuler)Doc)Example   )make_tempdirc                   C   s   t  S Nr    r   r   \/home/ubuntu/.local/lib/python3.10/site-packages/spacy/tests/pipeline/test_attributeruler.pynlp   s   r   c                   C   L   ddigddiggddddddiggd	d
idddiggddiddgS NORTHa
irrelevanttheCase=Nom|Number=PlurLEMMAMORPHpatternsattrstestr   catr   Case=Nom|Number=Singr   )r   r   indexr   r   r   r   r   pattern_dicts      
r    c                   C   s   dddddddS )NPUNCTperi)POS	PunctTypecomm).,r   r   r   r   r   tag_map$   s   r)   c                   C   s   ddddddiiS )NDTr   DETr   Nom)r$   r   Caser   r   r   r   r   morph_rules,   s   r.   c                 C   s   t | jg dg dd}| |}tt|D ]/}|dkr1|| jdks%J t|| jdks0J q|| jdks:J t|| jdksEJ qd S )NThisisr   r   r'   r*   VBZr*   NNr'   wordstags   r"   zPunctType=peri )r   vocabrangelenpos_strmorphrulerdocir   r   r   check_tag_map1   s   rD   c                 C   s   t | jg dg dd}| |}tt|D ]8}|dkr1|| jdks%J t|| jdks0J q|d jdks:J |d jdksCJ t|d jdksNJ qd S )	N)r0   r1   r   r   r'   r2   r5   r	   r9   r+   r   zCase=Nom)r   r:   r;   r<   r=   r>   r?   lemma_r@   r   r   r   check_morph_rulesA   s   rF   c                 C   s   |  d}|D ]
}|jdi | q| d}|d jdksJ t|d jdks*J |d jdks3J t|d jdks>J |d	sEJ |d
sLJ d S )Nattribute_rulerThis is a test.r	   r   r      r   r   r   r   r   )add_pipeaddrE   r>   r?   has_annotation)r   r    r   prB   r   r   r   test_attributeruler_initR   s   
rN   c                 C   sP  |  d}|jdd |d | d}|d jdksJ t|d jdks&J |d	 jd
ks/J t|d	 jdks:J |dsAJ |dsHJ | d tddd }dddii| j	d d d< |  d |   | d}|d jdksyJ t|d jdksJ |d	 jd
ksJ t|d	 jdksJ |dsJ |dsJ d S )NrG   c                   S      g S r   r   r   r   r   r   <lambda>b       z3test_attributeruler_init_patterns.<locals>.<lambda>r   rH   r	   r   r   rI   r   r   r   r   attribute_ruler_patternsc                   S   r   r   r   r   r   r   r   rS   m   r!   zCtest_attributeruler_init_patterns.<locals>.attribute_ruler_patternsr   @misc
initialize
components)
rJ   rU   rE   r>   r?   rL   remove_piper   miscconfig)r   r    rA   rB   rS   r   r   r   !test_attributeruler_init_patterns_   s.   



rZ   c                 C   sP   |  d}t|jrJ || t|jsJ |dd  t|jr&J dS )z)Test that initialization clears patterns.rG   c                   S   rO   r   r   r   r   r   r   rP      rQ   z0test_attributeruler_init_clear.<locals>.<lambda>N)rJ   r<   matcheradd_patternsrU   )r   r    rA   r   r   r   test_attributeruler_init_clear   s   

r]   c                 C   sh  |  d}|jdd |d | d}|d jdksJ t|d jdks&J |d	 jd
ks/J t|d	 jdks:J | d}t|dg dig}| |}|d t	
dksZJ |d d u sbJ | d tddd }| j ddddiid}|jdd |d | j|ddid}|d dksJ d|v sJ d|vsJ | j|ddid}|d dksJ d S )NrG   c                   S   rO   r   r   r   r   r   r   rP      rQ   z+test_attributeruler_score.<locals>.<lambda>rR   rH   r	   r   r   rI   r   r   lemmas)thisr1   r   r   r'   	lemma_accg?	morph_acczweird_scorer.v1c                  S   s   dd } | S )Nc                 [   s   d|iS )Nweird_scorer   )examplesrb   kwargsr   r   r   weird_scorer   s   zJtest_attributeruler_score.<locals>.make_weird_scorer.<locals>.weird_scorerr   )re   r   r   r   make_weird_scorer   s   z4test_attributeruler_score.<locals>.make_weird_scorerscorerrT   )rY   c                   S   rO   r   r   r   r   r   r   rP      rQ   rb   g|Pk?)
scorer_cfg	token_accgy?)rJ   rU   rE   r>   r?   make_docr   	from_dictevaluatepytestapproxrW   r   rX   )r   r    rA   rB   dev_examplesscoresrf   r   r   r   test_attributeruler_score   s2   




rq   c                 C   sv   t | j}ddiggddidddiggddidg}|| t| jg dg dd	}||}|d
 jdks9J d S )NTAGr3   r$   VERBr   NOUNr/   r2   r5      )r   r:   r\   r   r=   )r   r   r   rB   r   r   r   test_attributeruler_rule_order   s   

rv   c                 C       t | j}|| t| d S r   )r   r:   load_from_tag_maprD   r   r)   rA   r   r   r   test_attributeruler_tag_map      

rz   c                 C   (   |  d}|jdd |d t| d S )NrG   c                   S   rO   r   r   r   r   r   r   rP      rQ   z8test_attributeruler_tag_map_initialize.<locals>.<lambda>)r)   )rJ   rU   rD   ry   r   r   r   &test_attributeruler_tag_map_initialize      
r}   c                 C   rw   r   )r   r:   load_from_morph_rulesrF   r   r.   rA   r   r   r   test_attributeruler_morph_rules   r{   r   c                 C   r|   )NrG   c                   S   rO   r   r   r   r   r   r   rP      rQ   z<test_attributeruler_morph_rules_initialize.<locals>.<lambda>)r.   )rJ   rU   rF   r   r   r   r   *test_attributeruler_morph_rules_initialize   r~   r   c                 C   s  |  d}|jddiddiggddddd	 |jdd
iddiggddddd	 |jddiddiggddidd	 d}| |}tt|D ]M}|dkra|| jdksUJ t|| jdks`J qF|dkrz|| jdksnJ t|| jdksyJ qF|dkr|| jdksJ qFt|| jdksJ qF|jddiddiggddidd	 tt	 | |}W d    n1 sw   Y  |jddiddiggddidd	 tt	 | |}W d    d S 1 sw   Y  d S )NrG   r   r   r   r   r   r   r   )r   r0   r1   wasr   ru   r   r   rH   r	   rI   r9   
   )
rJ   rK   r;   r<   rE   r>   r?   rm   raises
ValueError)r   r   textrB   rC   r   r   r   test_attributeruler_indices   s@   
""
"
"r   c                 C   st   |  d}|| t||jD ]'\}}|d |d ksJ |d |d ks(J |dr7|d |d ks7J qd S )NrG   r   r   r   )rJ   r\   zipr   get)r   r    r   p1p2r   r   r   !test_attributeruler_patterns_prop	  s   


r   c                 C   s  |  d}|| d}g d}| |}t| j| }| | ks(J || |}t|	||	| |j
|j
ksCJ t =}| | t|}	|	|}
|	d | ksbJ t|	||
	|spJ |j
|	dj
ks{J W d    d S 1 sw   Y  d S )NrG   rH   )r   r   r   )rJ   r\   r   r:   
from_bytesto_bytesrj   numpyarray_equalto_arrayr   r
   to_diskr   load_model_from_pathget_pipe)r   r    r   r   r   rB   
a_reloadeddoc1tmp_dirnlp2doc2r   r   r   test_attributeruler_serialize  s$   



"r   )!r   rm   spacyr   r   spacy.lang.enr   spacy.pipeliner   spacy.tokensr   spacy.trainingr   r
   fixturer   r    r)   r.   rD   rF   rN   rZ   r]   rq   rv   rz   r}   r   r   r   r   r   r   r   r   r   <module>   s<    



-
&%
