
    Ng7                        d dl Zd dlZd dlmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZ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mZmZmZ d dlm Z  d dl!m"Z" dZ#dZ$d	Z%d
Z&i dd dd dd dd dd dd dd d
d dd dd dd d d! d"d# d$d% d&d' d(d) d*d+ Z' G d, d-          Z( G d. d/          Z)d0 Z*e+d1k    r
 e*             d2gZ,dS )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                  (    t          j                    S N)r   words     U/var/www/html/ai-engine/env/lib/python3.11/site-packages/nltk/app/collocations_app.py<lambda>r%   3       (8(8 r#   zEnglish: Brown Corpusc                  (    t          j                    S r    r   r!   r"   r#   r$   r%   r%   4   s    U[]] r#   zEnglish: Brown Corpus (Press)c                  0    t          j        g d          S )N)news	editorialreviews
categoriesr(   r"   r#   r$   r%   r%   5   s     U[333. . . r#   z English: Brown Corpus (Religion)c                  ,    t          j        d          S )Nreligionr-   r(   r"   r#   r$   r%   r%   8   s    z0R0R0R r#   zEnglish: Brown Corpus (Learned)c                  ,    t          j        d          S )Nlearnedr-   r(   r"   r#   r$   r%   r%   9       u{i/P/P/P r#   z'English: Brown Corpus (Science Fiction)c                  ,    t          j        d          S )Nscience_fictionr-   r(   r"   r#   r$   r%   r%   :   s    u{$8 8 8 r#   zEnglish: Brown Corpus (Romance)c                  ,    t          j        d          S )Nromancer-   r(   r"   r#   r$   r%   r%   =   r3   r#   c                  ,    t          j        d          S )Nhumorr-   r(   r"   r#   r$   r%   r%   >   s    U[G-L-L-L r#   zEnglish: NPS Chat Corpusc                  (    t          j                    S r    )r   r!   r"   r#   r$   r%   r%   ?   r&   r#   z#English: Wall Street Journal Corpusc                  (    t          j                    S r    )r   r!   r"   r#   r$   r%   r%   @   s    8>3C3C r#   zChinese: Sinica Corpusc                  (    t          j                    S r    )r   r!   r"   r#   r$   r%   r%   A   s    o&;&=&= r#   zDutch: Alpino Corpusc                  (    t          j                    S r    )r   r!   r"   r#   r$   r%   r%   B   s    FLNN r#   zHindi: Indian Languages Corpusc                  ,    t          j        d          S )Nz	hindi.pos)files)r   r!   r"   r#   r$   r%   r%   C   s    fl.M.M.M r#   z&Portuguese: Floresta Corpus (Portugal)c                  (    t          j                    S r    )r   r!   r"   r#   r$   r%   r%   D   s    hn6F6F r#   z&Portuguese: MAC-MORPHO Corpus (Brazil)c                  (    t          j                    S r    )r   r!   r"   r#   r$   r%   r%   E   s    j6F6H6H r#   z#Portuguese: Machado Corpus (Brazil)c                  (    t          j                    S r    )r   r!   r"   r#   r$   r%   r%   F   s    7=?? r#   zSpanish: CESS-ESP Corpusc                  (    t          j                    S r    )r   r!   r"   r#   r$   r%   r%   G   r&   r#   c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )CollocationsViewz#FFFc                    t          j                    | _        t          | j                  | _        t                      | _        |                     | j                   |                                  | 	                    | j                   | 
                    | j        j                   | j                            t          | j                  | _        d S r    )qQueuequeueCollocationsModelmodelr   top	_init_top_init_menubar_init_widgetsload_corpusDEFAULT_CORPUSafterPOLL_INTERVAL_pollselfs    r$   __init__zCollocationsView.__init__N   s    WYY
&tz22
44tx   48$$$2333X^^M4:>>


r#   c                     |                     d           |                    d           |                    d| j                   |                    d| j                   |                    dd           d S )Nz550x650+50+50zNLTK Collocations Listz<Control-q>WM_DELETE_WINDOWi&  i  )geometrytitlebinddestroyprotocolminsize)rV   rL   s     r$   rM   zCollocationsView._init_topX   sn    _%%%		*+++---'666Cr#   c           	      d   t          |t          | j        ddd                    | _        |                     | j                   |                     | j                   |                     | j                   |                     | j                   | j                            dd           d S )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rV   parents     r$   rO   zCollocationsView._init_widgets_   s    DD$;!!TUVVV
 
 	  111t///$/***$/***&66666r#   c           	         t          || j                  }t          |          | _        | j                            | j        j                   t          |t          d| j        ddd          	                    d           t          | j        j                                                                      | j        j                  }t          || j        | j        j        g| j                                        R d	| j        i}d|d
<   d|d<   |	                    d           |	                    ddd           d S )Nrb   z	 Corpus:    ra   r   )justifytextrb   rc   rd   re   left)sidecommandborderwidthhighlightthicknessrL   xnry   rg   anchor)r   rj   r   varsetrK   rQ   r	   r   rp   listCORPORAkeysremover   non_default_corporacorpus_selected)rV   rr   
innerframeother_corporaoms        r$   rl   z$CollocationsView._init_corpus_selecti   sL   6d.EFFF
Z((TZ.///.	
 	
 	
 $F$


TZ/446677>>J%
 
 HJ%

 Z++--
 
 
 (	
 
 =#$ 
VUS99999r#   c           	          t          |t          t          | j        ddd          | _        | j                            dd           d S )Nr   ra   )rv   reliefrb   re   rc   rd   rL   swry   r   )r	   r   r   rj   statusrp   rq   s     r$   ro   zCollocationsView._init_status   sS    .
 
 
 	eD11111r#   c                    t          | j                  | _        t          | j                  }t          |dd          }|                    dd| j        d           |                    dd|           t          |d	          }t          |d	          }|                    d
| j        dd| j                   |                    d| j        dd| j                   |                    d| j        dd| j                   |	                    d           |                    dd|           |                    dd|           | j        
                    |           d S )Nr   )tearoffr{   Exitra   zCtrl-q)label	underlinerz   acceleratorFile)r   r   menu)r   20   )r   variabler   valuerz   502   100r   zResult CountEdit)r   )r   rL   _result_sizer
   add_commandr]   add_cascadeadd_radiobuttonset_result_sizeinvokeconfig)rV   menubarfilemenueditmenu
