B
    .(äb¸  ã               @   s  d dl mZ d dl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mZ d dlmZ dd	lmZmZ ejd
d„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zejdd„ ƒZejdd„ ƒZejdd„ ƒZej dddg¡d d!„ ƒZejj ed"d#ej dddg¡d$d%„ ƒƒZ!dS )&é    )Úunicode_literalsN)Ú
is_python2)Ú	GoldParse)ÚLanguage)ÚDocÚSpan)ÚVocabé   )Úadd_vecs_to_vocabÚassert_docs_equalc              C   sB   t tƒ ƒ} |  d¡}xdD ]}| |¡ qW |  |¡ |  ¡  | S )NÚtextcat)ÚPOSITIVEÚNEGATIVE)r   r   Zcreate_pipeZ	add_labelÚadd_pipeZbegin_training)Únlpr   Úlabel© r   úH/home/dcms/DCMS/lib/python3.7/site-packages/spacy/tests/test_language.pyr      s    



r   c          	   C   sì   d}ddddœi}ddi}t | j| d¡d	}t|f|Ž}|  |g|g¡ |  |g|g¡ |  |g|g¡ |  |g|g¡ t t¡ |  |gg ¡ W d Q R X t t¡ |  g |g¡ W d Q R X t t¡ |  |g|g¡ W d Q R X d S )
Nzhello worldÚcatsg      ð?g        )r   r   ZLABELTú )Úwords)	r   ÚvocabÚsplitr   ÚupdateÚpytestÚraisesÚ
IndexErrorÚ
ValueError)r   ÚtextÚannotsZwrongkeyannotsÚdocÚgoldr   r   r   Útest_language_update   s    r"   c          	   C   sš   d}ddddœi}t | j| d¡d}t|f|Ž}|  ||fg¡ |  ||fg¡ |  ||fg¡ |  ||fg¡ t t¡ |  ||g¡ W d Q R X d S )Nzhello worldr   g      ð?g        )r   r   r   )r   )r   r   r   r   Úevaluater   r   Ú	Exception)r   r   r   r    r!   r   r   r   Útest_language_evaluate2   s    r%   c             C   sB   dd„ }d}ddddœi}t tƒ ƒ} |  |¡ |  ||fg¡ dS )	zoTest that docs are processed correctly within Language.pipe if the
    component doesn't expose a .pipe method.c             S   s   | S )Nr   )r    r   r   r   ÚpipeH   s    z#test_evaluate_no_pipe.<locals>.pipezhello worldr   g      ð?g        )r   r   N)r   r   r   r#   )r   r&   r   r   r   r   r   Útest_evaluate_no_pipeD   s    

r'   c             C   s   |  j d7  _ | S )Nr	   )Zvector)r    r   r   r   Úvector_modification_pipeR   s    r(   c             C   s   d| j d< | S )NÚbarZfoo)Ú	user_data)r    r   r   r   Úuserdata_pipeW   s    
r+   c             C   s$   t | dddd}|  j|f7  _| S )Nr   r	   ZFIRST)r   )r   Zents)r    Úspanr   r   r   Úner_pipe\   s    r-   c               C   s(   ddddgfddddgfddd	d
gfgS )NZspacygš™™™™™¹¿gš™™™™™É¿g333333Ó¿Zworldgš™™™™™Ù¿r&   gffffffæ?gš™™™™™é?gÍÌÌÌÌÌì?r   r   r   r   r   Úsample_vectorsb   s    r.   c             C   s.   t | j|ƒ |  t¡ |  t¡ |  t¡ | S )N)r
   r   r   r(   r-   r+   )r   r.   r   r   r   Únlp2k   s
    


r/   c              C   s   ddddg} | S )NzHello world.zThis is spacy.z-You can use multiprocessing with pipe method.zPlease try!r   )Údatar   r   r   Útextst   s
    r1   Ú	n_processé   c                sP   |d }‡ fdd„|D ƒ}ˆ j ||dd}x t||ƒD ]\}}t||ƒ q6W d S )Né
   c                s   g | ]}ˆ |ƒ‘qS r   r   )Ú.0r   )r/   r   r   ú
<listcomp>‚   s    z&test_language_pipe.<locals>.<listcomp>r3   )r2   Ú
batch_size)r&   Úzipr   )r/   r2   r1   Ú	expectedsÚdocsr    Úexpected_docr   )r/   r   Útest_language_pipe   s
    r<   z6python2 seems to be unable to handle iterator properly)Úreasonc                sl   t  |¡}t  |¡\}}‡ fdd„|D ƒ}ˆ j||dd}d}x(t  t||ƒ|¡D ]\}	}
t|	|
ƒ qRW d S )Nc             3   s   | ]}ˆ |ƒV  qd S )Nr   )r5   r   )r/   r   r   ú	<genexpr>‘   s    z,test_language_pipe_stream.<locals>.<genexpr>r3   )r2   r7   é   )Ú	itertoolsÚcycleÚteer&   Úislicer8   r   )r/   r2   r1   Zstream_textsZtexts0Ztexts1r9   r:   Zn_fetchr    r;   r   )r/   r   Útest_language_pipe_stream‰   s    
rD   )"Ú
__future__r   r@   r   Zspacy.compatr   Z
spacy.goldr   Zspacy.languager   Zspacy.tokensr   r   Zspacy.vocabr   Úutilr
   r   Zfixturer   r"   r%   r'   r(   r+   r-   r.   r/   r1   ÚmarkZparametrizer<   ZskipifrD   r   r   r   r   Ú<module>   s,   		
