+
    ÖÇÜhP/  ã                   óŽ   € R t ^ RIt^ RIt^ RIHt RR ltR tR tR t	 ! R R4      t
R	 tR
 t]3R lt]3R lt/ sRR ltR tR# )z0
Utility functions and classes for classifiers.
N)ÚLazyMapc                ó¤   a € Vf(   T;'       d    \        V^ ,          \        \        34      pV'       d   V 3R lp\        W14      # \        S V4      # )an  
Use the ``LazyMap`` class to construct a lazy list-like
object that is analogous to ``map(feature_func, toks)``.  In
particular, if ``labeled=False``, then the returned list-like
object's values are equal to::

    [feature_func(tok) for tok in toks]

If ``labeled=True``, then the returned list-like object's values
are equal to::

    [(feature_func(tok), label) for (tok, label) in toks]

The primary purpose of this function is to avoid the memory
overhead involved in storing all the featuresets for every token
in a corpus.  Instead, these featuresets are constructed lazily,
as-needed.  The reduction in memory overhead can be especially
significant when the underlying list of tokens is itself lazy (as
is the case with many corpus readers).

:param feature_func: The function that will be applied to each
    token.  It should return a featureset -- i.e., a dict
    mapping feature names to feature values.
:param toks: The list of tokens to which ``feature_func`` should be
    applied.  If ``labeled=True``, then the list elements will be
    passed directly to ``feature_func()``.  If ``labeled=False``,
    then the list elements should be tuples ``(tok,label)``, and
    ``tok`` will be passed to ``feature_func()``.
:param labeled: If true, then ``toks`` contains labeled tokens --
    i.e., tuples of the form ``(tok, label)``.  (Default:
    auto-detect based on types.)
c                 ó4   <€ S! V ^ ,          4      V ^,          3# ©é    © )Úlabeled_tokenÚfeature_funcs   &€Ú4/usr/lib/python3/dist-packages/nltk/classify/util.pyÚ	lazy_funcÚ!apply_features.<locals>.lazy_funcA   s   ø€ Ù  ¨qÕ!1Ó2°MÀ!Õ4DÐEÐEó    )Ú
isinstanceÚtupleÚlistr   )r	   ÚtoksÚlabeledr   s   f&& r
   Úapply_featuresr      sJ   ø€ ðB ‚Ø×=Ð=œ: d¨1¥g´´t¨}Ó=ˆßõ	Fô �yÓ'Ð'ä�| TÓ*Ð*r   c                óL   € \        V  UUu0 uF  w  rVkK	  	  upp4      # u uppi )a  
:return: A list of all labels that are attested in the given list
    of tokens.
:rtype: list of (immutable)
:param tokens: The list of classified tokens from which to extract
    labels.  A classified token has the form ``(token, label)``.
:type tokens: list
)r   )ÚtokensÚtokÚlabels   &  r
   Úattested_labelsr   I   s#   € ô ©FÔ3©F™L˜S“%©FÒ3Ó4Ð4ùÓ3s   ‹ 
c                 ó&  € T P                  V UUu. uF  w  r#VNK	  	  upp4      p\        W4       UUUu. uF  w  w  r#qUP                  V4      NK  	  pppp\        P                  ! \        V4      \        V4      ,          4      # u uppi u upppi ©N)Úprob_classify_manyÚzipÚprobÚmathÚlogÚsumÚlen)Ú
classifierÚgoldÚfsÚlÚresultsÚpdistÚlls   &&     r
   Úlog_likelihoodr)   U   sp   € Ø×+Ñ+¹tÔ,D¹t±G°R«R¹tÒ,DÓE€GÜ03°DÔ0BÕ	CÑ0BÑ,™W˜b e�*‰*�QŽ-Ñ0B€BÒ	CÜ�8Š8”C˜“Gœc "›gÕ%Ó&Ð&ùó -EùÜ	Cs
   ‘B
