
    /h7                        S SK rS SKrS SKJrJrJrJrJrJ	r	J
r
JrJrJrJrJrJr  S SKJr  S SKJrJrJrJrJrJrJrJrJrJrJr  S SKJ r   S SK!J"r"  Sr#Sr$S	r%S
r&0 SS _SS _SS _SS _SS _SS _SS _S
S _SS _SS _SS _S S! _S"S# _S$S% _S&S' _S(S) _S*S+ _r' " S, S-5      r( " S. S/5      r)S0 r*\+S1:X  a  \*" 5         S2/r,g)3    N)ENDLEFTSUNKENButtonFrameIntVarLabelMenu
OptionMenu	Scrollbar	StringVarTextTk)Font)alpinobrowncess_catcess_espflorestaindian
mac_morphomachadonps_chatsinica_treebanktreebank)FreqDist)in_idlez<<CL_EVENT>>z<<ELC_EVENT>>d   zEnglish: Brown Corpus (Humor)zCatalan: CESS-CAT Corpusc                  ,    [         R                  " 5       $ N)r   words     Q/var/www/auris/envauris/lib/python3.13/site-packages/nltk/app/collocations_app.py<lambda>r%   3       (8r#   zEnglish: Brown Corpusc                  ,    [         R                  " 5       $ r    r   r!   r"   r#   r$   r%   r%   4   s
    U[[]r#   zEnglish: Brown Corpus (Press)c                  .    [         R                  " / SQS9$ )N)news	editorialreviews
categoriesr(   r"   r#   r$   r%   r%   5   s    U[[3.r#   z English: Brown Corpus (Religion)c                  *    [         R                  " SS9$ )Nreligionr-   r(   r"   r#   r$   r%   r%   8   s    z0Rr#   zEnglish: Brown Corpus (Learned)c                  *    [         R                  " SS9$ )Nlearnedr-   r(   r"   r#   r$   r%   r%   9       u{{i/Pr#   z'English: Brown Corpus (Science Fiction)c                  *    [         R                  " SS9$ )Nscience_fictionr-   r(   r"   r#   r$   r%   r%   :   s    u{{$8r#   zEnglish: Brown Corpus (Romance)c                  *    [         R                  " SS9$ )Nromancer-   r(   r"   r#   r$   r%   r%   =   r3   r#   c                  *    [         R                  " SS9$ )Nhumorr-   r(   r"   r#   r$   r%   r%   >   s    U[[G-Lr#   zEnglish: NPS Chat Corpusc                  ,    [         R                  " 5       $ r    )r   r!   r"   r#   r$   r%   r%   ?   r&   r#   z#English: Wall Street Journal Corpusc                  ,    [         R                  " 5       $ r    )r   r!   r"   r#   r$   r%   r%   @   s    8>>3Cr#   zChinese: Sinica Corpusc                  ,    [         R                  " 5       $ r    )r   r!   r"   r#   r$   r%   r%   A   s    o&;&;&=r#   zDutch: Alpino Corpusc                  ,    [         R                  " 5       $ r    )r   r!   r"   r#   r$   r%   r%   B   s
    FLLNr#   zHindi: Indian Languages Corpusc                  *    [         R                  " SS9$ )Nz	hindi.pos)files)r   r!   r"   r#   r$   r%   r%   C   s    fll.Mr#   z&Portuguese: Floresta Corpus (Portugal)c                  ,    [         R                  " 5       $ r    )r   r!   r"   r#   r$   r%   r%   D   s    hnn6Fr#   z&Portuguese: MAC-MORPHO Corpus (Brazil)c                  ,    [         R                  " 5       $ r    )r   r!   r"   r#   r$   r%   r%   E   s    j6F6F6Hr#   z#Portuguese: Machado Corpus (Brazil)c                  ,    [         R                  " 5       $ r    )r   r!   r"   r#   r$   r%   r%   F   s
    7==?r#   zSpanish: CESS-ESP Corpusc                  ,    [         R                  " 5       $ r    )r   r!   r"   r#   r$   r%   r%   G   r&   r#   c                       \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)CollocationsViewK   z#FFFc                    [         R                  " 5       U l        [        U R                  5      U l        [        5       U l        U R                  U R                  5        U R                  5         U R                  U R                  5        U R                  U R                  R                  5        U R                  R                  [        U R                  5      U l        g r    )qQueuequeueCollocationsModelmodelr   top	_init_top_init_menubar_init_widgetsload_corpusDEFAULT_CORPUSafterPOLL_INTERVAL_pollselfs    r$   __init__CollocationsView.__init__N   s    WWY
