Ë
    ÷Q(hÌ  ã                   ó\  — 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 d dlZd dlZd dlmZmZ d dlmZ d d	lmZ d d
lmZmZmZmZmZmZmZm Z  d dl!m"Z"m#Z#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z*m+Z+m,Z, d dl-m.Z.m/Z/m0Z0 dZ1dZ2e1e2z   Z3d„ Z4d„ Z5d„ Z6d„ Z7d„ Z8d„ Z9ejt                  jw                  deef«      d„ «       Z<d„ Z=d„ Z>d„ Z?d„ Z@d„ ZAd„ ZBd „ ZCd!„ ZDd"„ ZEd#„ ZFd$„ ZGd%„ ZHd&„ ZId'„ ZJd(„ ZKd)„ ZLd*„ ZMejt                  j�                  e.d+¬,«      d-„ «       ZOd.„ ZPd/„ ZQd0„ ZRd1„ ZSd2„ ZTejt                  jw                  deef«      d3„ «       ZUd4„ ZVd5„ ZWd6„ ZXd7„ ZYd8„ ZZejt                  jw                  deef«      d9„ «       Z[d:„ Z\d;„ Z]d<„ Z^d=„ Z_d>„ Z`d?„ Zaejt                  jw                  d@ejÄ                  ejÆ                  ejÈ                  g«      dA„ «       ZedB„ ZfdC„ ZgdD„ ZhdE„ ZidF„ ZjdG„ ZkdH„ ZldI„ ZmdJ„ ZndK„ ZodL„ Zpejt                  jw                  deeef«      dM„ «       Zqejt                  jw                  dNejä                  ejæ                  g«      dO„ «       Ztejt                  jw                  dP ee/e0«      «      dQ„ «       Zuejt                  jw                  dRejì                  ejæ                  dSfejî                  ejæ                  dSfejä                  ejä                  dTfejæ                  ejæ                  dTfg«      dU„ «       Zxejt                  jw                  dV edW¬X«       edW¬X«       edW¬X«      g«      dY„ «       ZydZ„ Zzd[„ Z{e,ejt                  jw                  d\e0«      d]„ «       «       Z|ejt                  jw                  d^eeeg«      d_„ «       Z}ejt                  jw                  d^eeeg«      ejt                  jw                  d`dae~dbfdceddfg«      de„ «       «       Z€ejt                  jw                  d^ee e�j                  e«      g«      ejt                  jw                  dfdg„ dh„ g«      ejt                  jw                  didcdag«      dj„ «       «       «       Z‚ejt                  jw                  d^eeeg«      dk„ «       Zƒejt                  jw                  deeeg«      ejt                  jw                  dldmdngdddoddpdqdrdsf	ddt„ ddoddpdudrdsf	ddv„ ddodwdxdydudzf	ddd{„ dodwd|„ d}drd~f	dddddd€„ d�drd~f	d‚g«      dƒ„ «       «       Z„ejt                  jw                  d„ed…d†d‡œdˆd…d‰œgfee1ff«      dŠ„ «       Z…d‹„ Z†dŒ„ Z‡ejt                  jw                  d^eeeeg«      d�„ «       Zˆejt                  jw                  d\e0«      dŽ„ «       Z‰ejt                  jw                  d�ejä                  ejæ                  g«      d�„ «       ZŠy)‘é    N)Údefaultdict)ÚMapping)Úpartial)ÚStringIO)Úproduct)Úassert_array_almost_equalÚassert_array_equal)Úsparse)Úclone)ÚENGLISH_STOP_WORDSÚCountVectorizerÚHashingVectorizerÚTfidfTransformerÚTfidfVectorizerÚstrip_accents_asciiÚstrip_accents_unicodeÚ
strip_tags)ÚGridSearchCVÚcross_val_scoreÚtrain_test_split)ÚPipeline)Ú	LinearSVC)Úassert_allclose_dense_sparseÚassert_almost_equalÚskip_if_32bit)Ú_IS_WASMÚCSC_CONTAINERSÚCSR_CONTAINERS)zthe pizza pizza beer copyrightzthe pizza burger beer copyrightz!the the pizza beer beer copyrightzthe burger beer beer copyrightzthe coke burger coke copyrightzthe coke burger burger)zthe salad celeri copyrightz)the salad salad sparkling water copyrightzthe the celeri celeri copyrightzthe tomato tomato salad waterz the tomato salad water copyrightc                 ó4   — t        | «      j                  «       S ©N)r   Úupper©Úss    úh/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/feature_extraction/tests/test_text.pyÚ	uppercaser%   9   s   € Ü  Ó#×)Ñ)Ó+Ð+ó    c                 ó&   — | j                  dd«      S )Nõ   Ã©Úe)Úreplacer"   s    r$   Ústrip_eacuter+   =   s   € Ø�9‰9�T˜3ÓÐr&   c                 ó"   — | j                  «       S r    ©Úsplitr"   s    r$   Úsplit_tokenizer/   A   s   € Ø�7‰7‹9Ðr&   c                 ó   — dgS )NÚthe_ultimate_feature© r"   s    r$   Úlazy_analyzer3   E   s   € Ø"Ð#Ð#r&   c                  ó  — d} d}t        | «      |k(  sJ ‚d} d}t        | «      |k(  sJ ‚d} d}t        | «      |k(  sJ ‚d} d}t        | «      |k(  sJ ‚d	} d
}t        | «      |k(  sJ ‚d} d}t        | «      |k(  sJ ‚d} d
}t        | «      |k(  sJ ‚y )Nõ   Ã Ã¡Ã¢Ã£Ã¤Ã¥Ã§Ã¨Ã©ÃªÃ«Úaaaaaaceeeeõ   Ã¬Ã­Ã®Ã¯Ã±Ã²Ã³Ã´ÃµÃ¶Ã¹ÃºÃ»Ã¼Ã½Úiiiinooooouuuuyõ   Ø¥u   Ø§õ   this is Ã  testúthis is a testu   oÌˆÚou   Ì€Ì�Ì‚ÌƒÚ u   oÌˆÌ„)r   ©ÚaÚexpecteds     r$   Útest_strip_accentsrA   I   s×   € à €AØ€HÜ  Ó# xÒ/Ð/Ð/à(€AØ €HÜ  Ó# xÒ/Ð/Ð/ð 	€AØ€HÜ  Ó# xÒ/Ð/Ð/ð 	€AØ€HÜ  Ó# xÒ/Ð/Ð/ð 	€AØ€HÜ  Ó# xÒ/Ð/Ð/ð 	#€AØ€HÜ  Ó# xÒ/Ð/Ð/ð 	€AØ€HÜ  Ó# xÒ/Ð/Ñ/r&   c                  ó¤   — d} d}t        | «      |k(  sJ ‚d} d}t        | «      |k(  sJ ‚d} d}t        | «      |k(  sJ ‚d} d}t        | «      |k(  sJ ‚y )	Nr5   r6   r7   r8   r9   r=   r:   r;   )r   r>   s     r$   Útest_to_asciirC   m   sz   € à €AØ€HÜ˜qÓ! XÒ-Ð-Ð-à(€AØ €HÜ˜qÓ! XÒ-Ð-Ð-ð 	€AØ€HÜ˜qÓ! XÒ-Ð-Ð-ð 	€AØ€HÜ˜qÓ! XÒ-Ð-Ñ-r&   Ú
Vectorizerc                 óž  —  | d¬«      j                  «       }d}g d¢} ||«      |k(  sJ ‚d}g d¢} ||«      |k(  sJ ‚ | d¬«      j                  «       }t        d	«      }g d
¢} ||«      |k(  sJ ‚ | t        ¬«      j                  «       }d}g d¢} ||«      |k(  sJ ‚ | t        d¬«      j                  «       }d}g d¢} ||«      |k(  sJ ‚y )NÚascii©Ústrip_accentsõ:   J'ai mangÃ© du kangourou  ce midi, c'Ã©tait pas trÃ¨s bon.)
ÚaiÚmangeÚduÚ	kangourouÚceÚmidiÚetaitÚpasÚtresÚbonz0This is a test, really.

 I met Harry yesterday.)ÚthisÚisÚtestÚreallyÚmetÚharryÚ	yesterdayÚfile)Úinputú'This is a test with a file-like object!)rT   rU   rV   Úwithr[   ÚlikeÚobject©Úpreprocessoru;   J'ai mangÃ© du kangourou  ce midi,  c'Ã©tait pas trÃ¨s bon.)
ÚAIÚMANGEÚDUÚ	KANGOUROUÚCEÚMIDIÚETAITÚPASÚTRESÚBON)Ú	tokenizerrH   )
zj'airK   rL   rM   rN   zmidi,zc'etaitrQ   rR   zbon.)Úbuild_analyzerr   r%   r/   )rD   ÚwaÚtextr@   s       r$   Útest_word_analyzer_unigramsrq   ‚   sò   € á	 'Ô	*×	9Ñ	9Ó	;€BØG€Dò€Hñ ˆd‹8�xÒÐÐà?€DÚL€HÙˆd‹8�xÒÐÐá	˜&Ô	!×	0Ñ	0Ó	2€BÜÐ=Ó>€DÚG€HÙˆd‹8�xÒÐÐñ 
¤Ô	+×	:Ñ	:Ó	<€BØH€Dò€Hñ ˆd‹8�xÒÐÐñ 
œn¸GÔ	D×	SÑ	SÓ	U€BØG€Dò€Hñ ˆd‹8�xÒÐÑr&   c                  ób   — t        ddd¬«      j                  «       } d}g d¢} | |«      |k(  sJ ‚y )NÚwordÚunicode©é   é   ©ÚanalyzerrH   Úngram_rangerI   )rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   zai mangezmange duzdu kangourouzkangourou cezce midiz
midi etaitz	etait paszpas tresztres bon)r   rn   )ro   rp   r@   s      r$   Ú'test_word_analyzer_unigrams_and_bigramsr{   À   sA   € Ü	Ø y¸fô
ç�nÓð ð H€Dò€Hñ* ˆd‹8�xÒÐÑr&   c                  óp  — d} | j                  d«      }t        dd¬«      j                  «       }t        j                  t
        «      5   ||«       d d d «       t        ddd¬«      j                  «       }t        j                  t
        «      5   ||«       d d d «       y # 1 sw Y   ŒPxY w# 1 sw Y   y xY w)	NrI   zutf-8ru   rF   )rz   ÚencodingÚchar©é   é   )ry   rz   r}   )Úencoder   rn   ÚpytestÚraisesÚUnicodeDecodeError)rp   Ú
text_bytesro   Úcas       r$   Útest_unicode_decode_errorrˆ   Þ   s¦   € ð H€DØ—‘˜WÓ%€Jô 
 V°gÔ	>×	MÑ	MÓ	O€BÜ	�‰Ô)Ó	*ñ Ù
