B
    .(äbh  ã            1   @   s8  d dl mZ 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lmZ d dlmZ d d	lmZ d
d„ Zejdd„ ƒZejdd„ ƒZejdd„ ƒZejdd„ ƒZejdd„ ƒZejjdd„ ƒZddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHg1ZdIdJ„ ZdS )Ké    )Úunicode_literalsN)ÚVocab)ÚDependencyParser)ÚDoc)Ú	GoldParse)Úprojectivize)Ú
StateClass)ÚArcEagerc             C   s’   t tƒ |d}t|||d}t|ƒ}|  |¡ g }xV|D ]N}	i }
x.t| jƒD ] }|  |¡}|  |||¡|
|< qLW |  	||	¡ | 
|
¡ q8W ||fS )N)Úwords)ÚheadsÚdeps)r   r   r   r   Úpreprocess_goldÚrangeZn_movesÚ
class_nameZget_costZ
transitionÚappend)ÚMr
   r   r   ZtransitionsÚdocÚgoldÚstateÚcost_historyZgold_actionÚstate_costsÚiÚname© r   úW/home/dcms/DCMS/lib/python3.7/site-packages/spacy/tests/parser/test_arc_eager_oracle.pyÚget_sequence_costs   s    


r   c               C   s   t ƒ S )N)r   r   r   r   r   Úvocab   s    r   c             C   s,   t | jt  ¡ ƒ}| dd¡ | dd¡ |S )Né   Úlefté   Úright)r	   ÚstringsZget_actionsÚ
add_action)r   Úmovesr   r   r   Ú	arc_eager#   s    r$   c               C   s   ddgS )NÚaÚbr   r   r   r   r   r
   +   s    r
   c             C   s   |d krt ƒ }t|t| ƒdS )N)r
   )r   r   Úlist)r
   r   r   r   r   r   0   s    r   c             C   s0   t |ƒdkr(t| ddgddgddgdS t‚d S )Nr   r%   r&   r   ÚROOTr    )r
   r   r   )Úlenr   ÚNotImplementedError)r   r
   r   r   r   r   7   s    r   c             C   s²   ddddg}ddddg}ddddg}d	d
d	g}t | ||||ƒ\}}| ¡ sNt‚x^t|ƒD ]R\}}	|	||  dks|t|| ƒ‚x,|	 ¡ D ] \}
}|
|| kr†|dks†t‚q†W qXW d S )Nr%   r&   ÚcÚdé   r   r   r(   zL-leftzB-ROOTg        )r   Úis_finalÚAssertionErrorÚ	enumerateÚitems)r$   r   r
   r   r   Úactionsr   r   r   r   Zother_actionZcostr   r   r   Útest_oracle_four_words?   s    
r3   )r   ZWhenÚWRBé   ÚadvmodÚO)r-   ZWalterÚNNPr   ÚcompoundzB-PERSON)r   ZRodgersr8   r5   ÚnsubjzL-PERSON)r   ú,r;   r   Úpunctr7   )é   ZourzPRP$é   Zpossr7   )é   ZembeddedÚVBNr>   Úamodr7   )r>   ZreporterÚNNr   Úapposr7   )é   ÚwithÚINr>   Úprepr7   )é   ÚtheÚDTé
   ÚdetzB-ORG)é	   Z3rdr8   rK   r9   zI-ORG)rK   ZCavalryr8   rD   ÚpobjzL-ORG)r5   ZsaysZVBZé,   Zadvclr7   )é   ZthreeZCDé   Znummodz
U-CARDINAL)rQ   Z
battalionsÚNNSé   r:   r7   )é   ZofrF   rQ   rG   r7   )é   ZtroopsrR   rT   rN   r7   )rS   ÚareÚVBPr5   Zccompr7   )é   ÚonrF   rS   rG   r7   )é   rI   rJ   é   rL   r7   )r[   ZgroundrB   rX   rN   r7   )é   r;   r;   rX   r<   r7   )é   ZinsiderF   rX   rG   r7   )é   ZBaghdadr8   r]   rN   zU-GPE)é   ZitselfÚPRPr^   rC   r7   )é   r;   r;   rS   r<   r7   )é   ZhaverW   é   Úauxr7   )rc   Ztakenr@   rS   Údepr7   )é   ZupZRPrc   Zprtr7   )é   Z	positionsrR   rc   Údobjr7   )é   Ztheyr`   é   r:   r7   )é   z'rerW   rj   rd   r7   )rj   ZgoingÚVBGrc   Z	parataxisr7   )é    ÚtoZTOé!   rd   r7   )ro   ZspendZVBrj   Zxcompr7   )é"   rI   rJ   é#   rL   zB-TIME)rq   ZnightrB   ro   rh   zL-TIME)é$   ZthereÚRBro   r6   r7   )é%   Z
presumablyrs   ro   r6   r7   )é&   r;   r;   rO   r<   r7   )é'   Úhowr4   é(   r6   r7   )rx   ÚmanyZJJé)   rA   r7   )rz   ZsoldiersrR   rO   rN   r7   )é*   rV   rW   rO   rd   r7   )é+   Zwer`   rO   r:   r7   )rO   Ztalkingrl   rO   r(   r7   )é-   ZaboutrF   rO   rG   r7   )é.   r    rs   é/   r6   r7   )r   Únowrs   rO   r6   r7   )é0   ú?Ú.rO   r<   r7   c              C   sü   t tƒ dd„ tD ƒd} t| jƒ}|j dd¡ |j dd¡ |j dd¡ |j dd¡ xNttƒD ]B\}\}}}}}}||kr|j d	|¡ qd||k rd|j d
|¡ qdW ttŽ \}	}
}}}}t	||ƒ\}}t
| |
|||d}|j |¡ |j | |¡ d S )Nc             S   s   g | ]}|d  ‘qS )r-   r   )Ú.0Útr   r   r   ú
<listcomp>…   s    z+test_get_oracle_actions.<locals>.<listcomp>)r
   r   Ú r-   r=   r(   r   r   )r
   Útagsr   r   )r   r   Úannot_tuplesr   r   r#   r"   r0   Úzipr   r   r   Zget_oracle_sequence)r   Úparserr   Zid_ÚwordÚtagÚheadre   ÚentÚidsr
   rˆ   r   r   Zentsr   r   r   r   Útest_get_oracle_actions„   s     
r‘   )Ú
__future__r   ZpytestZspacy.vocabr   Zspacy.pipeliner   Zspacy.tokensr   Z
spacy.goldr   Zspacy.syntax.nonprojr   Zspacy.syntax.stateclassr   Zspacy.syntax.arc_eagerr	   r   Zfixturer   r$   r
   r   r   ÚmarkZxfailr3   r‰   r‘   r   r   r   r   Ú<module>   s‚   