&tzz2
4txx 488$223XX^^M4::>
r#   c                     UR                  S5        UR                  S5        UR                  SU R                  5        UR	                  SU R                  5        UR                  SS5        g )Nz550x650+50+50zNLTK Collocations Listz<Control-q>WM_DELETE_WINDOWi&  i  )geometrytitlebinddestroyprotocolminsize)rW   rM   s     r$   rN   CollocationsView._init_topX   sN    _%		*+-'6Cr#   c           
      Z   [        U[        U R                  SSSS95      U l        U R	                  U R                  5        U R                  U R                  5        U R                  U R                  5        U R                  U R                  5        U R                  R                  SSS9  g )N   )
backgroundpadxpadyborderbothT)fillexpand)	r   dict_BACKGROUND_COLOUR
main_frame_init_corpus_select_init_results_box_init_paging_init_statuspackrW   parents     r$   rP   CollocationsView._init_widgets_   s    DD$;$;!!TUV
 	  1t/$//*$//*&6r#   c           
         [        XR                  S9n[        U5      U l        U R                  R	                  U R
                  R                  5        [        U[        SU R                  SSSS9R                  SS9  [        U R
                  R                  R                  5       5      R                  U R
                  R                  5      n[        UU R                  U R
                  R                  /U R
                  R                  5       Q7S	U R                   06nSUS
'   SUS'   UR                  SS9  UR                  SSSS9  g )Nre   z	 Corpus:    rd   r   )justifytextre   rf   rg   rh   left)sidecommandborderwidthhighlightthicknessrM   xnr}   rj   anchor)r   rm   r   varsetrL   rR   r	   r   rs   listCORPORAkeysremover   non_default_corporacorpus_selected)rW   ru   
innerframeother_corporaoms        r$   ro   $CollocationsView._init_corpus_selecti   s   6.E.EF
Z(TZZ../..	
 $F$
TZZ//4467>>JJ%%
 HHJJ%%

 ZZ++-
 ((	
 =#$ 
VUS9r#   c           
          [        U[        [        U R                  SSSS9U l        U R                  R                  SSS9  g )Nr   rd   )rz   reliefre   rh   rf   rg   rM   swr}   r   )r	   r   r   rm   statusrs   rt   s     r$   rr   CollocationsView._init_status   sB    ..
 	eD1r#   c                 |   [        U R                  5      U l        [        U R                  5      n[        USSS9nUR	                  SSU R
                  SS9  UR                  SSUS9  [        USS	9n[        USS	9nUR                  S
U R                  SSU R                  S9  UR                  SU R                  SSU R                  S9  UR                  SU R                  SSU R                  S9  UR                  S5        UR                  SSUS9  UR                  SSUS9  U R                  R                  US9  g )Nr   )tearoffr   Exitrd   zCtrl-q)label	underliner~   acceleratorFile)r   r   menu)r   20   )r   variabler   valuer~   502   100r   zResult CountEdit)r   )r   rM   _result_sizer
   add_commandr_   add_cascadeadd_radiobuttonset_result_sizeinvokeconfig)rW   menubarfilemenueditmenu