ˆ:Œ÷ô 
Ø V°gô
ç�nÓð ô 
�‰Ô)Ó	*ñ Ù
ˆ:Œ÷ð ÷ð ú÷ð ús   Á	B Â	B,Â B)Â,B5c                  óZ  — t        ddd¬«      j                  «       } d}g d¢} | |«      d d |k(  sJ ‚g d¢} | |«      d	d  |k(  sJ ‚d
}g d¢} | |«      d d |k(  sJ ‚g d¢} | |«      d	d  |k(  sJ ‚t        ddd¬«      j                  «       } t        d«      }g d¢} | |«      d d |k(  sJ ‚y )Nr~   rt   r   rx   u9   J'ai mangÃ© du kangourou  ce midi, c'Ã©tait pas trÃ¨s bon)zj'az'aizai zi mz maé   )zs tresz tres ztres bzres bozes bonéûÿÿÿú1This 
	is a test, really.

 I met Harry yesterday)ÚthiÚhisúis zs iz is)z yesteÚyesterÚesterdÚsterdaÚterdayr[   ©r\   ry   rz   r]   ©r   rn   r   ©Úcngarp   r@   s      r$   Útest_char_ngram_analyzerr˜   ñ   så   € ÜØ y¸fôç�nÓð 	ð G€DÚ2€HÙ�‹:�b�qˆ>˜XÒ%Ð%Ð%ÚA€HÙ�‹:�b�cˆ?˜hÒ&Ð&Ð&àB€DÚ2€HÙ�‹:�b�qˆ>˜XÒ%Ð%Ð%âA€HÙ�‹:�b�cˆ?˜hÒ&Ð&Ð&äØ˜v°6ôç�nÓð 	ô Ð=Ó>€DÚ2€HÙ�‹:�b�qˆ>˜XÒ%Ð%Ñ%r&   c                  ó  — t        ddd¬«      j                  «       } d}g d¢} | |«      d d |k(  sJ ‚g d¢} | |«      d	d  |k(  sJ ‚t        d
dd¬«      j                  «       } t        d«      }g d¢} | |«      d d |k(  sJ ‚y )NÚchar_wbrt   r   rx   rŒ   )z thr�   rŽ   r�   z thirŠ   )r�   r‘   r’   r“   zerday r‹   r[   r”   zA test with a file-like object!)z a z teÚtesÚestzst z tesr�   r•   r–   s      r$   Útest_char_wb_ngram_analyzerr�     s¦   € ÜØ¨)Àôç�nÓð 	ð C€DÚ3€HÙ�‹:�b�qˆ>˜XÒ%Ð%Ð%âA€HÙ�‹:�b�cˆ?˜hÒ&Ð&Ð&äØ˜y°fôç�nÓð 	ô Ð5Ó6€DÚ:€HÙ�‹:�b�qˆ>˜XÒ%Ð%Ñ%r&   c                  ó  — t        ddd¬«      j                  «       } d}g d¢} | |«      d d |k(  sJ ‚g d¢} | |«      d	d  |k(  sJ ‚t        d
dd¬«      j                  «       }t        |«      } ||«       | |«      k(  sJ ‚y )Nrs   rt   r   rx   rŒ   )zthis is testzis test reallyztest really metr€   )ztest really met harry yesterdayzthis is test really met harryz"is test really met harry yesterdayéýÿÿÿr[   r”   r•   )r—   rp   r@   Ú	cnga_filer[   s        r$   Útest_word_ngram_analyzerr¡     s¡   € ÜØ y¸fôç�nÓð 	ð C€DÚD€HÙ�‹:�b�qˆ>˜XÒ%Ð%Ð%ò€Hñ
 �‹:�b�cˆ?˜hÒ&Ð&Ð&äØ˜v°6ôç�nÓð ô �D‹>€DÙ�T‹?™d 4›jÒ(Ð(Ñ(r&   c                  óB  — dddœ} t        | j                  «       «      }t        t        t        t        t        t        «      fD ]Ú  } || «      }t        |¬«      }|j                  t        «       t        |t        «      r|j                  | k(  sJ ‚t        |j                  «      |k(  sJ ‚|j                  t        «      }|j                  d   t!        |«      k(  sJ ‚ || «      }t        |¬«      }|j#                  |«      }t!        |«      |j                  d   k(  rŒÚJ ‚ y )Nr   rv   ©ÚpizzaÚbeer©Ú
vocabulary)ÚsetÚkeysÚdictÚlistÚiterr   r   Úintr   ÚfitÚJUNK_FOOD_DOCSÚ
isinstancer   Úvocabulary_Ú	transformÚshapeÚlenÚinverse_transform)ÚvocabÚtermsÚtypÚvÚvectÚXÚinvs          r$   Ú&test_countvectorizer_custom_vocabularyr½   6  sø   € Ø Ñ#€EÜ�—
‘
“Ó€Eô ”dœD¤'¬+´sÓ";Ð<ò &ˆÙ�‹JˆÜ¨!Ô,ˆØ�‰”Ô Ü�aœÔ!Ø×#Ñ# uÒ,Ð,Ð,ä�t×'Ñ'Ó(¨EÒ1Ð1Ð1Ø�N‰Nœ>Ó*ˆØ�w‰w�q‰zœS ›ZÒ'Ð'Ð'Ù�‹JˆÜ¨!Ô,ˆØ×$Ñ$ QÓ'ˆÜ�3‹x˜1Ÿ7™7 1™:Ó%Ð%Ð%ñ&r&   c                  ó  — ddg} t        dt        | ¬«      fdt        «       fg«      }|j                  t        «      }t        |j                  d   j                  «      t        | «      k(  sJ ‚|j                  d   t        | «      k(  sJ ‚y )Nr¤   r¥   Úcountr¦   Útfidfrv   )
r   r   r   Úfit_transformÚALL_FOOD_DOCSr¨   Únamed_stepsr±   r³   r´   )Úwhat_we_likeÚpiper»   s      r$   Ú/test_countvectorizer_custom_vocabulary_pipelinerÆ   K  sŠ   € Ø˜VÐ$€LÜà”o°Ô>Ð?ØÔ&Ó(Ð)ð	
ó€Dð 	×Ñœ=Ó)€AÜˆt×Ñ Ñ(×4Ñ4Ó5¼¸\Ó9JÒJÐJÐJØ�7‰7�1‰:œ˜\Ó*Ò*Ð*Ñ*r&   c                  ó®   — dddœ} d}t        j                  t        |¬«      5  t        | ¬«      }|j	                  dg«       d d d «       y # 1 sw Y   y xY w)Nr   r£   z$Vocabulary contains repeated indices©Úmatchr¦   Úpasta_siziliana©rƒ   r„   Ú
ValueErrorr   r®   )r¶   Úmsgrº   s      r$   Ú7test_countvectorizer_custom_vocabulary_repeated_indicesrÎ   X  sN   € Ø Ñ#€EØ
0€CÜ	�‰”z¨Ô	-ñ &Ü¨%Ô0ˆØ�‰Ð#Ð$Ô%÷&÷ &ñ &ús   £AÁAc                  óª   — dddœ} t        j                  t        d¬«      5  t        | ¬«      }|j	                  dg«       d d d «       y # 1 sw Y   y xY w)Nrv   rw   r£   zdoesn't contain indexrÈ   r¦   Úpasta_verdurarË   ©r¶   rº   s     r$   Ú0test_countvectorizer_custom_vocabulary_gap_indexrÒ   `  sI   € Ø Ñ#€EÜ	�‰”zÐ)@Ô	Añ $Ü¨%Ô0ˆØ�‰�/Ð"Ô#÷$÷ $ñ $ús   ¡A	Á	Ac                  ó  — t        «       } | j                  d¬«       | j                  «       t        k(  sJ ‚| j                  d¬«       t	        j
                  t        «      5  | j                  «        d d d «       | j                  d¬«       t	        j
                  t        «      5  | j                  «        d d d «       g d¢}| j                  |¬«       | j                  «       t        |«      k(  sJ ‚y # 1 sw Y   Œ‚xY w# 1 sw Y   ŒJxY w)NÚenglish©Ú
stop_wordsÚ_bad_str_stop_Ú_bad_unicode_stop_)ÚsomeÚotherÚwords)r   Ú
set_paramsÚget_stop_wordsr   rƒ   r„   rÌ   r¨   )ÚcvÚstoplists     r$   Útest_countvectorizer_stop_wordsrà   g  sÖ   € Ü	Ó	€BØ‡M�M˜Y€MÔ'Ø×ÑÓÔ"4Ò4Ð4Ð4Ø‡M�MÐ-€MÔ.Ü	�‰”zÓ	"ñ Ø
×ÑÔ÷à‡M�MÐ1€MÔ2Ü	�‰”zÓ	"ñ Ø
×ÑÔ÷â)€HØ‡M�M˜X€MÔ&Ø×ÑÓ¤# h£-Ò/Ð/Ñ/÷ð ú÷ð ús   Á!C3Â%C?Ã3C<Ã?Dc                  ó@  — t        j                  t        d¬«      5  t        g ¬«      } | j	                  dg«       d d d «       t        j                  t        d¬«      5  t        dd¬«      }|j	                  g d¢«       d d d «       y # 1 sw Y   ŒNxY w# 1 sw Y   y xY w)	Nzempty vocabularyrÈ   r¦   Úfooç      ð?rÔ   )Úmax_dfrÖ   )zto be or not to bez
and me toozand so do yourË   )rº   r¹   s     r$   Ú%test_countvectorizer_empty_vocabularyrå   v  s‡   € Ü	�‰”zÐ);Ô	<ñ Ü¨"Ô-ˆØ�‰�%�Ô÷ô 
�‰”zÐ);Ô	<ñ EÜ 3°9Ô=ˆà	�‰ÒCÔD÷Eð E÷	ð ú÷Eð Eús   œBÁ!BÂBÂBc                  óº   — t        «       } | j                  t        d d «      }| j                  t        dd  «      }|j                  d   |j                  d   k7  sJ ‚y )NrŠ   rv   )r   rÁ   rÂ   r³   )rÞ   ÚX1ÚX2s      r$   Útest_fit_countvectorizer_twiceré   �  sV   € Ü	Ó	€BØ	×	Ñ	œ-¨¨Ð+Ó	,€BØ	×	Ñ	œ-¨¨Ð+Ó	,€BØ�8‰8�A‰;˜"Ÿ(™( 1™+Ò%Ð%Ñ%r&   c                  óŠ   — g d¢} d}t        |¬«      }|j                  | «       g d¢}|j                  «       }t        ||«       y)z¦Check `get_feature_names_out()` when a custom token pattern is passed.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/12971
    ©z&This is the 1st document in my corpus.z This document is the 2nd sample.zAnd this is the 3rd one.zIs this the 4th document?z'[0-9]{1,3}(?:st|nd|rd|th)\s\b(\w{2,})\b©Útoken_pattern)ÚdocumentÚoneÚsampleN)r   rÁ   Úget_feature_names_outr	   )Úcorpusrí   Ú
vectorizerr@   Úfeature_names_outs        r$   Ú)test_countvectorizer_custom_token_patternrõ   ˆ  sG   € ò
€Fð ?€MÜ ¨}Ô=€JØ×Ñ˜VÔ$Ú,€HØ"×8Ñ8Ó:ÐÜÐ(¨(Õ3r&   c                  ó®   — g d¢} d}d}t        |¬«      }t        j                  t        |¬«      5  |j	                  | «       ddd«       y# 1 sw Y   yxY w)z¥Check that we raise an error if token pattern capture several groups.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/12971
    rë   z)([0-9]{1,3}(?:st|nd|rd|th))\s\b(\w{2,})\bz,More than 1 capturing group in token patternrì   rÈ   N©r   rƒ   r„   rÌ   r®   )rò   rí   Úerr_msgró   s       r$   Ú<test_countvectorizer_custom_token_pattern_with_several_grouprù   ›  sO   € ò