rescntmenus        r$   rN   zCollocationsView._init_menubar   s   "48,,tx..:::At| 	 	
 	
 	
 	&AHEEE+++(A...
""&( 	# 	
 	
 	
 	""&( 	# 	
 	
 	
 	""&( 	# 	
 	
 	
 	!>QZPPP&AHEEEW%%%%%r#   c                 L    | j                                         | j        _        d S r    )r   getrK   result_count)rV   kwargss     r$   r   z CollocationsView.set_result_size   s!    "&"3"7"7"9"9
r#   c                    t          |          }t          |          }t          |          }t          |d          }t          |dd          }t          |t          dd          dd|j        |j        d	d
dd
  
        | _        | j                            ddd           |                    ddd           |                    | j        j                   |                    dddd           |                    | j        j	                   t          |d| j                                      dd           |                    dddd           |                    ddd           |                    ddd           d S )Nra   )r{   horiz)r{   orientcourier16)familysizedisablednone40r   )	fontstater{   yscrollcommandxscrollcommandwrapwidthheightexportselectionrx   rf   T)ry   rg   rh   yer   )rz   r}   w)ry   rg   rh   r   z   )rw   rb   r   rL   r~   bottoms)r   r   r   r   r   results_boxrp   r   yviewxviewr	   rj   )rV   rr   r   i1i2
vscrollbar
hscrollbars          r$   rm   z"CollocationsView._init_results_box   s   6]]
::rq111
rqAAA
YT222%>%>
 
 
 	6tDDDV#c:::$"2"8999V#d3GGG$"2"8999bu)@AAAFF 	G 	
 	
 	
 	USAAA
XC444U=====r#   c           	      l   t          || j                  }t          |d| j        dddd          x| _        }|                    dd	           t          |d
| j        dddd          x| _        }|                    dd	           |                    dd           |                                  d S )Nrt   Previous10ra   r   )rw   rz   r   r{   r|   r   rx   centerr   NextrightrL   r   )ry   rg   )	r   rj   r   previousprevrp   __next__nextreset_current_page)rV   rr   r   r   r   s        r$   rn   zCollocationsView._init_paging   s    6d.EFFF
!M 
 
 
 	
	D 			vh	///!M 
 
 
 	
	D 			wx	000U---!!!!!r#   c                     d| _         d S N)current_pagerU   s    r$   r   z#CollocationsView.reset_current_page   s    r#   c                 @   	 | j                             d          }|t          k    r|                     |           n6|t          k    r|                     |           n# t          j        $ r Y nw xY w| j        	                    t          | j                  | _	        d S )NF)block)rI   r   CORPUS_LOADED_EVENThandle_corpus_loadedERROR_LOADING_CORPUS_EVENThandle_error_loading_corpusrG   EmptyrL   rR   rS   rT   rV   events     r$   rT   zCollocationsView._poll   s    	8JNNN//E +++))%000044400777 w 	 	 	D	 X^^M4:>>