rescntmenus        r$   rO   CollocationsView._init_menubar   sW   "488,txx.:At|| 	 	
 	&AHE+(A.
""&&(( 	# 	
 	""&&(( 	# 	
 	""&&(( 	# 	
 	!>QZP&AHEW%r#   c                 V    U R                   R                  5       U R                  l        g r    )r   getrL   result_count)rW   kwargss     r$   r    CollocationsView.set_result_size   s    "&"3"3"7"7"9

r#   c                    [        U5      n[        U5      n[        U5      n[        USS9n[        USSS9n[        U[        SSS9SSUR                  UR                  S	S
SSS9
U l        U R
                  R                  SSSS9  UR                  SSSS9  UR                  U R
                  R                  S9  UR                  SSSSS9  UR                  U R
                  R                  S9  [        USU R                  S9R                  SSS9  UR                  SSSSS9  UR                  SSSS9  UR                  SSSS9  g )Nrd   )r   horiz)r   orientcourier16)familysizedisablednone40r   )	fontstater   yscrollcommandxscrollcommandwrapwidthheightexportselectionr|   ri   T)r}   rj   rk   yer   )r~   r   w)r}   rj   rk   r   z   )r{   re   r   rM   r   bottoms)r   r   r   r   r   results_boxrs   r   yviewxviewr	   rm   )rW   ru   r   i1i2
vscrollbar
hscrollbars          r$   rp   "CollocationsView._init_results_box   sR   6]
::rq1
rqA
YT2%>>%>>
 	6tDV#c:$"2"2"8"89V#d3G$"2"2"8"89bu)@)@AFF 	G 	
 	USA
XC4U=r#   c           
      *   [        XR                  S9n[        USU R                  SSSSS9=U l        nUR                  SSS	9  [        US
U R                  SSSSS9=U l        nUR                  SSS	9  UR                  SSS9  U R                  5         g )Nrx   Previous10rd   r   )r{   r~   r   r   r   r   r|   centerr   NextrightrM   r   )r}   rj   )	r   rm   r   previousprevrs   __next__nextreset_current_page)rW   ru   r   r   r   s        r$   rq   CollocationsView._init_paging   s    6.E.EF
!MM 
 	
	D 			vh	/!MM 
 	
	D 			wx	0U-!r#   c                     SU l         g N)current_pagerV   s    r$   r   #CollocationsView.reset_current_page   s
    r#   c                 8    U R                   R                  SS9nU[        :X  a  U R                  U5        OU[        :X  a  U R                  U5        U R                  R                  [        U R                  5      U l	        g ! [        R                   a     NFf = f)NF)block)rJ   r   CORPUS_LOADED_EVENThandle_corpus_loadedERROR_LOADING_CORPUS_EVENThandle_error_loading_corpusrH   EmptyrM   rS   rT   rU   rW   events     r$   rU   CollocationsView._poll   s}    	8JJNNN/E ++))%044007XX^^M4::>
 ww 		s   B BBc                     SU R                   R                  5       -   U R                  S'   U R                  5         U R	                  5         U R                  5         U R                  5         g )NzError in loading r{   )r   r   r   unfreeze_editableclear_results_boxfreeze_editabler   r   s     r$   r   ,CollocationsView.handle_error_loading_corpus  sO    1DHHLLNBF  !r#   c                 T   U R                   R                  5       S-   U R                  S'   U R                  5         U R	                  5         U R                  5         U R                  R                  U R                  S-   5      nU R                  U5        U =R                  S-  sl        g )Nz
 is loadedr{   rd   )