€Fð A€MØ<€GÜ ¨}Ô=€JÜ	�‰”z¨Ô	1ñ Ø�‰�vÔ÷÷ ñ ús   °AÁAc                  óT  — g d¢} d}t        d| ¬«      }t        j                  t        |¬«      5  |j	                  | «       d d d «       t        j                  «       5  t        j                  dt        «       |j                  | «       d d d «       y # 1 sw Y   ŒRxY w# 1 sw Y   y xY w)N)ÚSampleÚUpperÚCaseÚ
VocabularyzyUpper case characters found in vocabulary while 'lowercase' is True. These entries will not be matched with any documentsT)Ú	lowercaser§   rÈ   Úerror)	r   rƒ   ÚwarnsÚUserWarningr®   ÚwarningsÚcatch_warningsÚsimplefilterr²   )r§   Úmessageró   s      r$   Ú'test_countvectorizer_uppercase_in_vocabr  ®  s–   € ò ;€Jð	)ð ô !¨4¸JÔG€Jä	�‰”k¨Ô	1ñ #Ø�‰�zÔ"÷#ô 
×	 Ñ	 Ó	"ñ )Ü×Ñ˜g¤{Ô3Ø×Ñ˜ZÔ(÷)ð )÷#ð #ú÷)ð )ús   ¯BÁ,BÂBÂB'c                  ó”   — g d¢g d¢g d¢g} t        dd¬«      j                  | «      }g d¢}|j                  |«      }t        ||«       y)	z0Check get_feature_names_out for TfidfTransformer©rv   rv   rv   ©rv   rv   r   ©rv   r   r   TÚl2©Ú
smooth_idfÚnorm)r?   ÚcÚbN)r   r®   rñ   r	   )r»   ÚtrÚfeature_names_inrô   s       r$   Ú%test_tf_transformer_feature_names_outr  Ã  sI   € â	’IšyÐ)€AÜ	 T°Ô	5×	9Ñ	9¸!Ó	<€Bâ&ÐØ×0Ñ0Ð1AÓBÐÜÐ'Ð):Õ;r&   c                  óv  — g d¢g d¢g d¢g} t        dd¬«      }|j                  | «      j                  «       }|dk\  j                  «       sJ ‚t	        |dz  j                  d	¬
«      g d¢«       g d¢g d¢g d¢g} t        dd¬«      }|j                  | «      j                  «       }|dk\  j                  «       sJ ‚y )Nr	  r
  r  Tr  r  r   rw   rv   ©Úaxis©rã   rã   rã   )r   rÁ   ÚtoarrayÚallr   Úsum©r»   r  rÀ   s      r$   Útest_tf_idf_smoothingr  Í  s­   € Ú	’IšyÐ)€AÜ	 T°Ô	5€BØ×Ñ˜QÓ×'Ñ'Ó)€EØ�Q‰J×ÑÔÐÐô ˜u a™xŸn™n°!˜nÓ4²oÔFò 
’IšyÐ)€AÜ	 T°Ô	5€BØ×Ñ˜QÓ×'Ñ'Ó)€EØ�Q‰J×ÑÔÐÑr&   zcno floating point exceptions, see https://github.com/numpy/numpy/pull/21895#issuecomment-1311525881)Úreasonc                  ó°  — g d¢g d¢g d¢g} t        dd¬«      }|j                  | «      j                  «       }|dk\  j                  «       sJ ‚t	        |dz  j                  d	¬
«      g d¢«       g d¢g d¢g d¢g} t        dd¬«      }d}t        j                  t        |¬«      5  |j                  | «      j                  «        d d d «       y # 1 sw Y   y xY w)Nr	  r
  r  Fr  r  r   rw   rv   r  r  zdivide by zerorÈ   )	r   rÁ   r  r  r   r  rƒ   r  ÚRuntimeWarning)r»   r  rÀ   Úin_warning_messages       r$   Útest_tfidf_no_smoothingr"  Ý  sÁ   € ò 
