o
    i?                  	   @   s<  d dl Z d dlmZ d dlmZ d dlmZ d dlmZ dd Z	dd	 Z
e jd
ddgddgdgdd Ze jdddgdgg dge jd
dgdgdgdd Ze jddd Zdd Ze jd
g dg dg d d!gd"d# Ze jd
g d$g d%d&gd'd( Ze jd
g d)g d*d+gd,d- Ze jd
g d.d/d0d1d2d3gd4d5 Ze jd
g d6d7d8gd9gd:d; Zd<d= Ze jd
g d6d>d?gd9gd@dA Ze jd
g d6g dBd9gdCdD Ze jd
g d6d7d8gdEgdFdGgdHdI Ze jd
g d6g dBdEgdFdGgdJdK Ze jd
g d6dEgdGg d6dLd7idGg d6dLdMdNgidGg d6dLdMggidGgdOdP Ze jd
g d6d7d8gd/d0dQd0d/dQdRdSgdTdU Ze jd
g d6dVd/d0dWidXgdYdZ Zd[d\ Zd]d^ Z d_d` Z!dadb Z"e j#dcddde Z$dS )f    N)Doc)Example)to_ternary_int)Vocabc                  C   s   t  } tt td d  W d    n1 sw   Y  tt tt| dgdd  W d    n1 s7w   Y  tt td t| dgd W d    d S 1 sWw   Y  d S )Nhiwords)r   pytestraises	TypeErrorr   r   )vocab r   Y/home/ubuntu/.local/lib/python3.10/site-packages/spacy/tests/training/test_new_example.py&test_Example_init_requires_doc_objects	   s   "r   c                  C   sF   t tt ddgddddgi} t| jtsJ t| jts!J d S )Nhelloworldr   r   )r   	from_dictr   r   
isinstancexyexampler   r   r   test_Example_from_dict_basic   s
   r   annotsicecream	somethingsuch)r   weirdannotsc                 C   R   t  }t|| d d}tt t||  W d    d S 1 s"w   Y  d S Nr   r   )r   r   r	   r
   KeyErrorr   r   r   r   	predictedr   r   r   test_Example_from_dict_invalid   s
   "r$   
pred_wordsicecream)icer   NNr   tagsc                 C   sp   t  }t|| d}t||}t|jD ]\}}|j|d | ks#J q|jddd}|dd |D ks6J d S )Nr   r+   TAGT	as_stringc                 S   s   g | ]}d qS )r)   r   ).0_r   r   r   
<listcomp>0   s    z4test_Example_from_dict_with_tags.<locals>.<listcomp>)r   r   r   r   	enumerate	referencetag_get_aligned)r%   r   r   r#   r   r'   tokenaligned_tagsr   r   r    test_Example_from_dict_with_tags%   s   r8   zignore::UserWarningc            
      C   s   g d} g d}g d}||d}t  }t|| d}t||}|jddd}|g d	ks/J t|| }|jddd}	|	g d	ksFJ d S )
N)Applysome	sunscreenunlessyoucannot)r9   r:   sunscreenr<   r=   cannot)VERBDETNOUNrE   SCONJPRONrC   r*   r   r,   Tr-   )rC   rD   rE   rF   rG   rC   rC   )r   r   r   r   r5   to_dict)
r%   
gold_words	gold_tagsr   r   r#   example1aligned_tags1example2aligned_tags2r   r   r   test_aligned_tags3   s   
rO   c                  C   sb   g d} g d}g d}||d}t  }t|| d}t||}|jddd}|g d	ks/J d S )
N)	Applysomer;   r<   r=   r>   r?   )r9   somesunrA   r<   r=   rB   )rC   rD   rE   rF   rG   rC   r*   r   r,   Tr-   )NNrF   rG   rC   rC   )r   r   r   r   r5   )r%   rI   rJ   r   r   r#   r   r7   r   r   r   test_aligned_tags_multiD   s   
rR   IlikeLondonandBerlin.nsubjROOTdobjccconjpunct   rb   rb      rc   rb   )r   depsheadsc                 C   sh   t  }t|| d d}t|| }t|jD ]\}}|j| d | ks%J |jj| d | ks1J qd S )Nr   r   rd   re   )	r   r   r   r   r2   r3   dep_headr'   r   r   r#   r   r'   r6   r   r   r   !test_Example_from_dict_with_parseP   s   ri   )Sarahz'ssisterflew)zNounType=prop|Number=singzPoss=yeszNumber=singzTense=past|VerbForm=fin)r   morphsc                 C   sT   t  }t|| d d}t|| }t|jD ]\}}t|j| d | ks'J qd S )Nr   r   rm   )r   r   r   r   r2   r3   strmorphrh   r   r   r   &test_Example_from_dict_with_morphologyc   s   rp   )Thisisonesentencethisrr   another)rb   Fr   NTg)r   sent_startsc                 C   s   t  }t|| d d}t|| }tt|jjdksJ t|jD ]/\}}t	| d | dkr8|j
du s7J q"t	| d | dkrJ|j
d u sIJ q"|j
du sQJ q"d S )	Nr   r   rc   rx   rb   Tr   F)r   r   r   r   lenlistr3   sentsr2   r   is_sent_startrh   r   r   r   &test_Example_from_dict_with_sent_starty   s   
r}   )rq   rr   art         ?              ?)cat1cat2cat3)r   catsc                 C   sz   t  }t|| d d}t|| }tt|jjdksJ |jjd dks'J |jjd dks1J |jjd d	ks;J d S )
Nr   r      r   r   r   r   r   r   )r   r   r   r   ry   rz   r3   r   r   r   r#   r   r   r   r    test_Example_from_dict_with_cats   s   
r   rT   rU   NewYorkrW   rX   rY         LOC      r   r   entitiesc                    s   t  }t|| d d}t||  tt jjdksJ  fddtdD g dks.J  	dg d	ks9J  jd j
d
ksCJ  jd j
d
ksMJ  jd j
d
ksWJ d S )Nr   r   rc   c                    s   g | ]} j | jqS r   )r3   ent_iob_)r/   r'   r   r   r   r1      s    z8test_Example_from_dict_with_entities.<locals>.<listcomp>r   )Or   BrT   r   r   r   ENT_IOB)rc   rc   r   rb   rc   r   rc   r   r      )r   r   r   r   ry   rz   r3   entsranger5   	ent_type_r"   r   r   r   $test_Example_from_dict_with_entities   s   
"r   c                  C   s   g dg d} t  }t|| d d}t|| }|jds J tt|jjdks,J t	dd |jD s8J d | d	< t|| }|jdrJJ | 
d	d  t|| }|jdr^J d S )
Nr   r   r   r   r   r   c                 s   s    | ]}|j d kV  qdS )r   N)r   )r/   r6   r   r   r   	<genexpr>   s    z=test_Example_from_dict_with_empty_entities.<locals>.<genexpr>r   )r   r   r   r   r3   has_annotationry   rz   r   allpopr   r   r   r   *test_Example_from_dict_with_empty_entities   s   r   )r      r   )      r   c                 C   sh   t  }t|| d d}tt t|| }W d    n1 s!w   Y  tt|j	j
dks2J d S )Nr   r   r   )r   r   r	   warnsUserWarningr   r   ry   rz   r3   r   r   r   r   r   ,test_Example_from_dict_with_entities_invalid   s   r   )r   )   r   r   r   c                 C   r   r    r   r   r	   r
   
ValueErrorr   r   r"   r   r   r   0test_Example_from_dict_with_entities_overlapping   s
   "r   )r   rb   PERSONcitiespeopler   spansc                 C      t  }t|| d d}t|| }tt|jjdksJ tt|jjd dks+J tt|jjd dks9J |jjd D ]	}|j	dksHJ q?|jjd D ]	}|j	d	ksXJ qOd S )
Nr   r   r   r   rc   r   rb   r   r   
r   r   r   r   ry   rz   r3   r   r   label_r   r   r#   r   spanr   r   r   !test_Example_from_dict_with_spans      r   c                 C   r   )
Nr   r   r   r   r   r   rb   r   r   r   r   r   r   r   -test_Example_from_dict_with_spans_overlapping  r   r   r   r   r   c                 C   r   r    r   r"   r   r   r   )test_Example_from_dict_with_spans_invalid)  s
   "r   )Q60Q64))r   r   )r   r   )r   r   linksc                 C   s   t  }t|| d d}t|| }|jd jdksJ |jd jdks%J |jd jdks/J |jd jdks9J |jd	 jdksCJ |jd
 jdksMJ |jd jdksWJ d S )Nr   r   r    rb   rc   r   r   r   r   r      )r   r   r   r   r3   
ent_kb_id_r   r   r   r   !test_Example_from_dict_with_linksE  s   r   )r      )Q7381115Q2146908)r   r   c                 C   r   r    r   r"   r   r   r   )test_Example_from_dict_with_links_invalid_  s
   
"r   c                  C   s   t  } t| g dd}dg di}t||}tt|jjdks#J t| g dd}dg di}t||}tt|jjdksCJ d S )	N)Onert   rY   rs   morer   rx   )rb   r   r   rb   r   rc   )r   rt   r?   rs   r   )rb   rw   r   r   r   rb   )r   r   r   r   ry   rz   r3   r{   )r   r#   r   exr   r   r    test_Example_from_dict_sentenceso  s   r   c            	      C   s   t  } g d}g d}g d}||d}|||d}t| |d}t||}dd |jD g d	ks4J t||}d
d |jD |ksFJ d S )NrS   rZ   ra   )r   re   r   re   rd   r   c                 S      g | ]}|j jqS r   rg   r'   r/   tr   r   r   r1         z-test_Example_missing_deps.<locals>.<listcomp>)r   rb   rc   r   r   r   c                 S   r   r   r   r   r   r   r   r1     r   )r   r   r   r   r3   )	r   r   rd   re   annots_head_onlyannots_head_depr#   	example_1	example_2r   r   r   test_Example_missing_deps  s   
r   c            	      C   s   t  } g d}g d}g d}|||d}t| |d}t||}dd |jD }|d |d ks3J |d	 |d	 ks=J |d
 |d
 ksGJ |d |d ksQJ |d |d ks[J g d}dd |jD |kskJ g d}| |kswJ d S )NrS   )r[   r\   r]   Nr_   r`   )rb   rb   rb   Nrc   rb   r   r   c                 S   r   r   r   r   r   r   r   r1     r   z.test_Example_missing_heads.<locals>.<listcomp>r   rb   rc   r   r   )TTTFTTc                 S   s   g | ]}|  qS r   )has_headr   r   r   r   r1     r   )TFFFFF)r   r   r   r   r3   get_aligned_sent_starts)	r   r   rd   re   r   r#   r   parsed_headsexpectedr   r   r   test_Example_missing_heads  s"   r   c                 C   sN   g d}g d}t | |d}t | ||d}t||}|jddd|ks%J d S )N)r~    b)ASPACEr   r   r*   r,   Tr-   )r   r   r5   )en_vocabr   r+   r#   r3   r   r   r   r   test_Example_aligned_whitespace  s   
r   11260c                  C   s  g ddgdgdd} t  }t|| d d}t|| }t|jjd d	ks)J t|jjd
 d	ks5J | }d|d v sAJ |d d d | d d ksQJ |d d d
 | d d
 ksaJ t||}t|jjd t|jjd ksyJ t|jjd
 t|jjd
 ksJ |jjd D ]}|jdksJ |j	dksJ |j
dksJ q|jjd
 D ]}|jdksJ |j	dksJ |j
dksJ qd S )N)rT   rU   r   r   rY   )r   r   r   r   )r   rb   r   r   r   r   r   r   r   rb   r   r   doc_annotationr   zNew Yorkr   r   rT   r   )r   r   r   r   ry   r3   r   rH   r   text
start_char)r   r   r#   r   output_dictoutput_exampler   r   r   r   test_issue11260  s<     



r   )%r	   spacy.tokensr   spacy.training.exampler   
spacy.utilr   spacy.vocabr   r   r   markparametrizer$   r8   filterwarningsrO   rR   ri   rp   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   issuer   r   r   r   r   <module>   s   






	

	

	

	








	