r   r   r   r   r   r   rL   r   r   write_results)rW   r   collocationss      r$   r   %CollocationsView.handle_corpus_loaded
  s    "hhlln|;F  !zzt'8'81'<=<(Qr#   c                 Z    U R                   R                  5       nU R                  U5        g r    )r   r   rQ   )rW   argsnew_selections      r$   r    CollocationsView.corpus_selected  s    'r#   c                     U R                  5         U R                  R                  U R                  S-
  5      nU R                  S-
  U l        U R	                  5         U R                  U5        U R                  5         g Nrd   )r   rL   r   r   r   r   r   rW   r   s     r$   r   CollocationsView.previous  sd    zzt'8'81'<= --1 <( r#   c                     U R                  5         U R                  R                  U R                  S-   5      nU R	                  5         U R                  U5        U =R                  S-  sl        U R                  5         g r   )r   rL   r   r   r   r   r   r  s     r$   r   CollocationsView.__next__   sb    zzt'8'81'<= <(Q r#   c                     U R                   R                  U:w  aA  SU-   S-   U R                  S'   U R                  5         U R                   R	                  U5        g g )NzLoading z...r{   )rL   selected_corpusr   r   rQ   )rW   	selections     r$   rQ   CollocationsView.load_corpus(  sO    ::%%2",y"85"@DKK  "JJ""9- 3r#   c                 @    SU R                   S'   SU R                  S'   g )Nr   r   )r   r   rV   s    r$   r    CollocationsView.freeze_editable.  s    '		''		'r#   c                     SU R                   S'   U R                   R                  S[        5        SU R                   S'   g )Nnormalr   z1.0r   )r   deleter   rV   s    r$   r   "CollocationsView.clear_results_box2  s8    $,!s+$.!r#   c                 8    U R                   R                  USS9  g )Ntail)when)rM   event_generater   s     r$   
fire_eventCollocationsView.fire_event7  s    F3r#   c                     U R                   c  g U R                   R                  U R                  5        U R                   R                  5         S U l         g r    )rM   after_cancelrS   r_   )rW   r   s     r$   r_   CollocationsView.destroy;  s<    88djj)r#   c                 \    [        5       (       a  g U R                  R                  " U0 UD6  g r    )r   rM   mainloop)rW   r   r   s      r$   r  CollocationsView.mainloopB  s#    994*6*r#   c                 $    U R                  5         g r    )set_paging_button_statesrV   s    r$   r   "CollocationsView.unfreeze_editableG  s    %%'r#   c                    U R                   S:X  d  U R                   S:X  a  SU R                  S'   OSU R                  S'   U R                  R                  U R                   5      (       a  SU R                  S'   g SU R                  S'   g )Nr   r   r   r   r  )r   r   rL   is_last_pager   rV   s    r$   r  )CollocationsView.set_paging_button_statesJ  sp    "d&7&71&<!+DIIg!)DIIg::""4#4#455!+DIIg!)DIIgr#   c                     SU R                   S'   SnU H?  nU R                   R                  [        U5      S-   US   S-   US   -   S-   5        US-  nMA     SU R                   S'   g )	Nr  r   rd   z.0r    
r   )r   insertstr)rW   resultsroweachs       r$   r   CollocationsView.write_resultsT  sp    $,!D##CHtOT!Ws]T!W5Lt5ST1HC  %/!r#   )r   rS   r   rn   rL   r   r   rJ   r   r   rM   r   N)__name__
__module____qualname____firstlineno__rm   rX   rN   rP   ro   rr   rO   r   rp   rq   r   rU   r   r   r   r   r   rQ   r   r   r  r_   r  r   r  r   __static_attributes__r"   r#   r$   rE   rE   K   s    ?7::
2%&N:>>"2
?"(!!.(/
4+
(*/r#   rE   c                   h    \ rS rSrS rS rS rS rS rS r	S r
 " S	 S
\R                  5      rSrg)rK   i]  c                     S U l         S U l        S U l        [        U l        [
        U l        Xl        U R                  5         g r    )	r   r  r   _CORPORAr   _DEFAULTrR   rJ   reset_results)rW   rJ   s     r$   rX   CollocationsModel.__init__^  s:     # &