’IšyÐ)€AÜ	 U°Ô	6€BØ×Ñ˜QÓ×'Ñ'Ó)€EØ�Q‰J×ÑÔÐÐô ˜u a™xŸn™n°!˜nÓ4²oÔFò 
’IšyÐ)€AÜ	 U°Ô	6€Bà)ÐÜ	�‰”nÐ,>Ô	?ñ &Ø
×Ñ˜Ó×#Ñ#Ô%÷&÷ &ñ &ús   Â# CÃCc                  óÞ   — dgdgdgg} t        ddd ¬«      }|j                  | «      j                  «       }|d   dk(  sJ ‚|d   |d   kD  sJ ‚|d   |d   kD  sJ ‚|d   dk  sJ ‚|d   dk  sJ ‚y )Nrv   rw   r€   TF)Úsublinear_tfÚuse_idfr  r   )r   rÁ   r  r  s      r$   Útest_sublinear_tfr&  ÷  s–   € Ø
ˆˆqˆc�A�3ˆ€AÜ	 t°UÀÔ	F€BØ×Ñ˜QÓ×'Ñ'Ó)€EØ�‰8�qŠ=Ðˆ=Ø�‰8�e˜A‘hÒÐÐØ�‰8�e˜A‘hÒÐÐØ�‰8�aŠ<Ðˆ<Ø�‰8�aŠ<Ð‰<r&   c                  ó.	  — t        t        d d «      } t        d   g}t        t        «      dz
  }t        d¬«      }|j	                  | «      }t        |d«      r|j                  «       }|d|j                  d   f   dk(  sJ ‚t        |j                  ¬	«      }||fD ]°  }|j                  |«      }t        |d«      r|j                  «       }|j                  }|d|d
   f   dk(  sJ ‚|d|d   f   dk(  sJ ‚|d|d   f   dk(  sJ ‚d|vsJ ‚d|vsJ ‚|d|d   f   dk(  sJ ‚|d|d   f   dk(  sJ ‚|d|d   f   dk(  sJ ‚|d|d   f   dk(  rŒ°J ‚ t        d¬«      }	|	j                  |«      j                  |«      j                  «       }
t        |	j                  «      t        |j                  «      k(  sJ ‚|
j                  |t        |j                  «      fk(  sJ ‚|	j                  «      j                  «       }|j                  t        |«      t        |j                  «      fk(  sJ ‚t        dd¬«      }|j                  |«      j                  |«      j                  «       }t        |d«      rJ ‚t        d¬«      }t        j                  t         «      5  |j                  |«       d d d «       t#        t%        j&                  |d¬«      dg|z  «       t        t        d d «      } t)        d¬«      }|j*                  |_        |j	                  | «      j                  «       }|j,                  rJ ‚t#        |
|«       |j                  |«      j                  «       }t#        ||«       t        d ¬	«      }t        j                  t         «      5  |j                  | «       d d d «       |j/                  dd¬«       |j1                  «       }d}t3        |«      } ||«      }||k(  sJ ‚|j/                  dd ¬«       t        j                  t         «      5  |j1                  «        d d d «       d |_        t        j                  t         «      5  |j5                  «        d d d «       y # 1 sw Y   �Œ¿xY w# 1 sw Y   ŒÔxY w# 1 sw Y   Œ\xY w# 1 sw Y   y xY w)!Néÿÿÿÿrv   ç      à?©rä   Útocsrr   r¤   rw   r¦   ÚsaladÚtomatoÚwaterÚtheÚ	copyrightÚcokeÚburgerr¥   Úl1©r  F)r  r%  Úidf_T©r%  r  rã   rF   )rH   rÿ   rI   Ú_gabbledegook_)rH   rb   Ú_invalid_analyzer_type_)r¬   rÂ   r´   r   rÁ   Úhasattrr+  r±   r²   r   r®   r  r5  r³   rƒ   r„   rÌ   r   Únpr  r   rä   Úfixed_vocabulary_rÜ   Úbuild_preprocessorr   rn   )Ú
train_dataÚ	test_dataÚn_trainÚv1Úcounts_trainÚv2r¹   Úcounts_testr§   Út1rÀ   Ú
tfidf_testÚt2ÚtfÚt3ÚtvÚtfidf2Útfidf_test2Úv3Ú	processorrp   r@   Úresults                          r$   Útest_vectorizerrO    s  € ä”m C RÐ(Ó)€JÜ˜rÑ"Ð#€IÜ”-Ó  1Ñ$€Gô 
 Ô	$€BØ×#Ñ# JÓ/€LÜˆ|˜WÔ%Ø#×)Ñ)Ó+ˆØ˜˜2Ÿ>™>¨'Ñ2Ð2Ñ3°qÒ8Ð8Ð8ô 
 B§N¡NÔ	3€Bð �"ˆXò 8ˆØ—k‘k )Ó,ˆÜ�; Ô(Ø%×+Ñ+Ó-ˆKà—]‘]ˆ
Ø˜1˜j¨Ñ1Ð1Ñ2°aÒ7Ð7Ð7Ø˜1˜j¨Ñ2Ð2Ñ3°qÒ8Ð8Ð8Ø˜1˜j¨Ñ1Ð1Ñ2°aÒ7Ð7Ð7ð ˜JÑ&Ð&Ð&ð  *Ñ,Ð,Ð,ð ˜1˜j¨Ñ0Ð0Ñ1°QÒ6Ð6Ð6Ø˜1˜j¨Ñ2Ð2Ñ3°qÒ8Ð8Ð8Ø˜1˜j¨Ñ0Ð0Ñ1°QÒ6Ð6Ð6Ø˜1˜j¨Ñ1Ð1Ñ2°aÓ7Ð7Ð7ð/8ô4 
˜tÔ	$€BØ�F‰F�<Ó ×*Ñ*¨<Ó8×@Ñ@ÓB€EÜˆr�w‰w‹<œ3˜rŸ~™~Ó.Ò.Ð.Ð.Ø�;‰;˜7¤C¨¯©Ó$7Ð8Ò8Ð8Ð8ð —‘˜kÓ*×2Ñ2Ó4€JØ×Ñ¤ I£´°B·N±NÓ0CÐDÒDÐDÐDô 
˜t¨UÔ	3€BØ	�‰�Ó	×	'Ñ	'¨Ó	5×	=Ñ	=Ó	?€BÜ�r˜6Ô"Ð"Ð"ô 
 $Ô	'€BÜ	�‰”zÓ	"ñ #Ø
�‰�\Ô"÷#ô œbŸf™f R¨aÔ0°3°%¸'±/ÔBô ”m C RÐ(Ó)€JÜ	˜dÔ	#€Bà—	‘	€B„IØ×Ñ˜jÓ)×1Ñ1Ó3€FØ×#Ò#Ð#Ð#Ü˜e VÔ,ð —,‘,˜yÓ)×1Ñ1Ó3€KÜ˜j¨+Ô6ô 
 DÔ	)€BÜ	�‰”zÓ	"ñ !Ø
�‰�ZÔ ÷!ð ‡M�M °5€MÔ9Ø×%Ñ%Ó'€IØG€DÜ" 4Ó(€HÙ�t‹_€FØ�vÒÐÐð ‡M�MÐ 0¸t€MÔDÜ	�‰”zÓ	"ñ  Ø
×ÑÔ÷ ð .€B„MÜ	�‰”zÓ	"ñ Ø
×ÑÔ÷ð ÷Q#ñ #ú÷,!ð !ú÷ ð  ú÷
ð ús0   ÊQ&ÎQ3ÐQ?ÑRÑ&Q0Ñ3Q<Ñ?RÒRc                  ó”  — d\  } }}}t        | |||¬«      }|j                  t        «       |j                  j                  | k(  sJ ‚|j                  j
                  |k(  sJ ‚|j                  j                  |k(  sJ ‚|j                  j                  |k(  sJ ‚d|_        d|_        d|_        d|_        |j                  j                  | k(  sJ ‚|j                  j
                  |k(  sJ ‚|j                  j                  |k(  sJ ‚|j                  j                  |k(  sJ ‚|j                  t        «       |j                  j                  |j                  k(  sJ ‚|j                  j
                  |j
                  k(  sJ ‚|j                  j                  |j                  k(  sJ ‚|j                  j                  |j                  k(  sJ ‚y )N)r  FFF)r  r%  r  r$  r3  T)r   r®   r¯   Ú_tfidfr  r%  r  r$  )r  r%  r  r$  rI  s        r$   Útest_tfidf_vectorizer_settersrR  i  s…  € Ø.GÑ+€Dˆ'�:˜|Ü	Ø˜7¨zÈô
€Bð ‡F�FŒ>ÔØ�9‰9�>‰>˜TÒ!Ð!Ð!Ø�9‰9×Ñ Ò'Ð'Ð'Ø�9‰9×Ñ :Ò-Ð-Ð-Ø�9‰9×!Ñ! \Ò1Ð1Ð1ð €B„GØ€B„JØ€B„MØ€B„OØ�9‰9�>‰>˜TÒ!Ð!Ð!Ø�9‰9×Ñ Ò'Ð'Ð'Ø�9‰9×Ñ :Ò-Ð-Ð-Ø�9‰9×!Ñ! \Ò1Ð1Ð1à‡F�FŒ>ÔØ�9‰9�>‰>˜RŸW™WÒ$Ð$Ð$Ø�9‰9×Ñ §
¡
Ò*Ð*Ð*Ø�9‰9×Ñ 2§=¡=Ò0Ð0Ð0Ø�9‰9×!Ñ! R§_¡_Ò4Ð4Ñ4r&   c                  óì  — t        «       } | j                  t        «      }|j                  }|j                  t        t        «      | j                  fk(  sJ ‚|j                  | j                  k(  sJ ‚t        j                  |j                  «      dkD  sJ ‚t        j                  |j                  «      dk  sJ ‚t        j                  |j                  «      dkD  sJ ‚t        j                  |j                  «      dk  sJ ‚t        |j                  d   «      D ]9  }t        t        j                  j                  |d   j                  d«      d«       Œ; t        dd¬«      } | j                  t        «      }|j                  t        t        «      | j                  fk(  sJ ‚|j                  | j                  k(  sJ ‚|j                  }||kD  sJ ‚|d|z  k  sJ ‚t        j                  |j                  «      dkD  sJ ‚t        j                  |j                  «      dk  sJ ‚t        |j                  d   «      D ]9  }t        t        j                  j                  |d   j                  d«      d«       Œ; y )	Nr(  r   rv   rw   rã   ru   r3  )rz   r  )r   r²   rÂ   Únnzr³   r´   Ú
n_featuresÚdtyper:  ÚminÚdataÚmaxÚranger   Úlinalgr  )r¹   r»   Ú	token_nnzÚiÚ
ngrams_nnzs        r$   Útest_hashing_vectorizerr_  †  sò  € ÜÓ€AØ	�‰”MÓ"€AØ—‘€IØ�7‰7”sœ=Ó)¨1¯<©<Ð8Ò8Ð8Ð8Ø�7‰7�a—g‘gÒÐÐô �6‰6�!—&‘&‹>˜BÒÐÐÜ�6‰6�!—&‘&‹>˜AÒÐÐÜ�6‰6�!—&‘&‹>˜AÒÐÐÜ�6‰6�!—&‘&‹>˜AÒÐÐô �1—7‘7˜1‘:Óò ?ˆÜœBŸI™IŸN™N¨1¨Q©4¯9©9°aÓ8¸#Õ>ð?ô 	 f°4Ô8€AØ	�‰”MÓ"€AØ�7‰7”sœ=Ó)¨1¯<©<Ð8Ò8Ð8Ð8Ø�7‰7�a—g‘gÒÐÐð —‘€JØ˜	Ò!Ð!Ð!Ø˜˜I™Ò%Ð%Ð%ô �6‰6�!—&‘&‹>˜BÒÐÐÜ�6‰6�!—&‘&‹>˜AÒÐÐô �1—7‘7˜1‘:Óò ?ˆÜœBŸI™IŸN™N¨1¨Q©4¯9©9°aÓ8¸#Õ>ñ?r&   c                  ó4  — t        d¬«      } t        j                  t        «      5  | j	                  «        d d d «       | j
                  rJ ‚| j                  t        «      }|j                  \  }}t        | j                  «      |k(  sJ ‚| j	                  «       }t        |t        j                  «      sJ ‚|j                  t        k(  sJ ‚t        |«      |k(  sJ ‚t!        g d¢|«       t#        |«      D ]%  \  }}|| j                  j%                  |«      k(  rŒ%J ‚ g d¢}t        |¬«      } | j	                  «       }t!        g d¢|«       | j
                  sJ ‚t#        |«      D ]%  \  }}|| j                  j%                  |«      k(  rŒ%J ‚ y # 1 sw Y   �ŒXxY w)Nr)  r*  ©	r¥   r2  Úcelerir1  r¤   r,  Ú	sparklingr-  r.  r¦   )r   rƒ   r„   rÌ   rñ   r;  rÁ   rÂ   r³   r´   r±   r°   r:  ÚndarrayrV  r`   r	   Ú	enumerateÚget)rÞ   r»   Ú	n_samplesrU  Úfeature_namesÚidxÚnamer¶   s           r$   Útest_feature_namesrk  ¬  s�  € Ü	 Ô	$€Bô 
�‰”zÓ	"ñ #Ø
× Ñ Ô"÷#à×#Ò#Ð#Ð#ð 	×ÑœÓ'€AØŸG™GÑ€IˆzÜˆr�~‰~Ó *Ò,Ð,Ð,à×,Ñ,Ó.€MÜ�m¤R§Z¡ZÔ0Ð0Ð0Ø×Ñ¤&Ò(Ð(Ð(äˆ}Ó Ò+Ð+Ð+Üò
	
ð 	ôô ˜}Ó-ò /‰	ˆˆTØ�b—n‘n×(Ñ(¨Ó.Ó.Ð.Ð.ð/ò
€Eô 
 EÔ	*€BØ×,Ñ,Ó.€MÜò
	
ð 	ôð ×ÒÐÐä˜}Ó-ò /‰	ˆˆTØ�b—n‘n×(Ñ(¨Ó.Ó.Ð.Ð.ñ/÷#ñ #ús   ¦FÆFc                 ó~   — h d£} | dd¬«      }|j                  t        «       t        |j                  «      |k(  sJ ‚y )N>   r¥   r¤   r,  r2  g333333ã?é   )rä   Úmax_features)r®   rÂ   r¨   r±   )rD   Úexpected_vocabularyró   s      r$   Útest_vectorizer_max_featuresrp  ó  s<   € â>Ðñ  3°QÔ7€JØ‡N�N”=Ô!Üˆz×%Ñ%Ó&Ð*=Ò=Ð=Ñ=r&   c                  ó¶  — t        d¬«      } t        d¬«      }t        d ¬«      }| j                  t        «      j                  d¬«      }|j                  t        «      j                  d¬«      }|j                  t        «      j                  d¬«      }| j	                  «       }|j	                  «       }|j	                  «       }d|j                  «       k(  sJ ‚d|j                  «       k(  sJ ‚d|j                  «       k(  sJ ‚d|t        j                  |«         k(  sJ ‚d|t        j                  |«         k(  sJ ‚d|t        j                  |«         k(  sJ ‚y )Nrv   ©rn  r€   r   r  é   r/  )r   rÁ   r¯   r  rñ   rY  r:  Úargmax)	Úcv_1Úcv_3Úcv_NoneÚcounts_1Úcounts_3Úcounts_NoneÚ
features_1Ú
features_3Úfeatures_Nones	            r$   Ú"test_count_vectorizer_max_featuresr~  ý  s;  € ô ¨Ô*€DÜ¨Ô*€DÜ¨4Ô0€Gà×!Ñ!¤.Ó1×5Ñ5¸1Ð5Ó=€HØ×!Ñ!¤.Ó1×5Ñ5¸1Ð5Ó=€HØ×'Ñ'¬Ó7×;Ñ;ÀÐ;ÓC€Kà×+Ñ+Ó-€JØ×+Ñ+Ó-€JØ×1Ñ1Ó3€Mð �—‘“ÒÐÐØ�—‘“ÒÐÐØ�—‘Ó!Ò!Ð!Ð!ð �JœrŸy™y¨Ó2Ñ3Ò3Ð3Ð3Ø�JœrŸy™y¨Ó2Ñ3Ò3Ð3Ð3Ø�M¤"§)¡)¨KÓ"8Ñ9Ò9Ð9Ñ9r&   c                  óL  — g d¢} t        dd¬«      }|j                  | «       d|j                  j                  «       v sJ ‚t	        |j                  j                  «       «      dk(  sJ ‚d|_        |j                  | «       d|j                  j                  «       vsJ ‚t	        |j                  j                  «       «      dk(  sJ ‚d	|_        |j                  | «       d|j                  j                  «       vsJ ‚t	        |j                  j                  «       «      dk(  sJ ‚y )
N©ÚabcÚdeaÚeatr~   rã   ©ry   rä   r?   r�   r)  rm  rv   )r   r®   r±   r©   r´   rä   ©r>  rº   s     r$   Útest_vectorizer_max_dfr†    s  € Ú%€IÜ F°3Ô7€DØ‡H�HˆYÔØ�$×"Ñ"×'Ñ'Ó)Ñ)Ð)Ð)Üˆt×Ñ×$Ñ$Ó&Ó'¨1Ò,Ð,Ð,à€D„KØ‡H�HˆYÔØ�d×&Ñ&×+Ñ+Ó-Ñ-Ð-Ð-Üˆt×Ñ×$Ñ$Ó&Ó'¨1Ò,Ð,Ð,à€D„KØ‡H�HˆYÔØ�d×&Ñ&×+Ñ+Ó-Ñ-Ð-Ð-Üˆt×Ñ×$Ñ$Ó&Ó'¨1Ò,Ð,Ñ,r&   c                  óL  — g d¢} t        dd¬«      }|j                  | «       d|j                  j                  «       v sJ ‚t	        |j                  j                  «       «      dk(  sJ ‚d|_        |j                  | «       d|j                  j                  «       vsJ ‚t	        |j                  j                  «       «      dk(  sJ ‚d	|_        |j                  | «       d|j                  j                  «       vsJ ‚t	        |j                  j                  «       «      dk(  sJ ‚y )
Nr€  r~   rv   )ry   Úmin_dfr?   r�   rw   r  gš™™™™™é?)r   r®   r±   r©   r´   rˆ  r…  s     r$   Útest_vectorizer_min_dfr‰  )  s  € Ú%€IÜ F°1Ô5€DØ‡H�HˆYÔØ�$×"Ñ"×'Ñ'Ó)Ñ)Ð)Ð)Üˆt×Ñ×$Ñ$Ó&Ó'¨1Ò,Ð,Ð,à€D„KØ‡H�HˆYÔØ�d×&Ñ&×+Ñ+Ó-Ñ-Ð-Ð-Üˆt×Ñ×$Ñ$Ó&Ó'¨1Ò,Ð,Ð,à€D„KØ‡H�HˆYÔØ�d×&Ñ&×+Ñ+Ó-Ñ-Ð-Ð-Üˆt×Ñ×$Ñ$Ó&Ó'¨1Ò,Ð,Ñ,r&   c                  óØ  — ddg} t        dd¬«      }|j                  | «      j                  «       }t        g d¢|j	                  «       «       t        g d¢g d¢g|«       t        ddd	¬
«      }|j                  | «      j                  «       }t        g d¢g d¢g|«       t        ddd	t
        j                  ¬«      }|j                  | «      }|j                  t
        j                  k(  sJ ‚y )NÚaaabcÚabbder~   rã   r„  )r?   r  r  Údr)   )r€   rv   rv   r   r   )rv   rw   r   rv   rv   T)ry   rä   Úbinary)rv   rv   rv   r   r   )rv   rv   r   rv   rv   )ry   rä   rŽ  rV  )r   rÁ   r  r	   rñ   r:  Úfloat32rV  )r>  rº   r»   ÚX_sparses       r$   Útest_count_binary_occurrencesr‘  ;  sÈ   € à˜'Ð"€IÜ F°3Ô7€DØ×Ñ˜9Ó%×-Ñ-Ó/€AÜÒ0°$×2LÑ2LÓ2NÔOÜšªÐ9¸1Ô=ô  F°3¸tÔD€DØ×Ñ˜9Ó%×-Ñ-Ó/€AÜšªÐ9¸1Ô=ô  F°3¸tÌ2Ï:É:ÔV€DØ×!Ñ! )Ó,€HØ�>‰>œRŸZ™ZÒ'Ð'Ñ'r&   c                  ó†  — ddg} t        ddd ¬«      }|j                  | «      }t        j                  |dd j                  «      dk(  sJ ‚t        j                  |dd	 j                  «      d	k(  sJ ‚|j
                  t        j                  k(  sJ ‚t        ddd
d ¬«      }|j                  | «      }t        j                  |j                  «      dk(  sJ ‚|j
                  t        j                  k(  sJ ‚t        ddd
d t        j                  ¬«      }|j                  | «      }|j
                  t        j                  k(  sJ ‚y )Nr‹  rŒ  Fr~   )Úalternate_signry   r  r   rv   r€   rw   T)ry   r“  rŽ  r  )ry   r“  rŽ  r  rV  )r   r²   r:  rY  rX  rV  Úfloat64)r>  rº   r»   s      r$   Útest_hashed_binary_occurrencesr•  O  s  € à˜'Ð"€IÜ¨E¸FÈÔN€DØ�‰�yÓ!€AÜ�6‰6�!�A�a�&—+‘+Ó !Ò#Ð#Ð#Ü�6‰6�!�A�a�&—+‘+Ó !Ò#Ð#Ð#Ø�7‰7”b—j‘jÒ Ð Ð ô Ø¨°dÀô€Dð 	�‰�yÓ!€AÜ�6‰6�!—&‘&‹>˜QÒÐÐØ�7‰7”b—j‘jÒ Ð Ð ô Ø¨°dÀÌRÏZÉZô€Dð 	�‰�yÓ!€AØ�7‰7”b—j‘jÒ Ð Ñ r&   c                 ó~  — t         } | «       }|j                  |«      }|j                  |«      }t        |t        «      sJ ‚|j                  «       }t        ||«      D ]g  \  }}t        j                  t        j                   ||«      «      «      }t        j                  t        j                  |«      «      }t        ||«       Œi t        j                  |«      sJ ‚|j                  dk(  sJ ‚|j                  «       }	|j                  |	«      }
