B
    .(äbà  ã               @   sŒ   d dl mZ d dl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 ejjddd	d
„ ƒZejjdddd„ ƒZdd„ ZdS )é    )Úunicode_literalsN)ÚLanguage)ÚTextCategorizer)ÚDoc)Ú	GoldParsez#Test is flakey when run with others)Úreasonc              C   s–   t ƒ } |  |  d¡¡ |  d¡ d¡ |  ¡  x:tdƒD ].}x(dD ] \}}|  |gdd|iig¡ qBW q8W | dƒ}d|jks€t	‚|jd dks’t	‚d S )NÚtextcatÚansweré   ))Zaaaag      ð?)Zbbbbr   )Zaag      ð?)Z	bbbbbbbbbg        )Zaaaaaaé   ÚcatsZaaag      à?)
r   Úadd_pipeÚcreate_pipeÚget_pipeÚ	add_labelÚbegin_trainingÚrangeÚupdater   ÚAssertionError)ÚnlpÚiÚtextr	   Údoc© r   úP/home/dcms/DCMS/lib/python3.7/site-packages/spacy/tests/pipeline/test_textcat.pyÚtest_simple_train   s     r   c           	      s´  t  d¡ tj  d¡ g } tƒ }dddg}x\|D ]T}xN|D ]F‰ ‡ fdd„|D ƒ}|  t|jdgd |ˆ g dgd  d	|f¡ q:W q0W t  | ¡ t|jd
d}x|D ]}| 	|¡ q¦W | 
¡ }xLtdƒD ]@}i }	dd„ | D ƒ}
dd„ | D ƒ}|j||
||	d t  | ¡ qÊW x |D ]˜}x|D ]ˆ‰ t|jdgd |ˆ g dgd  d	}‡ fdd„|D ƒ}||ƒ x@|j ¡ D ]2\}}|| s|dk sžt‚n|dksnt‚qnW qW qW d S )Nr
   ÚaÚbÚcc                s   i | ]}t ˆ |kƒ|“qS r   )Úfloat)Ú.0Úletter)Úw2r   r   ú
<dictcomp>*   s    z2test_textcat_learns_multilabel.<locals>.<dictcomp>Údé   )Úwordsé   )Úwidthé   c             S   s   g | ]\}}t ||d ‘qS ))r   )r   )r    r   r   r   r   r   ú
<listcomp>3   s    z2test_textcat_learns_multilabel.<locals>.<listcomp>c             S   s   g | ]\}}|‘qS r   r   )r    r   r   r   r   r   r*   4   s    )ZsgdÚlossesc                s   i | ]}ˆ |k|“qS r   r   )r    r!   )r"   r   r   r#   :   s    g      à?)ÚrandomÚseedÚnumpyr   Úappendr   ZvocabÚshuffler   r   r   r   r   r   Úitemsr   )Zdocsr   ÚlettersZw1r   Úmodelr!   Z	optimizerr   r+   ZYsZXsr   ÚtruthÚcatZscorer   )r"   r   Útest_textcat_learns_multilabel!   s:    



8



&
r6   c           	   C   sP   t ƒ } |  |  d¡¡ |  d¡ d¡ t t¡ |  d¡ d¡ W d Q R X d S )Nr   r	   é	   )r   r   r   r   r   ÚpytestZraisesÚ
ValueError)r   r   r   r   Útest_label_typesC   s
    r:   )Ú
__future__r   r8   r,   Znumpy.randomr.   Zspacy.languager   Zspacy.pipeliner   Zspacy.tokensr   Z
spacy.goldr   ÚmarkÚskipr   r6   r:   r   r   r   r   Ú<module>   s   "