µBc                 óú   € T P                  V UUu. uF  w  r#VNK	  	  upp4      p\        W4       UUUu. uF  w  w  r#qSV8H  NK  	  ppppV'       d   \        V4      \        V4      ,          # ^ # u uppi u upppi r   )Úclassify_manyr   r    r!   )r"   r#   r$   r%   r&   ÚrÚcorrects   &&     r
   Úaccuracyr.   [   sh   € Ø×&Ñ&¹$Ô'?¹$©w°«¹$Ò'?Ó@€GÜ*-¨dÔ*<Õ=Ñ*<™,™7˜B A�AŒvÑ*<€GÒ=ßÜ�7‹|œc '›lÕ*Ð*áùó (@ùÜ=s
   ‘A0
µA6c                   ó0   a € ] tR t^dt o RtR tR tRtV tR# )ÚCutoffCheckerzµ
A helper class that implements cutoff checks based on number of
iterations and log likelihood.

Accuracy cutoffs are also implemented, but they're almost never
a good idea to use.
c                óÌ   € VP                  4       V n        R V9   d   \        VR ,          4      ) VR &   RV9   d   \        VR,          4      VR&   RV n        RV n        ^V n        R# )Úmin_llÚmin_lldeltaN)ÚcopyÚcutoffsÚabsr(   ÚaccÚiter)Úselfr5   s   &&r
   Ú__init__ÚCutoffChecker.__init__m   s_   € Ø—|‘|“~ˆŒØ�wÔÜ!$ W¨XÕ%6Ó!7Ð 7ˆG�HÑØ˜GÔ#Ü%(¨°Õ)?Ó%@ˆG�MÑ"ØˆŒØˆŒØˆŽ	r   c                ó&  € V P                   pV ;P                  ^,          un        RV9   d   V P                  VR,          8¼  d   R# \        P                  P                  P                  W4      p\        P                  ! V4      '       d   R# RV9   g   RV9   d_   RV9   d   WCR,          8¼  d   R# RV9   d<   V P                  '       d*   W@P                  ,
          \        VR,          4      8:  d   R# W@n        RV9   g   RV9   dŠ   \        P                  P                  P                  W4      pRV9   d   WSR,          8¼  d   R# RV9   d<   V P                  '       d*   WPP                  ,
          \        VR,          4      8:  d   R# WPn
        R# R# )	é   Úmax_iterTr2   r3   Úmax_accÚmin_accdeltaFN)r5   r8   ÚnltkÚclassifyÚutilr)   r   Úisnanr(   r6   r7   )r9   r"   Ú
train_toksr5   Únew_llÚnew_accs   &&&   r
   ÚcheckÚCutoffChecker.checkw   s-  € Ø—,‘,ˆØ�	Š	�Q��	Ø˜Ô  T§Y¡Y°'¸*Õ2EÔ%EÙä—‘×#Ñ#×2Ñ2°:ÓJˆÜ�:Š:�f×ÒÙà�wÔ -°7Ô":Ø˜7Ô" v¸Õ1BÔ'BÙà Ô(Ø—G—G�GØŸw™wÕ&¬3¨w°}Õ/EÓ+FÔFáØŒGà˜Ô >°WÔ#<Ü—m‘m×(Ñ(×7Ñ7¸
ÓOˆGØ˜GÔ#¨¸9Õ3EÔ(EÙà 'Ô)Ø—H—H�HØ§¡Õ(¬S°¸Õ1HÓ-IÔIáØŒHáñ $=r   )r7   r5   r8   r(   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r:   rH   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r
   r0   r0   d   s   ø‡ € ñò÷!ð !r   r0   c                 ó  € / pR VR&   V ^ ,          P                  4       VR&   V R,          P                  4       VR&   R FH  pV P                  4       P                  V4      VRV,          &   W P                  4       9   VRV,          &   KJ  	  V# )TÚalwaysonÚ
startswithÚendswithÚabcdefghijklmnopqrstuvwxyzú	count(%s)úhas(%s)éÿÿÿÿ©ÚlowerÚcount©ÚnameÚfeaturesÚletters   &  r
   Únames_demo_featuresra       sƒ   € Ø€HØ€HˆZÑØ! !�WŸ]™]›_€Hˆ\ÑØ �8Ÿ>™>Ó+€HˆZÑÛ.ˆØ)-¯©«×);Ñ);¸FÓ)Cˆ�˜vÕ%Ñ&Ø'-·±³Ñ'=ˆ�˜VÕ#Ó$ñ /ð €Or   c                 ó°  € / pR VR&   V ^ ,          P                  4       R9   VR&   V R