t        ||
«      D ]7  \  }}t        t        j                  |«      t        j                  |«      «       Œ9 |j                  «       }|j                  |«      }t        ||«      D ]7  \  }}t        t        j                  |«      t        j                  |«      «       Œ9 y )NÚcsr)rÂ   rÁ   rµ   r°   r«   rn   Úzipr:  ÚsortÚuniquer	   r
   ÚissparseÚformatr  Útocsc)rD   rX  ró   Útransformed_dataÚinversed_dataÚanalyzeÚdocÚinversed_termsr·   Útransformed_data2Úinversed_data2Úterms2Útransformed_data3Úinversed_data3Úterms3s                  r$   Ú!test_vectorizer_inverse_transformr©  i  s|  € ô €DÙ“€JØ!×/Ñ/°Ó5ÐØ×0Ñ0Ð1AÓB€MÜ�m¤TÔ*Ð*Ð*à×'Ñ'Ó)€GÜ" 4¨Ó7ò 2Ñˆˆ^Ü—‘œŸ	™	¡'¨#£,Ó/Ó0ˆÜŸ™¤§¡¨>Ó!:Ó;ˆÜ˜5 .Õ1ð2ô
 �?‰?Ð+Ô,Ð,Ð,Ø×"Ñ" eÒ+Ð+Ð+ð )×0Ñ0Ó2ÐØ×1Ñ1Ð2CÓD€NÜ˜]¨NÓ;ò <‰ˆˆvÜœ2Ÿ7™7 5›>¬2¯7©7°6«?Õ;ð<ð )×.Ñ.Ó0ÐØ×1Ñ1Ð2CÓD€NÜ˜]¨NÓ;ò <‰ˆˆvÜœ2Ÿ7™7 5›>¬2¯7©7°6«?Õ;ñ<r&   c                  óÒ  — t         t        z   } dgt        t         «      z  dgt        t        «      z  z   }t        | |dd¬«      \  }}}}t	        dt        «       fdt        «       fg«      }dd	gd
dœ}t        ||dd¬«      }|j                  ||«      j                  |«      }	t        |	|«       |j                  dk(  sJ ‚|j                  j                  d   }
|
j                  dk(  sJ ‚y )Nr(  rv   gš™™™™™É?r   ©Ú	test_sizeÚrandom_staterº   Úsvc©rv   rv   ru   ©ÚhingeÚsquared_hinge)Úvect__ngram_rangeÚ	svc__lossr€   )Ún_jobsrÞ   rã   )r¯   ÚNOTJUNK_FOOD_DOCSr´   r   r   r   r   r   r®   Úpredictr	   Úbest_score_Úbest_estimator_rÃ   rz   ©rX  Útargetr=  r>  Útarget_trainÚtarget_testÚpipelineÚ
parametersÚgrid_searchÚpredÚbest_vectorizers              r$   Ú-test_count_vectorizer_pipeline_grid_selectionrÃ  ‰  sþ   € äÔ-Ñ-€Dð ˆT”CœÓ'Ñ'¨1¨#´Ô4EÓ0FÑ*FÑF€Fô 8HØˆf °!ô8Ñ4€J�	˜<¨ô ˜&¤/Ó"3Ð4°u¼i»kÐ6JÐKÓL€Hð % fÐ-Ø/ñ€Jô ˜x¨¸AÀ!ÔD€Kð �?‰?˜: |Ó4×<Ñ<¸YÓG€DÜ�t˜[Ô)ð
 ×"Ñ" cÒ)Ð)Ð)Ø!×1Ñ1×=Ñ=¸fÑE€OØ×&Ñ&¨&Ò0Ð0Ñ0r&   c                  ó  — t         t        z   } dgt        t         «      z  dgt        t        «      z  z   }t        | |dd¬«      \  }}}}t	        dt        «       fdt        «       fg«      }dd	gd
ddœ}t        ||d¬«      }|j                  ||«      j                  |«      }	t        |	|«       |j                  dk(  sJ ‚|j                  j                  d   }
|
j                  dk(  sJ ‚|
j                  dk(  sJ ‚|
j                   rJ ‚y )Nr(  rv   gš™™™™™¹?r   r«  rº   r®  r¯  ru   )r3  r  r°  )r³  Ú
vect__normr´  )rµ  rã   r  )r¯   r¶  r´   r   r   r   r   r   r®   r·  r	   r¸  r¹  rÃ   rz   r  r;  rº  s              r$   Ú'test_vectorizer_pipeline_grid_selectionrÆ  ­  s%  € äÔ-Ñ-€Dð ˆT”CœÓ'Ñ'¨1¨#´Ô4EÓ0FÑ*FÑF€Fô 8HØˆf °!ô8Ñ4€J�	˜<¨ô ˜&¤/Ó"3Ð4°u¼i»kÐ6JÐKÓL€Hð % fÐ-Ø"Ø/ñ€Jô ˜x¨¸AÔ>€Kð �?‰?˜: |Ó4×<Ñ<¸YÓG€DÜ�t˜[Ô)ð
 ×"Ñ" cÒ)Ð)Ð)Ø!×1Ñ1×=Ñ=¸fÑE€OØ×&Ñ&¨&Ò0Ð0Ð0Ø×Ñ 4Ò'Ð'Ð'Ø×0Ò0Ð0Ð0Ð0r&   c                  óè   — t         t        z   } dgt        t         «      z  dgt        t        «      z  z   }t        dt	        «       fdt        «       fg«      }t        || |d¬«      }t        |g d¢«       y )Nr(  rv   rº   r®  r€   )rÞ   r  )r¯   r¶  r´   r   r   r   r   r	   )rX  r»  r¾  Ú	cv_scoress       r$   Ú)test_vectorizer_pipeline_cross_validationrÉ  Ô  sj   € äÔ-Ñ-€Dð ˆT”CœÓ'Ñ'¨1¨#´Ô4EÓ0FÑ*FÑF€Fä˜&¤/Ó"3Ð4°u¼i»kÐ6JÐKÓL€Hä ¨$°¸1Ô=€IÜ�y¢/Õ2r&   c                  ó„  — d} t        «       }|j                  | g«      }|j                  dk(  sJ ‚t        d d¬«      }|j	                  | g«      }|j                  dk(  sJ ‚|j
                  |j
                  k(  sJ ‚t        t        j                  |j                  «      t        j                  |j                  «      «       y )Nuî   ÐœÐ°ÑˆÐ¸Ð½Ð½Ð¾Ðµ Ð¾Ð±ÑƒÑ‡ÐµÐ½Ð¸Ðµ â€” Ð¾Ð±ÑˆÐ¸Ñ€Ð½Ñ‹Ð¹ Ð¿Ð¾Ð´Ñ€Ð°Ð·Ð´ÐµÐ» Ð¸Ñ�ÐºÑƒÑ�Ñ�Ñ‚Ð²ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¸Ð½Ñ‚ÐµÐ»Ð»ÐµÐºÑ‚Ð°, Ð¸Ð·ÑƒÑ‡Ð°ÑŽÑ‰Ð¸Ð¹ Ð¼ÐµÑ‚Ð¾Ð´Ñ‹ Ð¿Ð¾Ñ�Ñ‚Ñ€Ð¾ÐµÐ½Ð¸Ñ� Ð°Ð»Ð³Ð¾Ñ€Ð¸Ñ‚Ð¼Ð¾Ð², Ñ�Ð¿Ð¾Ñ�Ð¾Ð±Ð½Ñ‹Ñ… Ð¾Ð±ÑƒÑ‡Ð°Ñ‚ÑŒÑ�Ñ�.)rv   é   F)r  r“  )rv   i   )