s   A A10A1c                     d| j                                         z   | j        d<   |                                  |                                  |                                  |                                  d S )NzError in loading rw   )r   r   r   unfreeze_editableclear_results_boxfreeze_editabler   r   s     r$   r   z,CollocationsView.handle_error_loading_corpus  sk    1DHLLNNBF      !!!!!r#   c                 T   | j                                         dz   | j        d<   |                                  |                                  |                                  | j                            | j        dz             }| 	                    |           | xj        dz  c_        d S )Nz
 is loadedrw   ra   )
r   r   r   r   r   r   rK   r   r   write_results)rV   r   collocationss      r$   r   z%CollocationsView.handle_corpus_loaded
  s    "hllnn|;F      !!!zt'81'<==<(((Qr#   c                 b    | j                                         }|                     |           d S r    )r   r   rP   )rV   argsnew_selections      r$   r   z CollocationsView.corpus_selected  s+    '''''r#   c                 
   |                                   | j                            | j        dz
            }| j        dz
  | _        |                                  |                     |           |                                  d S Nra   )r   rK   r   r   r   r   r   rV   r   s     r$   r   zCollocationsView.previous  s}    zt'81'<== -1   <(((     r#   c                    |                                   | j                            | j        dz             }|                                  |                     |           | xj        dz  c_        |                                  d S r   )r   rK   r   r   r   r   r   r   s     r$   r   zCollocationsView.__next__   s    zt'81'<==   <(((Q     r#   c                     | j         j        |k    r@d|z   dz   | j        d<   |                                  | j                             |           d S d S )NzLoading z...rw   )rK   selected_corpusr   r   rP   )rV   	selections     r$   rP   zCollocationsView.load_corpus(  s^    :%22",y"85"@DK  """J""9----- 32r#   c                 .    d| j         d<   d| j        d<   d S )Nr   r   )r   r   rU   s    r$   r   z CollocationsView.freeze_editable.  s     '	''	'r#   c                 n    d| j         d<   | j                             dt                     d| j         d<   d S )Nnormalr   z1.0r   )r   deleter   rU   s    r$   r   z"CollocationsView.clear_results_box2  s;    $,!s+++$.!!!r#   c                 >    | j                             |d           d S )Ntail)when)rL   event_generater   s     r$   
fire_eventzCollocationsView.fire_event7  s#    F33333r#   c                     | j         d S | j                             | j                   | j                                          d | _         d S r    )rL   after_cancelrR   r]   )rV   r   s     r$   r]   zCollocationsView.destroy;  sF    8Fdj)))r#   c                 J    t                      rd S  | j        j        |i | d S r    )r   rL   mainloop)rV   r   r   s      r$   r  zCollocationsView.mainloopB  s3    99 	F4*6*****r#   c                 .    |                                   d S r    )set_paging_button_statesrU   s    r$   r   z"CollocationsView.unfreeze_editableG  s    %%'''''r#   c                     | j         dk    s| j         dk    rd| j        d<   n
d| j        d<   | j                            | j                   rd| j        d<   d S d| j        d<   d S )Nr   r   r   r   r   )r   r   rK   is_last_pager   rU   s    r$   r  z)CollocationsView.set_paging_button_statesJ  sw    ""d&71&<&<!+DIg!)DIg:""4#455 	*!+DIg!)DIgr#   c                     d| j         d<   d}|D ]G}| j                             t          |          dz   |d         dz   |d         z   dz              |dz  }Hd| j         d<   d S )	Nr   r   ra   z.0r    
r   )r   insertstr)rV   resultsroweachs       r$   r   zCollocationsView.write_resultsT  sz    $,! 	 	D##CHHtOT!Ws]T!W5Lt5STTT1HCC$.!!!r#   N)__name__
__module____qualname__rj   rW   rM   rO   rl   ro   rN   r   rm   rn   r   rT   r   r   r   r   r   rP   r   r   r   r]   r  r   r  r   r"   r#   r$   rE   rE   K   s       ? ? ?  7 7 7: : ::
2 
2 
2%& %& %&N: : :> > >>" " "2  
? 
? 
?" " "  ( ( (! ! !! ! !. . .( ( (/ / /
4 4 4  + + +
( ( (* * */ / / / /r#   rE   c                   ^    e Zd Zd Zd Zd Zd Zd Zd Zd Z	 G d d	e
j                  Zd
S )rJ   c                     d | _         d | _        d | _        t          | _        t
          | _        || _        |                                  d S r    )	r   r   r   _CORPORAr   _DEFAULTrQ   rI   reset_results)rV   rI   s     r$   rW   zCollocationsModel.__init__^  sH     # &