,          P                  4       R9   VR&   R FŽ  pV P                  4       P                  V4      VRV,          &   W P                  4       9   VRV,          &   W ^ ,          P                  4       8H  VRV,          &   W R
,          P                  4       8H  VR	V,          &   K�  	  V# )TrS   Úaeiouyzstartswith(vowel)zendswith(vowel)rV   rW   rX   zstartswith(%s)zendswith(%s)rY   rZ   r]   s   &  r
   Úbinary_names_demo_featuresrd   «   sÉ   € Ø€HØ€HˆZÑØ$(¨¥G§M¡M£O°xÑ$?€HÐ Ñ!Ø"& r¥(§.¡.Ó"2°hÑ">€HÐÑÛ.ˆØ)-¯©«×);Ñ);¸FÓ)Cˆ�˜vÕ%Ñ&Ø'-·±³Ñ'=ˆ�˜VÕ#Ñ$Ø.4¸Q½¿¹»Ñ.GˆÐ! FÕ*Ñ+Ø,2¸2µh·n±nÓ6FÑ,Fˆ� &Õ(Ó)ñ	 /ð
 €Or   c           
      ól  € ^ RI p^ RIHp VP                  R4       Uu. uF  qDR3NK  	  upVP                  R4       Uu. uF  qDR3NK  	  up,           pVP	                  R4       VP                  V4       VR,          pVR	,          p\        R
4       T ! V UU	u. uF  w  r‰V! V4      V	3NK  	  up	p4      p
\        R4       \        Y§ UU	u. uF  w  r‰V! V4      V	3NK  	  up	p4      p\        RV,          4        V UU	u. uF  w  r‰V! V4      NK  	  ppp	V
P                  V4      p\        W}4       UUUu. uF  w  w  rNqÿP                  V4      NK  	  pppp\        R\        V4      \        V4      ,          ,          4       \        4        \        R4       \        \        W}4      4      R,           FG  w  w  pppVR8X  d   RpMRp\        VWOP                  R4      VP                  R4      3,          4       KI  	  V
# u upi u upi u up	pi u up	pi u up	pi u upppi   \         d     T
# i ; i)r   N©Únamesúmale.txtÚmaleú
female.txtÚfemaleé@â :Niˆ  N:iˆ  i|  NúTraining classifier...úTesting classifier...úAccuracy: %6.4fúAvg. log likelihood: %6.4fºNé   Nú  %-15s *%6.4f   %6.4fú  %-15s  %6.4f  *%6.4fúMUnseen Names      P(Male)  P(Female)
----------------------------------------)ÚrandomÚnltk.corpusrg   ÚwordsÚseedÚshuffleÚprintr.   r   r   Úlogprobr    r!   r   r   ÚNotImplementedError)Útrainerr_   rv   rg   r^   ÚnamelistÚtrainÚtestÚnÚgr"   r7   Útest_featuresetsÚpdistsr#   r'   r(   ÚgenderÚfmts   &&                 r
   Ú