r   rÁ   r³   r   r²   rT  r	   r:  r™  rX  )rî   rº   Ú	X_countedÚX_hasheds       r$   Útest_vectorizer_unicoderÎ  á  s¦   € ð	1ð ô Ó€DØ×"Ñ" H :Ó.€IØ�?‰?˜gÒ%Ð%Ð%ä $°uÔ=€DØ�~‰~˜x˜jÓ)€HØ�>‰>˜ZÒ'Ð'Ð'ð �=‰=˜HŸL™LÒ(Ð(Ð(ô ”r—w‘w˜yŸ~™~Ó.´·±¸¿¹Ó0FÕGr&   c                  óä   — ddg} t        | ¬«      }|j                  t        «      }|j                  t        «      }t	        |j                  «       |j                  «       «       |j                  sJ ‚y )Nr¤   rb  r¦   )r   rÁ   rÂ   r²   r   r  r;  )r§   rº   ÚX_1ÚX_2s       r$   Ú+test_tfidf_vectorizer_with_fixed_vocabularyrÒ  ù  sY   € à˜8Ð$€JÜ jÔ1€DØ
×
Ñ
œ]Ó
+€CØ
�.‰.œÓ
'€CÜ˜cŸk™k›m¨S¯[©[«]Ô;Ø×!Ò!Ð!Ñ!r&   c                  óÚ  — t        «       t        d¬«      t        d¬«      t        d¬«      t        «       t        t        ¬«      t        t        ¬«      t        t        ¬«      j	                  t
        «      t        t        ¬	«      j	                  t
        «      t        «       t        t        ¬«      t        «       j	                  t
        «      g} | D ]›  }t        j                  |«      }t        j                  |«      }t        |«      |j                  k(  sJ ‚|j                  «       |j                  «       k(  sJ ‚t        |j                  t
        «      |j                  t
        «      «       Œ� y )
Nr3  r4  T)rŽ  ru   ©rz   ra   )ry   rG   )r   r   r   r3   r®   r¯   r+   r   ÚpickleÚdumpsÚloadsÚtypeÚ	__class__Ú
get_paramsr   rÁ   )Ú	instancesÚorigr#   Úcopys       r$   Útest_pickling_vectorizerrÞ    s  € äÓÜ˜tÔ$Ü Ô&Ü fÔ-ÜÓÜ¤ZÔ0Ü¤Ô.Ü¤ZÔ0×4Ñ4´^ÓDÜ¤lÔ3×7Ñ7¼ÓGÜÓÜ¤Ô.ÜÓ×ÑœnÓ-ð€Ið ò 
ˆÜ�L‰L˜ÓˆÜ�|‰|˜A‹ˆÜ�D‹z˜TŸ^™^Ò+Ð+Ð+Ø�‰Ó  D§O¡OÓ$5Ò5Ð5Ð5Ü$Ø×Ñœ~Ó.Ø×Ñœ~Ó.õ	
ñ
r&   Úfactoryc                 óª   — t        «       } | |«      }d}t        j                  t        j                  |«      «      } ||«      } ||«      }||k(  sJ ‚y)z_Tokenizers cannot be pickled
    https://github.com/scikit-learn/scikit-learn/issues/12833
    rI   N)r   rÕ  r×  rÖ  )rß  ÚvecÚfunctionrp   Úroundtripped_functionr@   rN  s          r$   Útest_pickling_built_processorsrä    sS   € ô Ó
€CÙ�s‹|€HØG€DÜ"ŸL™L¬¯©°hÓ)?Ó@ÐÙ˜‹~€HÙ" 4Ó(€FØ�XÒÐÑr&   c                  óØ  — t         j                  j                  d«      } t        j                  g d¢«      }t	        dd«      D ]¥  }t        | j                  |dd¬«      «      }t        |¬«      }t        j                  t        j                  |«      «      }|j                  t        «       |j                  t        «       t        |j                  «       |j                  «       «       Œ§ y ©Nr   ra  éd   rŠ   F)Úsizer*   r¦   )r:  ÚrandomÚRandomStateÚarrayrZ  r¨   Úchoicer   rÕ  r×  rÖ  r®   rÂ   r	   rñ   )ÚrngÚvocab_wordsÚxÚ	vocab_setrÞ   Úunpickled_cvs         r$   Ú-test_countvectorizer_vocab_sets_when_picklingrò  3  sµ   € ô �)‰)×
Ñ
 Ó
"€CÜ—(‘(ò
	
ó€Kô �1�c‹]ò 
ˆÜ˜Ÿ
™
 ;°QÀ˜
ÓFÓGˆ	Ü¨	Ô2ˆÜ—|‘|¤F§L¡L°Ó$4Ó5ˆØ
�‰Œ}ÔØ×ÑœÔ'ÜØ×$Ñ$Ó&¨×(JÑ(JÓ(Lõ	
ñ
r&   c                  ó  — t         j                  j                  d«      } t        j                  g d¢«      }t	        dd«      D ]¿  }t        «       }| j                  |dd¬«      }t	        dd«      D ]
  }||||   <   Œ t        |¬«      }t        j                  t        j                  |«      «      }|j                  t        «       |j                  t        «       t        |j                  «       |j                  «       «       ŒÁ y ræ  )r:  ré  rê  rë  rZ  rª   rì  r   rÕ  r×  rÖ  r®   rÂ   r	   rñ   )rí  rî  rï  Ú
vocab_dictrÛ   ÚyrÞ   rñ  s           r$   Ú.test_countvectorizer_vocab_dicts_when_picklingrö  O  sØ   € Ü
�)‰)×
Ñ
 Ó
"€CÜ—(‘(ò
	
ó€Kô �1�c‹]ò 
ˆÜ“Vˆ
Ø—
‘
˜;¨Q¸�
Ó>ˆÜ�q˜!“ò 	%ˆAØ#$ˆJ�u˜Q‘xÒ ð	%ä¨
Ô3ˆÜ—|‘|¤F§L¡L°Ó$4Ó5ˆØ
�‰Œ}ÔØ×ÑœÔ'ÜØ×$Ñ$Ó&¨×(JÑ(JÓ(Lõ	
ñ
r&   c                  ó„  — t        «       j                  t        «      } t        «       j	                  | «      }t        j                  |«      }t        j                  |«      }t        |«      |j                  k(  sJ ‚t        |j                  | «      j                  «       |j                  | «      j                  «       «       y r    )r   rÁ   r¯   r   r®   rÕ  rÖ  r×  rØ  rÙ  r	   r  )r»   rÜ  r#   rÝ  s       r$   Útest_pickling_transformerrø  l  s‹   € ÜÓ×'Ñ'¬Ó7€AÜÓ×!Ñ! !Ó$€DÜ�‰�TÓ€AÜ�<‰<˜‹?€DÜ�‹:˜Ÿ™Ò'Ð'Ð'Ü�t×)Ñ)¨!Ó,×4Ñ4Ó6¸×8JÑ8JÈ1Ó8M×8UÑ8UÓ8WÕXr&   c                  ó2  — t        «       j                  t        «      } t        «       j	                  | «      }t        «       }|j
                  |_        t        |j                  | «      j                  «       |j                  | «      j                  «       «       y r    )	r   rÁ   r¯   r   r®   r5  r	   r²   r  )r»   rÜ  rÝ  s      r$   Útest_transformer_idf_setterrú  u  si   € ÜÓ×'Ñ'¬Ó7€AÜÓ×!Ñ! !Ó$€DÜÓ€DØ—	‘	€D„IÜ�t—~‘~ aÓ(×0Ñ0Ó2°D·N±NÀ1Ó4E×4MÑ4MÓ4OÕPr&   c                  óæ  — t        d¬«      } | j                  t        «       t        | j                  d¬«      }| j                  |_        t        |j                  t        «      j                  «       | j                  t        «      j                  «       «       t        | j                  d¬«      }d}t        j                  t        |¬«      5  | j                  |_        d d d «       y # 1 sw Y   y xY w)NTr6  ©r§   r%  Fz+`idf_` cannot be set when `user_idf=False`.rÈ   )r   r®   r¯   r±   r5  r	   r²   r  rƒ   r„   rÌ   )rÜ  rÝ  rø   s      r$   Útest_tfidf_vectorizer_setterrý  }  s®   € Ü 4Ô(€DØ‡H�HŒ^ÔÜ d×&6Ñ&6ÀÔE€DØ—	‘	€D„IÜØ�‰”~Ó&×.Ñ.Ó0Ø�‰”~Ó&×.Ñ.Ó0ôô
  d×&6Ñ&6ÀÔF€DØ;€GÜ	�‰”z¨Ô	1ñ Ø—I‘IˆŒ	÷÷ ñ ús   ÃC'Ã'C0c                  ó&  — t        d¬«      } | j                  t        «       t        | j                  d¬«      }t	        | j
                  «      }dg|dz   z  }t        j                  t        «      5  t        |d|«       d d d «       y # 1 sw Y   y xY w)NTr6  rü  rã   rv   r5  )
r   r®   r¯   r±   r´   r5  rƒ   r„   rÌ   Úsetattr)rº   rÝ  Úexpected_idf_lenÚinvalid_idfs       r$   Ú%test_tfidfvectorizer_invalid_idf_attrr  �  sw   € Ü 4Ô(€DØ‡H�HŒ^ÔÜ d×&6Ñ&6ÀÔE€DÜ˜4Ÿ9™9“~ÐØ�%Ð+¨aÑ/Ñ0€KÜ	�‰”zÓ	"ñ +Ü��f˜kÔ*÷+÷ +ñ +ús   Á0BÂBc                  ó¢   — g d¢} t        | ¬«      }t        j                  t        «      5  |j	                  g «       d d d «       y # 1 sw Y   y xY w)N)r?   r  r  r?   r?   r¦   r÷   rÑ   s     r$   Útest_non_unique_vocabr  —  s=   € Ú%€EÜ eÔ,€DÜ	�‰”zÓ	"ñ Ø�‰�Œ÷÷ ñ ús   ªAÁAc                  ó€   — d} t         }d„ }t        j                  || ¬«      5   |«        d d d «       y # 1 sw Y   y xY w)Nz?np.nan is an invalid document, expected byte or unicode string.c                  ó\   — t        «       } | j                  dt        j                  dg«       y )Núhello worldúhello hello)r   rÁ   r:  Únan)Úhvs    r$   Úfuncz0test_hashingvectorizer_nan_in_docs.<locals>.func¤  s#   € ÜÓ ˆØ
×Ñ˜-¬¯©°Ð?Õ@r&   rÈ   )rÌ   rƒ   r„   )r  Ú	exceptionr  s      r$   Ú"test_hashingvectorizer_nan_in_docsr  ž  s?   € ð P€GÜ€IòAô 
�‰�y¨Ô	0ñ ÙŒ÷÷ ñ ús   £4´=c                  ó0  — t        ddd ¬«      } | j                  sJ ‚| j                  ddg«      j                  «       }t	        |j                  «       g d¢«       | j                  ddg«      j                  «       }t	        |j                  «       g d¢«       y )NTF)rŽ  r%  r  r  r  )rv   rv   rv   r   )r   rŽ  rÁ   r  r	   Úravelr²   )r¹   r»   rè   s      r$   Útest_tfidfvectorizer_binaryr  ¬  ss   € ä˜t¨U¸Ô>€AØ�8Š8€Oˆ8à	�‰˜¨Ð6Ó7×?Ñ?ÓA€AÜ�q—w‘w“y¢,Ô/Ø	
�‰�m ]Ð3Ó	4×	<Ñ	<Ó	>€BÜ�r—x‘x“z¢<Õ0r&   c                  óš   — t        d¬«      } | j                  t        «       t        | j                  | j
                  j                  «       y )NTr6  )r   r®   r¯   r   r5  rQ  )rº   s    r$   Útest_tfidfvectorizer_export_idfr  ·  s0   € Ü 4Ô(€DØ‡H�HŒ^ÔÜ˜dŸi™i¨¯©×)9Ñ)9Õ:r&   c                  ó¾   — t        dg¬«      } t        | «      }| j                  t        «       |j                  t        «       |j                  | j                  k(  sJ ‚y )Nr/  r¦   )r   r   r®   rÂ   r±   )Ú