r#   c                 "    g | _         d| _        d S )Nr   )result_pagesresults_returnedrU   s    r$   r  zCollocationsModel.reset_resultsg  s     !r#   c                     || _         d | _        |                     ||           }|                                 |                                  d S r    )r   r   
LoadCorpusstartr  )rV   namerunner_threads      r$   rP   zCollocationsModel.load_corpusk  sO    # d33r#   c                     g }|                     t          | j                                                             |                    | j                   |                                 |S r    )extendr   r   r   r   rQ   sort)rV   copys     r$   r   z%CollocationsModel.non_default_corporar  sV    D**,,--...D'(((		r#   c                     |t          | j                  k     rdS | j        |t          | j                  z
  | j        z  z   t          | j                  k    S )NF)lenr  r  r   r   )rV   numbers     r$   r  zCollocationsModel.is_last_pagey  s^    C)****5$S*+++( !$T%6!7!78 	8r#   c                 B   t          | j                  dz
  |k     rxt          |t          | j                  dz
  z
            D ]P}| j                            | j        | j        | j        | j        z                       | xj        | j        z  c_        Q| j        |         S r   )r%  r  rangeappendr   r  r   )rV   pageis      r$   r   zCollocationsModel.next  s    !""Q&$..43t'8#9#9A#=>?? ; ;!((%-0E+1, ,   %%)::%%% &&r#   c                 ,    |dk    rg S | j         |         S r   )r  )rV   r*  s     r$   r   zCollocationsModel.prev  s    2::I &&r#   c                       e Zd Zd Zd ZdS )CollocationsModel.LoadCorpusc                 b    t           j                            |            ||c| _        | _        d S r    )	threadingThreadrW   rK   r  )rV   r  rK   s      r$   rW   z%CollocationsModel.LoadCorpus.__init__  s-    %%d+++$)4!DJ			r#   c                    	  | j         j        | j                             }ddlm} d |D             t          fdt          t                    dz
            D                       t                    fdD             }|                     |d          d           t          t           |d          |                    | j         _        | j         j                            t                     d S # t          $ r>}t!          |           | j         j                            t"                     Y d }~d S d }~ww xY w)	Nr   )
itemgetterc                 8    g | ]}t          |          d k    |S )ru   )r%  ).0r   s     r$   
<listcomp>z4CollocationsModel.LoadCorpus.run.<locals>.<listcomp>  s#    777aCFFQJJJJJr#   c              3   L   K   | ]}t          ||d z                      V  dS )ru   N)tuple)r5  r+  rw   s     r$   	<genexpr>z3CollocationsModel.LoadCorpus.run.<locals>.<genexpr>  s7      SSeDQUO44SSSSSSr#   ra   c                 \    g | ](\  }}||f||f         d z  |         |         z  z  f)S )   r"   )r5  w1w2fdvocabs      r$   r6  z4CollocationsModel.LoadCorpus.run.<locals>.<listcomp>  sU       B "Xr2r(|q0E"Ib	4IJK  r#   T)keyreverse)rK   r   r  operatorr3  r   r(  r%  r"  r   mapr   rI   putr   	Exceptionprintr   )rV   r!   r3  scoredr   r>  rw   r?  s        @@@r$   runz CollocationsModel.LoadCorpus.run  st   A5
*49577//////775777SSSSeCIIPQM>R>RSSSSS     "$   

1t<<<*.s::a==&/I/I*J*J
'
 $$%899999 A A Aa
 $$%?@@@@@@@@@As   C;D 
E
3EE
N)r  r  r  rW   rH  r"   r#   r$   r  r.    s7        	0 	0 	0	A 	A 	A 	A 	Ar#   r  N)r  r  r  rW   r  rP   r   r  r   r   r0  r1  r  r"   r#   r$   rJ   rJ   ]  s          " " "    8 8 8
' 
' 
'' ' '
A A A A AY% A A A A Ar#   rJ   c                  J    t                      } |                                  d S r    )rE   r  )cs    r$   apprK    s    AJJLLLLLr#   __main__rK  )-rI   rG   r0  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   rS   r  r  rE   rJ   rK  r  __all__r"   r#   r$   <module>rS     s>                                                                       & % % % % %      $ , * 8 822 $ & & '(R(R &'P'P . 0 0 &'P'P $%L%L  8 8 *+C+C ==  22!" %&M&M#$ -.F.F%& -.H.H'( *+B+B)*  8 8+2O/ O/ O/ O/ O/ O/ O/ O/dJA JA JA JA JA JA JA JAb  
 zCEEE'r#   