names_demorˆ   ¸   s  € Ûå!ð ,1¯;©;°zÔ+BÓCÑ+B 4�v“Ñ+BÑCØ%*§[¡[°Ô%>óGÙ%>˜TˆxÓÑ%>ñGõ €Hð
 ‡K�K�ÔØ
‡N�N�8ÔØ�U�O€EØ�IÕ€Dô 
Ð
"Ô#Ù¹Ô?¹©v°™8 A›;¨Ó*¹Ò?Ó@€Jô 
Ð
!Ô"Ü
�:¸tÔD¹t±V°a¡¨!£¨aÓ 0¹tÒDÓ
E€CÜ	Ð
˜cÕ
!Ô"ðÙ6:Ô;±d©F¨Q™H QžK±dÐÑ;Ø×.Ñ.Ð/?Ó@ˆÜ?BÀ4Ô?PÕQÑ?PÑ&;¡|¨°U�m‰m˜DÖ!Ñ?PˆÒQÜÐ*¬c°"«g¼¸D»	Õ.AÕBÔCÜŒÜÐAÔBÜ%)¬#¨dÓ*;Ó%<¸R×%@Ð%@Ñ!‰NˆT�6˜EØ˜ÔØ.‘à.�Ü�#˜Ÿz™z¨&Ó1°5·:±:¸hÓ3GÐHÕHÖIñ &Að ÐùòM Dùò Gùó @ùó  Eùó <ùäQøô ô Øð Ðð	úsG   žH¿HÂH
ÃHÃ<H$ ÄHÄ#H$ Ä7HÅB*H$ ÈH$ È$H3È2H3c           
      óÄ  € ^ RI p^ RIHp VP                  R4      pVP                  R4      pVP	                  R4       VP                  V4       VP                  V4       \        WR,          4      p\        WR,          VR,          ,           4      pVR	,           Uu. uF  qˆR
3NK  	  upVR,           Uu. uF  qˆR3NK  	  up,           p	VP                  V	4       \        R4       V ! Wg4      p
\        R4       \        Y© UUu. uF  w  r¼V! V4      V3NK  	  upp4      p\        RV,          4        V	 UUu. uF  w  r¼V! V4      NK  	  pppV
P                  V4      p\        WŸ4       UUUu. uF  w  w  pppVP                  V4      NK  	  pppp\        R\        V4      \        V	4      ,          ,          4       \        4        \        R4       \        WŸ4      R,           FH  w  w  pppVR
8X  d   RpMRp\        VVVP                  R
4      VP                  R4      3,          4       KJ  	  V
# u upi u upi u uppi u uppi u upppi   \         d     T
# i ; i)r   Nrf   rh   rj   iñû	 :NiÐ  N:iÐ  iÄ	  N:Niô  N:iÄ	  i¾
  NT:iô  iî  NFrm   rn   ro   rp   rq   rs   rt   ru   )rv   rw   rg   rx   ry   rz   Úmapr{   r.   r   r   r|   r    r!   r   r}   )r~   r_   rv   rg   Ú
male_namesÚfemale_namesÚpositiveÚ	unlabeledr^   r�   r"   r‚   Úmr7   r„   r…   r#   r'   r(   Úis_maler‡   s   &&                   r
   Úpartial_names_demor‘   ç   s4  € Ûå!à—‘˜ZÓ(€JØ—;‘;˜|Ó,€Là
‡K�K�ÔØ
‡N�N�:ÔØ
‡N�N�<Ô ô �8¨Õ.Ó/€Hô �H¨Õ3°lÀ4Õ6HÕHÓI€Ið &0°	Ö%:Ó;Ñ%:˜T�4‹LÑ%:Ñ;Ø".¨wÖ"7ó?Ù"7˜$ˆu‹Ñ"7ñ?õ €Dð ‡N�N�4Ôô 
Ð
"Ô#Ù˜Ó-€Jô 
Ð
!Ô"Ü
�:¸tÔD¹t±V°a¡¨!£¨aÓ 0¹tÒDÓ
E€CÜ	Ð
˜cÕ
!Ô"ðÙ6:Ô;±d©F¨Q™H QžK±dÐÑ;Ø×.Ñ.Ð/?Ó@ˆÜ?BÀ4Ô?PÕQÑ?PÑ&;¡|¨¨d°Uˆe�m‰m˜DÖ!Ñ?PˆÒQÜÐ*¬c°"«g¼¸D»	Õ.AÕBÔCÜŒÜÐAÔBÜ&)¨$Ó&7¸×&;Ð&;Ñ"‰OˆT�7˜UØ˜$ŒØ.‘à.�Ü�#˜˜uŸz™z¨$Ó/°·±¸EÓ1BÐCÕCÖDñ '<ð ÐùòE <ùò ?ùó  Eùó <ùäQøô ô Øð Ðð	úsC   ÂH3Â6H8ÄH=Ä4I Ä9IÅ#I Å/ I	ÆB"I ÉI ÉIÉIc           
      ó®  € ^ RI p^ RIHp \        R4       V\        9  d;   VP                  V4       Uu. uF  qfVP                  ^ ,          3NK  	  up\        V&   \        V,          R,          pV\        V4      8”  d   \        V4      p\        V UUu0 uF  w  rhVkK	  	  upp4      p	\        RRP                  V	4      ,           4       \        R4       VP                  R4       VP                  V4       VR\        R	V,          4       p
