
    i                         d dl Z d dl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 d dlmZ e j                  dd       Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zy)    N)get_current_ops)Doc)split_bilu_label)make_tempdir)Vocabc              #   `   K   t        j                  |       }| |j                          y w)N)mode)tempfileTemporaryFileclose)r	   fs     a/var/www/vps2.regionflexible.com/Desarrollo/venv/lib/python3.12/site-packages/spacy/tests/util.pymake_tempfiler      s$     D)A
GGGIs   ,.c                     t               }g }d}t        d| dz         D ]H  }t        |||z         D cg c]  }t        |       }}|j                  t	        ||             ||z  }J |S c c}w )Nr      words)r   rangestrappendr   )
batch_sizevocabdocsstartsizeinumberss          r   	get_batchr      sy    GEDEaa(  $)#=>a3q6>>CW-. K ?s   A+c                 ~    t               }t        d|       D cg c]  }t        |       }}t        ||      S c c}w )Nr   r   )r   r   r   r   )n_wordsr   r   r   s       r   get_random_docr!   #   s9    GE$Q01!s1v1G1uG$$ 2s   :c                     |D ]&  }d|v st        |      \  }}| j                  |       ( | j                  |      5 }|D ]  }|j                  |        	 ddd       y# 1 sw Y   yxY w)zXPerform a series of pre-specified transitions, to put the parser in a
    desired state.-N)r   	add_labelstep_through
transition)parserdocsequenceaction_namemovelabelstepwiser&   s           r   apply_transition_sequencer.   *   s{       $+*;7KD%U#$ 
		S	! ,X" 	,J
+	,, , ,s   A  A)c                     t        |d   d         }| j                  |       |D ]  \  }}| j                  ||        | S )zuAdd list of vector tuples to given vocab. All vectors need to have the
    same length. Format: [("text", [1, 2, 3])]r   r   )width)vector)lenreset_vectors
set_vector)r   vectorslengthwordvecs        r   add_vecs_to_vocabr9   6   sR     AF	f% +	cc*+L    c                 B   t               }|j                  |j                  |             }|j                  |j                  |            }t        j                  ||      t        j
                  j                  |      t        j
                  j                  |      z  z  S )z Get cosine for two given vectors)r   to_numpyasarraynumpydotlinalgnorm)vec1vec2OPSv1v2s        r   
get_cosinerG   @   sq    

C	ckk$'	(B	ckk$'	(B99R 1 1" 58I8I"8M MNNr:   c                 d   | D cg c]  }|j                    c}|D cg c]  }|j                    c}k(  sJ | D cg c]  }|j                   c}|D cg c]  }|j                   c}k(  sJ | D cg c]  }|j                   c}|D cg c]  }|j                   c}k(  sJ | D cg c]  }|j                  j                   c}|D cg c]  }|j                  j                   c}k(  sJ | D cg c]  }|j
                   c}|D cg c]  }|j
                   c}k(  sJ | D cg c]  }|j                   c}|D cg c]  }|j                   c}k(  sJ | D cg c]  }|j                   c}|D cg c]  }|j                   c}k(  sJ | D cg c]  }|j                   c}|D cg c]  }|j                   c}k(  sJ t        | j                  |j                        D ]q  \  }}|j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  |j                  k(  rqJ  yc c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )zmCompare two Doc objects and assert that they're equal. Tests for tokens,
    tags, dependencies and entities.N)orthpostagheadr   depis_sent_startent_typeent_iobzipentsr   endr,   kb_id)doc1doc2tent1ent2s        r   assert_docs_equalrZ   H   s    !!qAFF!d%;aff%;;;; aAEE D$9qQUU$9999 aAEE D$9qQUU$9999"#AFFHH#$'?Q'???? aAEE D$9qQUU$9999%)*AOO*.M1q.MMMM $%1AJJ%d)C!**)CCCC#$!AII$D(Aq(AAAA$))TYY/ (
dzzTZZ'''xx488###zzTZZ'''zzTZZ'''	( "%; $9 $9#'? $9*.M%)C$(As]   I"I'I,I13I6I;*J J5J
J,JJ#J<J#J(3J-c                 n   t        j                  |       }t        j                  |      }t        |j                               t        |j                               k(  sJ t	        t        |j                               t        |j                                     D ]  \  \  }}\  }}||k(  sJ ||k(  rJ  y)z2Assert that two packed msgpack messages are equal.N)srslymsgpack_loadssortedkeysrQ   items)b1b2msg1msg2k1rE   k2rF   s           r   assert_packed_msg_equalrg   ]   s    r"Dr"D$))+&"5555!&"6tzz|8LM R(2rRxxRxxr:   c                 0    t        j                  dd|       S )Nz\s+ )resub)ss    r   normalize_whitespacerm   g   s    66&#q!!r:   )r)
contextlibrj   r
   r>   r\   	thinc.apir   spacy.tokensr   spacy.trainingr   
spacy.utilr   spacy.vocabr   contextmanagerr   r   r!   r.   r9   rG   rZ   rg   rm    r:   r   <module>rw      sf     	    %  + #   
%	,O(*"r:   