r#   c                      / U l         SU l        g )Nr   )result_pagesresults_returnedrV   s    r$   r3  CollocationsModel.reset_resultsg  s     !r#   c                     Xl         S U l        U R                  X5      nUR                  5         U R	                  5         g r    )r  r   
LoadCorpusstartr3  )rW   namerunner_threads      r$   rQ   CollocationsModel.load_corpusk  s6    # 3r#   c                     / nUR                  [        U R                  R                  5       5      5        UR	                  U R
                  5        UR                  5         U$ r    )extendr   r   r   r   rR   sort)rW   copys     r$   r   %CollocationsModel.non_default_corporar  sE    D**,-.D''(		r#   c                     U[        U R                  5      :  a  gU R                  U[        U R                  5      -
  U R                  -  -   [        U R                  5      :  $ )NF)lenr6  r7  r   r   )rW   numbers     r$   r  CollocationsModel.is_last_pagey  s_    C))**$$S**++( !$T%6%6!78 	8r#   c                 ~   [        U R                  5      S-
  U:  a  [        U[        U R                  5      S-
  -
  5       Hk  nU R                  R                  U R                  U R
                  U R
                  U R                  -    5        U =R
                  U R                  -  sl        Mm     U R                  U   $ r   )rE  r6  rangeappendr   r7  r   )rW   pageis      r$   r   CollocationsModel.next  s    !!"Q&$.43t'8'8#9A#=>?!!((%%--0E0E++1, %%):)::% @   &&r#   c                 0    US:X  a  / $ U R                   U   $ r   )r6  )rW   rK  s     r$   r   CollocationsModel.prev  s    2:I  &&r#   c                        \ rS rSrS rS rSrg)CollocationsModel.LoadCorpusi  c                 ^    [         R                  R                  U 5        X!sU l        U l        g r    )	threadingThreadrX   rL   r<  )rW   r<  rL   s      r$   rX   %CollocationsModel.LoadCorpus.__init__  s$    %%d+$)!DJ	r#   c           	        ^
  U R                   R                  U R                     " 5       nSSKJn  U Vs/ s H  n[        U5      S:  d  M  UPM     snm
[        U
4S j[        [        T
5      S-
  5       5       5      n[        T
5      nU VVs/ s H  u  pgXg4XFU4   S-  XV   XW   -  -  4PM     nnnUR                  U" S5      SS9  [        [        U" S5      U5      5      U R                   l        U R                   R                  R                  [        5        g s  snf s  snnf ! [         a>  n	[!        U	5        U R                   R                  R                  ["        5         S n	A	g S n	A	ff = f)	Nr   )
itemgetterry   c              3   D   >#    U  H  n[        TXS -    5      v   M     g7f)ry   N)tuple).0rL  r{   s     r$   	<genexpr>3CollocationsModel.LoadCorpus.run.<locals>.<genexpr>  s#     S>ReDUO44>Rs    rd      T)keyreverse)rL   r   r<  operatorrW  rE  r   rI  rA  r   mapr   rJ   putr   	Exceptionprintr   )rW   r!   rW  r   fdvocabw1w2scoredr   r{   s             @r$   run CollocationsModel.LoadCorpus.run  s<   A

**49957/#(75aCFQJ57SeCIPQM>RSS  #%"$ Xrr(|q0EI	4IJK"$   
1t<*.s:a=&/I*J

'

  $$%89 8  Aa

  $$%?@@As;   2D) DD=D) "D#1A,D) D) )
E134E,,E1)rL   r<  N)r*  r+  r,  r-  rX   rj  r.  r"   r#   r$   r:  rQ    s    	0	Ar#   r:  )r   rR   r   rJ   r   r6  r7  r  N)r*  r+  r,  r-  rX   r3  rQ   r   r  r   r   rS  rT  r:  r.  r"   r#   r$   rK   rK   ]  s9    "8
''
AY%% Ar#   rK   c                  8    [        5       n U R                  5         g r    )rE   r  )cs    r$   apprn    s    AJJLr#   __main__rn  )-rJ   rH   rS  tkinterr   r   r   r   r   r   r	   r
   r   r   r   r   r   tkinter.fontr   nltk.corpusr   r   r   r   r   r   r   r   r   r   r   nltk.probabilityr   	nltk.utilr   r   r   rT   r2  r1  rE   rK   rn  r*  __all__r"   r#   r$   <module>rv     ss            & $ , * 82 $ & '(R &'P . 0 &'P $%L  8 *+C =  2!" %&M#$ -.F%& -.H'( *+B)*  8+2O/ O/dJA JAb
 zE'r#   