V\        R	V,          4      V p\        R
4       T ! V
 UUu. uF  w  rhV! V4      V3NK  	  upp4      p\        R4       \        YË UUu. uF  w  rhV! V4      V3NK  	  upp4      p\        RV,          4        V UUu. uF  w  rcV! V4      NK  	  pppVP                  V4      p\        W¿4       UUUu. uF  w  w  pppVP!                  V4      NK  	  pppp\        R\#        V4      \        V4      ,          ,          4       V# u upi u uppi u uppi u uppi u uppi u upppi   \$         d     T# i ; i)r   N)ÚsensevalzReading data...:NNNz
  Senses: Ú zSplitting into test & train...rl   gš™™™™™é?rm   rn   ro   rp   )rv   rw   r“   r{   Ú_inst_cacheÚ	instancesÚsensesr!   r   Újoinry   rz   Úintr.   r   r   r|   r    r}   )r~   Úwordr_   r‚   rv   r“   Úir–   r%   r—   r€   r�   r"   r7   r„   r…   r^   r#   r'   r(   s   &&&&                r
   Úwsd_demorœ   "  s  € Ûå$ô 
Ð
Ôà”;ÔØ7?×7IÑ7IÈ$Ô7OÓPÑ7O°! §¡¨!¥Ó-Ñ7OÑPŒ�DÑÜ˜DÕ! !Õ$€IØŒ3ˆy‹>ÔÜ�	‹NˆÜ¡9Ô-¡9™˜!“1¡9Ò-Ó.€FÜ	ˆ,˜Ÿ™ &Ó)Õ
)Ô*ô 
Ð
*Ô+Ø
‡K�K�ÔØ
‡N�N�9ÔØ�nœ˜C !�G›Ð%€EØ”S˜˜q�“\ AÐ&€Dô 
Ð
"Ô#Ù¹Ô?¹©v°™8 A›;¨Ó*¹Ò?Ó@€Jô 
Ð
!Ô"Ü
�:¸tÔD¹t±V°a¡¨!£¨aÓ 0¹tÒDÓ
E€CÜ	Ð
˜cÕ
!Ô"ðÙ6:Ô;±d©F¨Q™H QžK±dÐÑ;Ø×.Ñ.Ð/?Ó@ˆÜ?BÀ4Ô?PÕQÑ?PÑ&;¡|¨¨d°Uˆe�m‰m˜DÖ!Ñ?PˆÒQÜÐ*¬c°"«g¼¸D»	Õ.AÕBÔCð
 ÐùòE Qùó .ùó @ùó  Eùó <ùäQøäô Øð Ðð	úsG   ´H!ÂH&
Ä3H,
Å%H2ÆI ÆH8Æ-#I Ç H>Ç0/I È8I ÉIÉIc                 óh   €  \          R#   \         d   p \        R4      p\        T4      T hRp ? ii ; i)z0
Checks whether the MEGAM binary is configured.
z\Please configure your megam binary first, e.g.
>>> nltk.config_megam('/usr/bin/local/megam')N)Ú
_megam_binÚ	NameErrorÚstr)ÚeÚerr_msgs     r
   Úcheck_megam_configr£   P  s8   € ð(ßøÜô (Üð<ó
ˆô ˜Ó  aÐ'ûð(ús   ‚
 Š1•,¬1r   )iè  )rN   r   Únltk.classify.utilrA   Ú	nltk.utilr   r   r   r)   r.   r0   ra   rd   rˆ   r‘   r•   rœ   r£   r   r   r
   Ú<module>r¦      si   ðñó ó Ý ô*+òZ	5ò'ò÷4ñ 4òxò
ð "5ô ,ð^ *=ô 5ðp €ô+ô\(r   