vect_vocabÚvect_vocab_clones     r$   Útest_vectorizer_vocab_cloner  ½  sM   € Ü ¨U¨GÔ4€JÜ˜ZÓ(ÐØ‡N�N”=Ô!Ø×ÑœÔ'Ø×'Ñ'¨:×+AÑ+AÒAÐAÑAr&   c                 óÂ  — d} | «       }t        j                  t        |¬«      5  |j                  d«       d d d «       t        j                  t        |¬«      5  |j	                  d«       d d d «       |j	                  ddg«       t        j                  t        |¬«      5  |j                  d«       d d d «       y # 1 sw Y   Œ‡xY w# 1 sw Y   Œ^xY w# 1 sw Y   y xY w)NzBIterable over raw text documents expected, string object received.rÈ   zhello world!ú	some textzsome other text)rƒ   r„   rÌ   rÁ   r®   r²   )rD   r  rá  s      r$   Ú&test_vectorizer_string_object_as_inputr  Å  s¹   € ð S€GÙ
‹,€Cä	�‰”z¨Ô	1ñ *Ø×Ñ˜.Ô)÷*ô 
�‰”z¨Ô	1ñ  Ø�‰�Ô÷ à‡G�Gˆ[Ð+Ð,Ô-ä	�‰”z¨Ô	1ñ &Ø�‰�nÔ%÷&ð &÷*ð *ú÷ ð  ú÷&ð &ús#   ¥B=ÁC	Â"CÂ=CÃ	CÃCÚX_dtypec                 óž   — t        j                  dd| d¬«      }t        «       j                  |«      }|j                  |j                  k(  sJ ‚y ©Né
   é N  é*   ©rV  r­  )r
   Úrandr   rÁ   rV  )r  r»   ÚX_transs      r$   Útest_tfidf_transformer_typer#  ×  s?   € ä�‰�B˜ W¸2Ô>€AÜÓ ×.Ñ.¨qÓ1€GØ�=‰=˜AŸG™GÒ#Ð#Ñ#r&   zcsc_container, csr_containerc                 ó$  — t        j                  ddt        j                  d¬«      } | |«      } ||«      }t	        «       j                  |«      }t	        «       j                  |«      }t        ||«       |j                  |j                  k(  sJ ‚y r  )r
   r!  r:  r”  r   rÁ   r   rœ  )Úcsc_containerÚcsr_containerr»   ÚX_cscÚX_csrÚX_trans_cscÚX_trans_csrs          r$   Útest_tfidf_transformer_sparser+  Þ  sz   € ô 	�‰�B˜¤R§Z¡Z¸bÔA€AÙ˜!Ó€EÙ˜!Ó€Eä"Ó$×2Ñ2°5Ó9€KÜ"Ó$×2Ñ2°5Ó9€KÜ  ¨kÔ:Ø×Ñ ×!3Ñ!3Ò3Ð3Ñ3r&   z0vectorizer_dtype, output_dtype, warning_expectedTFc                 ó   — t        j                  g d¢«      }t        | ¬«      }d}|r6t        j                  t
        |¬«      5  |j                  |«      }d d d «       nHt        j                  «       5  t        j                  dt
        «       |j                  |«      }d d d «       j                  |k(  sJ ‚y # 1 sw Y   ŒxY w# 1 sw Y   Œ'xY w)N)ÚnumpyÚscipyÚsklearn©rV  z'dtype' should be used.rÈ   r   )r:  rë  r   rƒ   r  r  rÁ   r  r  r  rV  )Úvectorizer_dtypeÚoutput_dtypeÚwarning_expectedr»   ró   Úwarning_msg_matchÚX_idfs          r$   Útest_tfidf_vectorizer_typer6  ì  s·   € ô 	�‰Ò.Ó/€AÜ Ð'7Ô8€Jà1ÐÙÜ�\‰\œ+Ð->Ô?ñ 	0Ø×,Ñ,¨QÓ/ˆE÷	0ð 	0ô ×$Ñ$Ó&ñ 	0Ü×!Ñ! '¬;Ô7Ø×,Ñ,¨QÓ/ˆE÷	0ð �;‰;˜,Ò&Ð&Ñ&÷	0ð 	0ú÷	0ð 	0ús   ÁB8Á2,CÂ8CÃCrá  )rw   rv   rÔ  c                 óü  — | j                   }t        j                  d|› d�«      }t        j                  t
        |¬«      5  | j                  dg«       d d d «       t        j                  t
        |¬«      5  | j                  dg«       d d d «       t        | t        «      r7t        j                  t
        |¬«      5  | j                  dg«       d d d «       y y # 1 sw Y   Œ‡xY w# 1 sw Y   Œ]xY w# 1 sw Y   y xY w)NzInvalid value for ngram_range=z/ lower boundary larger than the upper boundary.rÈ   zgood news everyone)rz   ÚreÚescaperƒ   r„   rÌ   r®   rÁ   r°   r   r²   )rá  Úinvalid_ranger  s      r$   Ú$test_vectorizers_invalid_ngram_ranger;    sâ   € ð —O‘O€MÜ�i‰iØ
(¨¨ð 89ð 	9ó€Gô
 
�‰”z¨Ô	1ñ (Ø�‰Ð%Ð&Ô'÷(ô 
�‰”z¨Ô	1ñ 2Ø×ÑÐ/Ð0Ô1÷2ô �#Ô(Ô)Ü�]‰]œ:¨WÔ5ñ 	2Ø�M‰MÐ/Ð0Ô1÷	2ð 	2ð *÷(ð (ú÷2ð 2ú÷	2ð 	2ús$   ÁCÁ7C&Â=C2ÃC#Ã&C/Ã2C;c                 óˆ   — | j                  «       }| j                  «       }| j                  «       }| j                  |||«      S r    )rÝ   Úbuild_tokenizerr<  Ú_check_stop_words_consistency)Ú	estimatorrÖ   ÚtokenizeÚ
preprocesss       r$   r>  r>     sA   € Ø×)Ñ)Ó+€JØ×(Ñ(Ó*€HØ×-Ñ-Ó/€JØ×2Ñ2°:¸zÈ8ÓTÐTr&   c                  ó”  — d} d| z  }t        «       t        «       t        «       fD ]]  }|j                  g d¢¬«       t	        j
                  t        |¬«      5  |j                  dg«       d d d «       |`t        |«      du rŒ]J ‚ t        j                  «       5  t        j                  dt        «       j                  dg«       d d d «       t        «      �J ‚|j                  g d	¢¬«       t	        j
                  t        |¬«      5  |j                  dg«       d d d «       y # 1 sw Y   Œ½xY w# 1 sw Y   ŒmxY w# 1 sw Y   y xY w)
Nz\['and', 'll', 've'\]z}Your stop_words may be inconsistent with your preprocessing. Tokenizing the stop words generated tokens %s not in stop_words.)úyou'veÚyouúyou'llÚANDrÕ   rÈ   r  Fr   )rC  rD  rE  ÚblahrF  )r   r   r   rÜ   rƒ   r  r  rÁ   Ú_stop_words_idr>  r  r  r  )Úlstrr  rá  s      r$   Ú'test_vectorizer_stop_words_inconsistentrJ  '  s7  € Ø#€Dð	'à)-ñ	.ð ô
  Ó!¤?Ó#4Ô6GÓ6IÐJò ;ˆØ�‰Ò"DˆÔEÜ�\‰\œ+¨WÔ5ñ 	/Ø×Ñ˜}˜oÔ.÷	/ð ÐÜ,¨SÓ1°UÒ:Ð:Ð:ð;ô 
×	 Ñ	 Ó	"ñ +Ü×Ñ˜g¤{Ô3Ø×Ñ˜=˜/Ô*÷+ô )¨Ó-Ð5Ð5Ð5ð ‡N�NÒH€NÔIÜ	�‰”k¨Ô	1ñ +Ø×Ñ˜=˜/Ô*÷+ð +÷	/ð 	/ú÷+ð +ú÷+ð +ús$   ÁD&Â-D2Ä
D>Ä&D/	Ä2D;Ä>Er&  c                 óJ  —  | dt         j                  ¬«      }t         j                  }|j                  j                  |«      |_        |j                  j                  |«      |_        ddddœ}t        «       j                  ||«      }||j                  j                  k(  sJ ‚y)zò
    Check that CountVectorizer._sort_features preserves the dtype of its sparse
    feature matrix.

    This test is skipped on 32bit platforms, see:
        https://github.com/scikit-learn/scikit-learn/pull/11295
    for more details.
    )rŠ   rŠ   r0  r   rv   rw   )zscikit-learnrU   zgreat!N)r:  Úint64ÚindicesÚastypeÚindptrr   Ú_sort_featuresrV  )r&  r»   ÚINDICES_DTYPEr§   ÚXss        r$   Ú7test_countvectorizer_sort_features_64bit_sparse_indicesrS  B  s‚   € ñ 	�f¤B§H¡HÔ-€Aô —H‘H€MØ—	‘	× Ñ  Ó/€A„IØ�x‰x�‰˜}Ó-€A„Hà"#¨1¸Ñ:€Jä	Ó	×	)Ñ	)¨!¨ZÓ	8€Bà˜BŸJ™J×,Ñ,Ò,Ð,Ñ,r&   Ú	Estimatorc                 ó.  — ddig} | «       }t        |«      du sJ ‚ | d„ dg¬«      }t        |«      dk(  sJ ‚t        |«      �J ‚|j                  |«        G d„ d	| «      } |dg¬
«      }t        |«      dk(  sJ ‚ | d„ dg¬«      }t        |«      du sJ ‚y )Nrp   r  Tc                 ó   — | d   S ©Nrp   r2   ©rï  s    r$   ú<lambda>z?test_stop_word_validation_custom_preprocessor.<locals>.<lambda>e  s
   € ¨1¨V©9€ r&   Úand)rb   rÖ   r   c                   ó   — e Zd Zd„ Zy)úFtest_stop_word_validation_custom_preprocessor.<locals>.CustomEstimatorc                 ó   — d„ S )Nc                 ó   — | d   S rW  r2   rX  s    r$   rY  zktest_stop_word_validation_custom_preprocessor.<locals>.CustomEstimator.build_preprocessor.<locals>.<lambda>m  s
   € ˜Q˜v™Y€ r&   r2   )Úselfs    r$   r<  zYtest_stop_word_validation_custom_preprocessor.<locals>.CustomEstimator.build_preprocessorl  s   € Ù&Ð&r&   N)Ú__name__Ú
__module__Ú__qualname__r<  r2   r&   r$   ÚCustomEstimatorr\  k  s   „ ó	'r&   rc  rÕ   c                 óJ   — t        j                  d«      j                  | «      S )Nz\w{1,})r8  ÚcompileÚfindall©r¡  s    r$   rY  z?test_stop_word_validation_custom_preprocessor.<locals>.<lambda>s  s   € œbŸj™j¨Ó3×;Ñ;¸CÓ@€ r&   )rm   rÖ   )r>  rÁ   )rT  rX  rá  rc  s       r$   Ú-test_stop_word_validation_custom_preprocessorrh  \  s¿   € ð �[Ð!Ð"€Dá
‹+€CÜ(¨Ó-°Ñ5Ð5Ð5á
Ñ!4À%ÀÔ
I€CÜ(¨Ó-°Ò8Ð8Ð8ä(¨Ó-Ð5Ð5Ð5Ø×Ñ�dÔô'˜)ô 'ñ  e WÔ
-€CÜ(¨Ó-°Ò8Ð8Ð8á
Ù@ÈeÈWô€Cô )¨Ó-°Ñ5Ð5Ñ5r&   zinput_type, err_type, err_msgÚfilenamer=   r[   z$'str' object has no attribute 'read'c                 ó–   — dg}t        j                  ||¬«      5   | d„ |¬«      j                  |«       d d d «       y # 1 sw Y   y xY w)Nú"this is text, not file or filenamerÈ   c                 ó"   — | j                  «       S r    r-   rX  s    r$   rY  z.test_callable_analyzer_error.<locals>.<lambda>…  s   €  Q§W¡W£Y€ r&   ©ry   r\   )rƒ   r„   rÁ   )rT  Ú
input_typeÚerr_typerø   rX  s        r$   Útest_callable_analyzer_errorrp  x  sJ   € ð 1Ð1€DÜ	�‰�x wÔ	/ñ VÙÑ.°jÔA×OÑOÐPTÔU÷V÷ Vñ Vús	   ›?¿Ary   c                 ó   — t        | d«      S )NÚr)Úopenrg  s    r$   rY  rY  ‘  s   € œT # s›^€ r&   c                 ó"   — | j                  «       S r    )Úreadrg  s    r$   rY  rY  ‘  s   € ¸¿¹»€ r&   rn  c                 ó¤   — dg}t        j                  t        t        f«      5   | ||¬«      j	                  |«       d d d «       y # 1 sw Y   y xY w)Nrk  rm  )rƒ   r„   ÚFileNotFoundErrorÚAttributeErrorrÁ   )rT  ry   rn  rX  s       r$   Ú&test_callable_analyzer_change_behaviorry  ˆ  sL   € ð 1Ð1€DÜ	�‰Ô)¬>Ð:Ó	;ñ KÙ˜8¨:Ô6×DÑDÀTÔJ÷K÷ Kñ Kús   £AÁAc                 óâ   — d„ }| j                  d«      }|j                  d«       t        j                  t        d¬«      5   ||d¬«      j                  |g«       d d d «       y # 1 sw Y   y xY w)Nc                 ó   — t        d«      ‚)NÚtesting)Ú	Exceptionrg  s    r$   ry   z6test_callable_analyzer_reraise_error.<locals>.analyzerŸ  s   € Ü˜	Ó"Ð"r&   zfile.txtzsample content
r|  rÈ   r[   rm  )ÚjoinÚwriterƒ   r„   r}  rÁ   )ÚtmpdirrT  ry   Úfs       r$   Ú$test_callable_analyzer_reraise_errorr‚  š  sb   € ò
#ð 	�‰�JÓ€AØ‡G�GÐÔä	�‰”y¨	Ô	2ñ FÙ˜8¨6Ô2×@Ñ@À!ÀÔE÷F÷ Fñ Fús   ÁA%Á%A.zjstop_words, tokenizer, preprocessor, ngram_range, token_pattern,analyzer, unused_name, ovrd_name, ovrd_msgrC  rE  r¯  r~   z'stop_words'ú
'analyzer'ú	!= 'word'c                 ó"   — | j                  «       S r    r-   r"   s    r$   rY  rY  ¿  ó   € �a—g‘g“i€ r&   z'tokenizer'c                 ó"   — | j                  «       S r    r-   r"   s    r$   rY  rY  Ê  r†  r&   ú\w+rs   ú'token_pattern'zis not Nonec                 ó"   — | j                  «       S r    ©r!   r"   s    r$   rY  rY  Ö  r†  r&   c                 ó"   — | j                  «       S r    r‹  r"   s    r$   rY  rY  Ù  r†  r&   z'preprocessor'zis callableru   c                 ó"   — | j                  «       S r    r‹  r"   s    r$   rY  rY  ä  r†  r&   z'ngram_range')	NNNr¯  rˆ  r~   r‰  rƒ  r„  c
                 óä   — t         }
 | «       }|j                  ||||||¬«       d|›d|›d|	›�}t        j                  t        |¬«      5  |j                  |
«       d d d «       y # 1 sw Y   y xY w)N)rÖ   rm   rb   rz   rí   ry   zThe parameter z will not be used since ú rÈ   )r¯   rÜ   rƒ   r  r  r®   )rD   rÖ   rm   rb   rz   rí   ry   Úunused_nameÚ	ovrd_nameÚovrd_msgr=  rº   rÍ   s                r$   Útest_unused_parameters_warnr“  ©  sw   € ôr  €Já‹<€DØ‡O�OØØØ!ØØ#Øð õ ò 	ÚÙð€Cô
 
�‰”k¨Ô	-ñ Ø�‰�Ô÷÷ ñ ús   ÁA&Á&A/zVectorizer, Xrv   rw   )râ   Úbarr€   )râ   Úbazc                 ól   —  | «       }t        |d«      rJ ‚|j                  |«       t        |d«      rJ ‚y )NÚn_features_in_)r9  r®   )rD   r»   ró   s      r$   Útest_n_features_inr˜    s<   € ñ “€JÜ�zÐ#3Ô4Ð4Ð4Ø‡N�N�1ÔÜ�zÐ#3Ô4Ð4Ð4Ð4r&   c                  óž   — t        d¬«      } | j                  ddg«      j                  }| j                  ddg«      j                  }||k(  sJ ‚y )Nrv   rr  ÚhelloÚworld)r   r®   r±   )rá  Úvocab1Úvocab2s      r$   Ú)test_tie_breaking_sample_order_invariancerž  %  sN   € ô  qÔ
)€CØ�W‰W�g˜wÐ'Ó(×4Ñ4€FØ�W‰W�g˜wÐ'Ó(×4Ñ4€FØ�VÒÐÑr&   c                  ój   — t        dd¬«      } | j                  dg«      j                  }|d   dk\  sJ ‚y )Ni@B )rw   r€   )rU  rz   z22pcs efuturer   )r   r²   rM  )ÚhashingrM  s     r$   Ú2test_nonnegative_hashing_vectorizer_result_indicesr¡  .  s7   € ä¨7ÀÔG€GØ×Ñ Ð 1Ó2×:Ñ:€GØ�1‰:˜Š?Ð‰?r&   c                 ó.   —  | «       }t        |d«      rJ ‚y)z0Check that vectorizers do not define set_output.Ú
set_outputN)r9  )rT  rœ   s     r$   Ú'test_vectorizers_do_not_have_set_outputr¤  5  s   € ñ
 ‹+€CÜ�s˜LÔ)Ð)Ð)Ð)r&   c                 ó¤  — t        j                  ddt        j                  d¬«      } | |«      }|j	                  «       }t        «       j                  |«      }|j                  |d¬«      }t        ||«       ||usJ ‚|j                  |d¬«      }||u sJ ‚t        j                  t        «      5  t        ||«       ddd«       y# 1 sw Y   yxY w)	zJCheck the behaviour of TfidfTransformer.transform with the copy parameter.r  r  r  r   T)rÝ  FN)r
   r!  r:  r”  rÝ  r   r®   r²   r   rƒ   r„   ÚAssertionError)r&  r»   r(  ÚX_csr_originalÚtransformerÚX_transforms         r$   Útest_tfidf_transformer_copyrª  >  sÁ   € ô 	�‰�B˜¤R§Z¡Z¸bÔA€AÙ˜!Ó€Eð —Z‘Z“\€Nä"Ó$×(Ñ(¨Ó/€Kà×'Ñ'¨°DÐ'Ó9€KÜ  ¨Ô7Ø˜eÑ#Ð#Ð#à×'Ñ'¨°EÐ'Ó:€KØ˜%ÑÐÐÜ	�‰”~Ó	&ñ <Ü$ U¨NÔ;÷<÷ <ñ <ús   Â0CÃCrV  c                 óà   — t        d«      D �cg c]  }t        t        j                  «       «      ‘Œ! }}t	        | ¬«      j                  |«      }|j                  j                  | k(  sJ ‚yc c}w )z˜Check that `idf_` has the same dtype as the input data.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/30016
    i † r0  N)rZ  ÚstrÚuuidÚuuid4r   r®   r5  rV  )rV  r]  r»   ró   s       r$   Ú(test_tfidf_vectorizer_perserve_dtype_idfr¯  S  sX   € ô %*¨'£NÖ3˜qŒŒT�Z‰Z‹\Õ	Ð3€AÐ3Ü  uÔ-×1Ñ1°!Ó4€JØ�?‰?× Ñ  EÒ)Ð)Ñ)ùò 	4s   Ž$A+)‹rÕ  r8  r­  r  Úcollectionsr   Úcollections.abcr   Ú	functoolsr   Úior   Ú	itertoolsr   r-  r:  rƒ   Únumpy.testingr   r	   r.  r
   Úsklearn.baser   Úsklearn.feature_extraction.textr   r   r   r   r   r   r   r   Úsklearn.model_selectionr   r   r   Úsklearn.pipeliner   Úsklearn.svmr   Úsklearn.utils._testingr   r   r   Úsklearn.utils.fixesr   r   r   r¯   r¶  rÂ   r%   r+   r/   r3   rA   rC   ÚmarkÚparametrizerq   r{   rˆ   r˜   r�   r¡   r½   rÆ   rÎ   rÒ   rà   rå   ré   rõ   rù   r  r  r  Úxfailr"  r&  rO  rR  r_  rk  rp  r~  r†  r‰  r‘  r•  r©  rÃ  rÆ  rÉ  rÎ  rÒ  rÞ  rn   r<  r=  rä  rò  rö  rø  rú  rý  r  r  r  r  r  r  r  r�  r”  r#  r+  Úint32rL  r6  r;  r>  rJ  rS  rh  rw  rx  rp  Úparamry  r‚  r“  r˜  rž  r¡  r¤  rª  r¯  r2   r&   r$   ú<module>rÂ     s;  ðÛ Û 	Û Û Ý #Ý #Ý Ý Ý ã Û ß GÝ å ÷	÷ 	ó 	÷ TÑ SÝ %Ý !÷ñ ÷
 IÑ Hð€ðÐ ð Ð!2Ñ2€ò,ò òò$ò!0òH.ð* ‡�×Ñ˜¨Ð9JÐ'KÓLñ: ó Mð: òz ò<ò&&ò4&ò()ò.&ò*
+ò&ò$ò0òEò&ò4ò&ò&)ò*<òð  ‡�×ÑØð	Mð ó ñ&óð&ò&òdòN5ò:#?òLD/ðN ‡�×Ñ˜¨¸Ð'IÓJñ>ó Kð>ò:ò4-ò$-ò$(ò(!ð4 ‡�×Ñ˜¨¸Ð'IÓJñ<ó Kð<ò>!1òH$1òN
3òHò0"ò
ð6 ‡�×ÑØà×&Ñ&Ø×*Ñ*Ø×'Ñ'ðóñ
óð
ò
ò8
ò:YòQòò +òòò1ò;òBð ‡�×ÑØ�? OÐ5FÐGóñ&óð&ð ‡�×Ñ˜ R§Z¡Z°·±Ð$<Ó=ñ$ó >ð$ð ‡�×ÑØ"¡G¨N¸NÓ$Kóñ4óð4ð ‡�×ÑØ6à	�‰�2—:‘:˜tÐ$Ø	�‰�2—:‘:˜tÐ$Ø	�‰�R—Z‘Z Ð'Ø	�‰�R—Z‘Z Ð'ð	óñ'óð'ð ‡�×ÑØ	á fÔ-Ù FÔ+Ù FÔ+ðóñ2óð2ò(Uò+ð6 Ø‡�×Ñ˜¨.Ó9ñ-ó :ó ð-ð0 ‡�×ÑØ�/ ?Ð4EÐFóñ6óð6ð2 ‡�×ÑØ�/ ?Ð4EÐFóð ‡�×ÑØ#à	Ð&¨Ð+Ø	�Ð!GÐHðóñVóóðVð ‡�×ÑØàØØˆ�ŠÐ&Ó'ðóð ‡�×ÑØÑ+Ñ-CÐDóð ‡�×Ñ˜¨°
Ð';Ó<ñKó =óóðKð ‡�×ÑØ�/ ?Ð4EÐFóñ	Fóð	Fð ‡�×ÑØ�?Ð$5°ÐGóð ‡�×Ñð	5ð
 �xÐ ØØØØØØØØð
	
ð ÙØØØØØØØð
	
ð ÙØØØØØØØð
	
ð ØÙØØÙØØØð
	
ð ØØØØÙØØØð
	
ð
	
ðqCóIñTóUIóðZð@ ‡�×ÑØà	 Q¨qÑ1¸1ÀQÑ3GÐHÐIØ	˜.Ð)ðóñ5óð5òòð ‡�×ÑØ�/ ?Ð4DÐFWÐXóñ*óð*ð ‡�×Ñ˜¨.Ó9ñ<ó :ð<ð( ‡�×Ñ˜ 2§:¡:¨r¯z©zÐ":Ó;ñ*ó <ñ*r&   