
    zIf2a              	          d dl Z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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 d dl m!Z! d dl"m#Z# dZ$dZ%d	Z&d
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/ d0 d1 d2 d3 d4 d5 d6 d7Z, G d8 d9          Z- G d: d;          Z.d< Z/e0d=k    r
 e/             d>gZ1dS )?    N)ENDLEFTSUNKENButtonEntryFrameIntVarLabelMenu
OptionMenu	Scrollbar	StringVarTextTk)Font)
alpinobrowncess_catcess_espflorestaindian
mac_morphonps_chatsinica_treebanktreebank)ShowText)in_idlez[^/ ]+z\bz<<CL_EVENT>>z<<ST_EVENT>>z<<SE_EVENT>>z<<ELC_EVENT>>2   z)English: Brown Corpus (Humor, simplified)z%Catalan: CESS-CAT Corpus (simplified)c                  ,    t          j        d          S N	universal)tagset)r   tagged_sents     L/var/www/piapp/venv/lib/python3.11/site-packages/nltk/app/concordance_app.py<lambda>r'   ;       X5J6 6 6 r%   zEnglish: Brown Corpusc                  (    t          j                    S Nr   r#   r$   r%   r&   r'   r'   >   s    U%7%9%9 r%   z"English: Brown Corpus (simplified)c                  ,    t          j        d          S r    r+   r$   r%   r&   r'   r'   ?   s    %2D3 3 3 r%   z)English: Brown Corpus (Press, simplified)c                  2    t          j        g dd          S )N)news	editorialreviewsr!   
categoriesr"   r+   r$   r%   r&   r'   r'   B   s#    9K333K: : : r%   z,English: Brown Corpus (Religion, simplified)c                  .    t          j        dd          S )Nreligionr!   r1   r+   r$   r%   r&   r'   r'   E   s    E<Nk= = = r%   z+English: Brown Corpus (Learned, simplified)c                  .    t          j        dd          S )Nlearnedr!   r1   r+   r$   r%   r&   r'   r'   H       5;M[< < < r%   z3English: Brown Corpus (Science Fiction, simplified)c                  .    t          j        dd          S )Nscience_fictionr!   r1   r+   r$   r%   r&   r'   r'   K   s     5CU$[D D D r%   z+English: Brown Corpus (Romance, simplified)c                  .    t          j        dd          S )Nromancer!   r1   r+   r$   r%   r&   r'   r'   N   r7   r%   c                  .    t          j        dd          S )Nhumorr!   r1   r+   r$   r%   r&   r'   r'   Q   s    9K;: : : r%   zEnglish: NPS Chat Corpusc                  (    t          j                    S r*   r   tagged_postsr$   r%   r&   r'   r'   T   s    (=(?(? r%   z%English: NPS Chat Corpus (simplified)c                  ,    t          j        d          S r    r?   r$   r%   r&   r'   r'   U   r(   r%   z#English: Wall Street Journal Corpusc                  (    t          j                    S r*   r   r#   r$   r%   r&   r'   r'   X   s    83H3J3J r%   z0English: Wall Street Journal Corpus (simplified)c                  ,    t          j        d          S r    rC   r$   r%   r&   r'   r'   Y   s    @UA A A r%   zChinese: Sinica Corpusc                  (    t          j                    S r*   r   r#   r$   r%   r&   r'   r'   \   s    o&B&D&D r%   z#Chinese: Sinica Corpus (simplified)c                  ,    t          j        d          S r    rF   r$   r%   r&   r'   r'   ]   s    ?3O4 4 4 r%   zDutch: Alpino Corpusc                  (    t          j                    S r*   r   r#   r$   r%   r&   r'   r'   `   s    F$7$9$9 r%   z!Dutch: Alpino Corpus (simplified)c                  ,    t          j        d          S r    rI   r$   r%   r&   r'   r'   a   s    1D2 2 2 r%   c                  ,    t          j        d          S )N	hindi.pos)filesr   r#   r$   r%   r&   r'   r'   d   s    f.A.T.T.T r%   c                  .    t          j        dd          S )NrL   r!   )rM   r"   rN   r$   r%   r&   r'   r'   e   s    6;N+< < < r%   c                  (    t          j                    S r*   r   r#   r$   r%   r&   r'   r'   h   s    h6K6M6M r%   c                  ,    t          j        d          S r    rQ   r$   r%   r&   r'   r'   i   s    (BWC C C r%   c                  (    t          j                    S r*   r   r#   r$   r%   r&   r'   r'   l   s    j6M6O6O r%   c                  ,    t          j        d          S r    rT   r$   r%   r&   r'   r'   m   s    *BYC C C r%   c                  ,    t          j        d          S r    )r   r#   r$   r%   r&   r'   r'   p   r(   r%   )zHindi: Indian Languages Corpusz+Hindi: Indian Languages Corpus (simplified)z&Portuguese: Floresta Corpus (Portugal)z2Portuguese: Floresta Corpus (Portugal, simplified)z&Portuguese: MAC-MORPHO Corpus (Brazil)z2Portuguese: MAC-MORPHO Corpus (Brazil, simplified)z%Spanish: CESS-ESP Corpus (simplified)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 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 ),ConcordanceSearchViewz#FFFz#F00
HL_WRD_TAGz#C0C0C0
HL_LBL_TAGg333333?c                    t          j                    | _        t          | j                  | _        t                      | _        |                     | j                   |                                  | 	                    | j                   | 
                    | j        j                   | j                            t          | j                  | _        d S r*   )qQueuequeueConcordanceSearchModelmodelr   top	_init_top_init_menubar_init_widgetsload_corpusDEFAULT_CORPUSafterPOLL_INTERVAL_pollselfs    r&   __init__zConcordanceSearchView.__init__   s    WYY
+DJ77
44tx   48$$$2333X^^M4:>>


r%   c                     |                     d           |                    d           |                    d| j                   |                    d| j                   |                    dd           d S )Nz950x680+50+50zNLTK Concordance Searchz<Control-q>WM_DELETE_WINDOWi  i  )geometrytitlebinddestroyprotocolminsize)rk   ra   s     r&   rb   zConcordanceSearchView._init_top   sn    _%%%		+,,,---'666Cr%   c           	         t          |t          | j        ddd                    | _        |                     | j                   |                     | 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_query_box_init_results_box_init_paging_init_statuspackrk   parents     r&   rd   z#ConcordanceSearchView._init_widgets   s    DD$;!!TUVVV
 
 	  111T_---t///$/***$/***&66666r%   c                 *   t          | j                  | _        t          | j                  | _        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|           t          |d	          }t          |d	          }|	                    d| j        dd| j                   |	                    d| j        dd| j                   |	                    d| j        dd| j                   |                    d           |                    dd|           t          |d	          }|	                    d| j        dd| j                   |	                    d| j        dd| j                   |	                    d| j        dd| j                   |                    d           |                    dd|           |                    dd|           |                    d d|           | j                            |!           d S )"Nr   )tearoffborderwidthExitrv   zCtrl-q)label	underlinecommandacceleratorFile)r   r   menu)r   20   )r   variabler   valuer   50r   100d   zResult Countz60 characters<   z80 charactersP   z100 charactersBeforez70 charactersF   z90 charactersZ   z110 charactersn   AfterContextEdit)r   )r	   ra   _result_size_cntx_bf_len_cntx_af_lenr   add_commandrr   add_cascadeadd_radiobuttonset_result_sizeinvokeset_cntx_bf_lenset_cntx_af_lenconfig)rk   menubarfilemenueditmenu
rescntmenucntxmenu
cntxbfmenu
cntxafmenus           r&   rc   z#ConcordanceSearchView._init_menubar   s   "48,,"48,,"48,,tx..:::At| 	 	
 	
 	
 	&AHEEE+++(A...
""&( 	# 	
 	
 	
 	""&( 	# 	
 	
 	
 	""&( 	# 	
 	
 	
 	!>QZPPP!,,,(A...
""!&( 	# 	
 	
 	
 	""!&( 	# 	
 	
 	
 	"""&( 	# 	
 	
 	
 	!8qzJJJ(A...
""!&( 	# 	
 	
 	
 	""!&( 	# 	
 	
 	
 	"""&( 	# 	
 	
 	
 	!7ajIII9III&AHEEEW%%%%%r%   c                 L    | j                                         | j        _        d S r*   )r   getr`   result_countrk   kwargss     r&   r   z%ConcordanceSearchView.set_result_size   s!    "&"3"7"7"9"9
r%   c                 B    | j                                         | _        d S r*   )r   r   _char_afterr   s     r&   r   z%ConcordanceSearchView.set_cntx_af_len  s    ,0022r%   c                 B    | j                                         | _        d S r*   )r   r   _char_beforer   s     r&   r   z%ConcordanceSearchView.set_cntx_bf_len  s     -1133r%   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rw   z	 Corpus:    rv   r   )justifytextrw   rx   ry   rz   left)sider   r   highlightthicknessra   xnr   r|   anchor)r   r   r   varsetr`   rf   r
   r   r   listCORPORAkeysremover   non_default_corporacorpus_selected)rk   r   
innerframeother_corporaoms        r&   r   z)ConcordanceSearchView._init_corpus_select  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   rv   )r   reliefrw   rz   rx   ry   ra   swr   r   )r
   r   r   r   statusr   r   s     r&   r   z"ConcordanceSearchView._init_status$  sS    .
 
 
 	eD11111r%   c                    t          || j                  }t          || j                  }t          |d          | _        | j                            dddd           t          |d	| j        d
d
          | _        | j                            dddd           | j                            d| j	                   |                                 |                    ddd           d S )Nr   r   )widthr   r      center)r   r|   ry   r   Searchrv   )r   r   r   r   z<KeyPress-Return>ra   r   r   )
r   r   r   	query_boxr   r   searchsearch_buttonrq   search_enter_keypress_handler)rk   r   r   anothers       r&   r   z%ConcordanceSearchView._init_query_box0  s    6d.EFFF

t/FGGGwb111c8LLL#K 
 
 
 	V#BxPPP/1STTTUS99999r%   c                 .    |                                   d S r*   )r   rk   events     r&   r   z3ConcordanceSearchView.search_enter_keypress_handlerA  s    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           | j                            | j        | j	                   | j                            | j
        | j                   |                    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 ) Nrv   )r   horiz)r   orientcourier16)familysizedisablednone40r   )	fontstater   yscrollcommandxscrollcommandwrapr   heightexportselectionr   r{   T)r   r|   r}   )
foregroundyer   )r   r   w)r   r|   r}   r   z   )r   rw   r   ra   r   bottoms)r   r   r   r   r   results_boxr   
tag_config_HIGHLIGHT_WORD_TAG_HIGHLIGHT_WORD_COLOUR_HIGHLIGHT_LABEL_TAG_HIGHLIGHT_LABEL_COLOURr   yviewxviewr
   r   )rk   r   r   i1i2
vscrollbar
hscrollbars          r&   r   z'ConcordanceSearchView._init_results_boxD  s    6]]
::rq111
rqAAA
YT222%>%>
 
 
 	6tDDD##$1L 	$ 	
 	
 	
 	##%$2N 	$ 	
 	
 	
 	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           	      R   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| _        d S )Nr   Previous10rv   r   )r   r   r   r   r   r   r   r   r   Nextrightra   r   )r   r|   r   )	r   r   r   previousprevr   __next__nextcurrent_page)rk   r   r   r  r  s        r&   r   z"ConcordanceSearchView._init_pagingi  s    6d.EFFF
!M 
 
 
 	
	D 			vh	///!M 
 
 
 	
	D 			wx	000U---r%   c                     |                                   |                                  | j                            | j        dz
             d S Nrv   )clear_results_boxfreeze_editabler`   r  r  rj   s    r&   r  zConcordanceSearchView.previous  H       
)A-.....r%   c                     |                                   |                                  | j                            | j        dz              d S r  )r  r  r`   r  r  rj   s    r&   r  zConcordanceSearchView.__next__  r  r%   c                     d}d}	 ddl m}  |||| j                                                   d S #  t	          | j        ||           Y d S xY w)NzNLTK Concordance Search Demo
z#About: NLTK Concordance Search Demor   )Message)messagerp   r   )tkinter.messageboxr  r   showr   ra   )rk   r   ABOUTTITLEr  s        r&   aboutzConcordanceSearchView.about  st    05	-222222GEtGGGLLNNNNN	-TXue,,,,,,s	   +3 Ac                 .   | j                             t          | j                   | j                             t          | j                   | j                             t          | j                   | j                             t          | j	                   d S r*   )
ra   rq   CORPUS_LOADED_EVENThandle_corpus_loadedSEARCH_TERMINATED_EVENThandle_search_terminatedSEARCH_ERROR_EVENThandle_search_errorERROR_LOADING_CORPUS_EVENThandle_error_loading_corpusrj   s    r&   _bind_event_handlersz*ConcordanceSearchView._bind_event_handlers  sp    )4+DEEE-t/LMMM($*BCCC0$2RSSSSSr%   c                    	 | j                             d          }|t          k    r|                     |           nx|t          k    r|                     |           nW|t          k    r|                     |           n6|t          k    r| 	                    |           n# t          j        $ r Y nw xY w| j                            t          | j                  | _        d S )NF)block)r^   r   r#  r$  r%  r&  r'  r(  r)  r*  r\   Emptyra   rg   rh   ri   r   s     r&   ri   zConcordanceSearchView._poll  s    	8JNNN//E +++))%0000111--e4444,,,((////44400777 w 	 	 	D	 X^^M4:>>


s   B! !B32B3c                     d| j                                         z   | j        d<   |                                  |                                  |                                  d S )NzError in loading r   )r   r   r   unfreeze_editable	clear_allr  r   s     r&   r*  z1ConcordanceSearchView.handle_error_loading_corpus  sW    1DHLLNNBF   r%   c                     | j                                         dz   | j        d<   |                                  |                                  | j                                         d S )Nz
 is loadedr   )r   r   r   r0  r1  r   	focus_setr   s     r&   r$  z*ConcordanceSearchView.handle_corpus_loaded  sY    "hllnn|;F     """""r%   c                 T   | j                                         }|                     |           d| j        d<   t	          |          dk    rd| j         j        z   | j        d<   n| j         j        | _        |                                  | j	        
                    | j                   d S )N r   r   zNo results found for )r`   get_resultswrite_resultsr   lenquerylast_requested_pager  r0  r   xview_moveto_FRACTION_LEFT_TEXT)rk   r   resultss      r&   r&  z.ConcordanceSearchView.handle_search_terminated  s    *((**7### Fw<<1"9DJ<L"LDK $
 >D   %%d&>?????r%   c                 \    d| j         j        z   | j        d<   |                                  d S )NzError in query r   )r`   r9  r   r0  r   s     r&   r(  z)ConcordanceSearchView.handle_search_error  s0    /$*2BBF     r%   c                 b    | j                                         }|                     |           d S r*   )r   r   re   )rk   argsnew_selections      r&   r   z%ConcordanceSearchView.corpus_selected  s+    '''''r%   c                     | j         j        |k    r@d|z   dz   | j        d<   |                                  | j                             |           d S d S )NzLoading z...r   )r`   selected_corpusr   r  re   )rk   	selections     r&   re   z!ConcordanceSearchView.load_corpus  s^    :%22",y"85"@DK  """J""9----- 32r%   c                 v   d| _         |                                  | j                                         | j                                        }t          |                                          dk    rd S d|z   | j        d<   | 	                                 | j        
                    || j         dz              d S )Nr   zSearching for r   rv   )r  r  r`   reset_resultsr   r   r8  stripr   r  r   )rk   r9  s     r&   r   zConcordanceSearchView.search  s       
  """""$$u{{}}""F.6F
%!2Q!677777r%   c                    d| j         d<   d}|D ]}|d                                         |d         |d         }}}t          |          dk    r|| j        k     r|                     |||          \  }}}||| j        z
  || j        z            }|t          |          k    s|dz  }| j                             t          |          dz   |           |                     |||          \  }}	|D ]o}
| j         	                    | j
        t          |          dz   t          |
d                   z   t          |          dz   t          |
d                   z              p|	D ]o}
| j         	                    | j        t          |          dz   t          |
d                   z   t          |          dz   t          |
d                   z              p|dz  }d	| j         d<   d S )
Nnormalr   rv   r   r   
z.0.r   )r   rG  r8  r   padr   insertstrwords_and_labelstag_addr   r  )rk   r=  roweachsentpos1pos2sentenceword_markerslabel_markersmarkers              r&   r7  z#ConcordanceSearchView.write_results  s   $,! 	 	D#Aw}}Qa$D4yyA~~$+++'+xxdD'A'A$D$t'8 84$BR;R RSc'll**$H ''C4BBB.2.C.CD$PT.U.U+m*  F$,,0C3VAY7C3VAY7   
 ,  F$,,1C3VAY7C3VAY7   
 q$.!!!r%   c                    |||         }g g }}|                     d          }d}|D ]}	|	dk    r|dz  }n|	                     d          \  }
}|                    | j        |z   | j        |z   t          |
          z   f           |t          |
          dz   z  }|                    | j        |z   | j        |z   t          |          z   f           |t          |          z  }|dz  }||fS )N r   r5  rv   /)splitappendr   r8  )rk   rV  rT  rU  
search_expwordslabelslabeled_wordsindexrR  wordr   s               r&   rO  z&ConcordanceSearchView.words_and_labels  s   d4i(
Bv"((--! 	 	Drzz
"jjooe&.0AE0ICPTII0UV   TQ&&.0AE0ICPUJJ0VW   U#QJEEf}r%   c                     || j         k    r|||fS | j         |z
  }d                    dg|z            |z   }|||z   ||z   fS )Nr5  r[  )r   join)rk   rS  hstarthendds        r&   rL  zConcordanceSearchView.pad  s[    T&&&%%&wwuqy!!D(VaZ))r%   c                     | j         d S | j                             | j                   | j                                          d | _         d S r*   )ra   after_cancelrg   rr   )rk   r   s     r&   rr   zConcordanceSearchView.destroy  sF    8Fdj)))r%   c                     | j                             dt                     | j                                         |                                  d S Nr   )r   deleter   r`   reset_queryr  rj   s    r&   r1  zConcordanceSearchView.clear_all  sF    a%%%
        r%   c                 n    d| j         d<   | j                             dt                     d| j         d<   d S )NrI  r   z1.0r   )r   rn  r   rj   s    r&   r  z'ConcordanceSearchView.clear_results_box!  s;    $,!s+++$.!!!r%   c                 V    d| j         d<   d| j        d<   d| j        d<   d| j        d<   d S )Nr   r   )r   r   r  r  rj   s    r&   r  z%ConcordanceSearchView.freeze_editable&  s9    ",w&07#'	''	'r%   c                 V    d| j         d<   d| j        d<   |                                  d S )NrI  r   )r   r   set_paging_button_statesrj   s    r&   r0  z'ConcordanceSearchView.unfreeze_editable,  s3    "*w&.7#%%'''''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   rv   r   r   rI  )r  r  r`   has_more_pagesr  rj   s    r&   rs  z.ConcordanceSearchView.set_paging_button_states1  sw    !!T%6!%;%;!+DIg!)DIg:$$T%677 	,!)DIg!+DIgr%   c                 >    | j                             |d           d S )Ntail)when)ra   event_generater   s     r&   
fire_eventz ConcordanceSearchView.fire_event;  s#    F33333r%   c                 J    t                      rd S  | j        j        |i | d S r*   )r   ra   mainloop)rk   r@  r   s      r&   r|  zConcordanceSearchView.mainloop?  s3    99 	F4*6*****r%   N)-__name__
__module____qualname__r   r  r   r  r  r<  rl   rb   rd   rc   r   r   r   r   r   r   r   r   r   r  r  r!  r+  ri   r*  r$  r&  r(  r   re   r   r7  rO  rL  rr   r1  r  r  r0  rs  rz  r|  r$   r%   r&   rX   rX   v   sc        $&'' ? ? ?  	7 	7 	7]& ]& ]&~: : :3 3 34 4 4: : ::
2 
2 
2: : :"  #> #> #>J  2/ / /
/ / /
- - -T T T? ? ?   # # #
@ 
@ 
@! ! !( ( (. . .	8 	8 	8/ / /8  ** * *  ! ! !
/ / /
( ( (( ( (
, , ,4 4 4+ + + + +r%   rX   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 G d dej                  Z G d dej                  ZdS )r_   c                     || _         t          | _        t          | _        d | _        |                                  |                                  d | _        d| _	        d S rm  )
r^   _CORPORAr   _DEFAULTrf   rC  ro  rF  r   last_sent_searched)rk   r^   s     r&   rl   zConcordanceSearchModel.__init__F  sZ    
&# "#r%   c                     g }|                     t          | j                                                             |                    | j                   |                                 |S r*   )extendr   r   r   r   rf   sort)rk   copys     r&   r   z*ConcordanceSearchModel.non_default_corporaP  sV    D**,,--...D'(((		r%   c                 v    || _         g | _        |                     ||           }|                                 d S r*   )rC  r#   
LoadCorpusstart)rk   namerunner_threads      r&   re   z"ConcordanceSearchModel.load_corpusW  s=    #d33r%   c                 ~    || _         || _        |                     | || j                                                   d S r*   )r9  r:  SearchCorpusr   r  )rk   r9  pages      r&   r   zConcordanceSearchModel.search]  s>    
#' $d&788>>@@@@@r%   c                     || _         t          | j                  |k     r|                     | j        |           d S | j                            t                     d S r*   )r:  r8  r=  r   r9  r^   putr%  rk   r  s     r&   r  zConcordanceSearchModel.nextb  sV    #' t|t##KK
D)))))JNN233333r%   c                 R    || _         | j                            t                     d S r*   )r:  r^   r  r%  r  s     r&   r  zConcordanceSearchModel.previ  s%    #' 
./////r%   c                 0    d| _         g | _        d | _        d S rm  )r  r=  	last_pagerj   s    r&   rF  z$ConcordanceSearchModel.reset_resultsm  s    "#r%   c                     d | _         d S r*   )r9  rj   s    r&   ro  z"ConcordanceSearchModel.reset_queryr  s    


r%   c                 B    | j                             |dz
  |           d S r  )r=  rM  )rk   r  	resultsets      r&   set_resultsz"ConcordanceSearchModel.set_resultsu  s$    D1Hi00000r%   c                 ,    | j         | j        dz
           S r  )r=  r:  rj   s    r&   r6  z"ConcordanceSearchModel.get_resultsx  s    |D4q899r%   c                 f    | j         g k    s| j         d         g k    rdS | j        dS || j        k     S )Nr   FT)r=  r  r  s     r&   ru  z%ConcordanceSearchModel.has_more_pages{  s>    <2aB!6!65>!4dn$$r%   c                       e Zd Zd Zd ZdS )!ConcordanceSearchModel.LoadCorpusc                 b    t           j                            |            ||c| _        | _        d S r*   )	threadingThreadrl   r`   r  )rk   r  r`   s      r&   rl   z*ConcordanceSearchModel.LoadCorpus.__init__  s-    %%d+++$)4!DJ			r%   c                 P   	  | j         j        | j                             }d |D             | j         _        | j         j                            t                     d S # t          $ r>}t          |           | j         j                            t                     Y d }~d S d }~ww xY w)Nc                 L    g | ]!}d                      d |D                       "S )r[  c              3   ,   K   | ]\  }}|d z   |z   V  dS )r\  Nr$   ).0r   ts      r&   	<genexpr>zCConcordanceSearchModel.LoadCorpus.run.<locals>.<listcomp>.<genexpr>  s.      <<VaQWq[<<<<<<r%   )rf  )r  rS  s     r&   
<listcomp>z9ConcordanceSearchModel.LoadCorpus.run.<locals>.<listcomp>  s@     + + +AECHH<<t<<<<<+ + +r%   )
r`   r   r  r#   r^   r  r#  	Exceptionprintr)  )rk   tsr   s      r&   runz%ConcordanceSearchModel.LoadCorpus.run  s    A2TZ'	244+ +IK+ + +
' 
 $$%899999 A A Aa
 $$%?@@@@@@@@@As   AA 
B%'3B  B%N)r}  r~  r  rl   r  r$   r%   r&   r  r    s7        	0 	0 	0		A 		A 		A 		A 		Ar%   r  c                        e Zd Zd Zd Zd ZdS )#ConcordanceSearchModel.SearchCorpusc                 p    |||c| _         | _        | _        t          j                            |            d S r*   )r`   countr  r  r  rl   )rk   r`   r  r  s       r&   rl   z,ConcordanceSearchModel.SearchCorpus.__init__  s5    05ud-DJ
DI%%d+++++r%   c                    |                                  }g dd}}}| j        j        | j        j        d          D ]}	 t	          j        ||          }nT# t          j        $ rB | j                                         | j        j        	                    t                     Y  d S w xY w|rf|                    ||                                |                                f           |dz  }|| j        k    r| j        xj        |dz
  z  c_         n|dz  }| j        t          |          k    rJ| j        xj        |dz
  z  c_        | j        | j        _        | j                            | j        |           n(| j                            | j        |d d                    | j        j        	                    t&                     d S )Nr   rv   )processed_queryr`   r#   r  rer   errorrF  r^   r  r'  r^  r  endr  r8  r  r  r  r%  )rk   r\   sent_posi
sent_countrS  ms          r&   r  z'ConcordanceSearchModel.SearchCorpus.run  s   $$&&A&(!QaH
/
0M0O0OP    	!T**AAx   J,,...J$(();<<<FFF  OOT17799aeegg$>???FA4:~~
55aG55a

zS]]**
--a?--'+y
$
&&ty(;;;;
&&ty(3B3-@@@J  !899999s   AAB#"B#c                    g }| j         j                                        D ]}t          j        dd|          }t          j        d|          r1|                    t          t          z   dz   |z   t          z              ^d|v r&|                    t          |z   t          z              |                    t          |z   dz   t          z   t          z              d	                    |          S )Nz\.z[^/ ]z[A-Z]+$r\  r[  )
r`   r9  r]  r  submatchr^  BOUNDARYWORD_OR_TAGrf  )rk   newterms      r&   r  z3ConcordanceSearchModel.SearchCorpus.processed_query  s    C
(..00 O OveXt448It,, OJJx+5;dBXMNNNND[[JJx$9::::JJx$4{BXMNNNN88C== r%   N)r}  r~  r  rl   r  r  r$   r%   r&   r  r    sA        	, 	, 	,	: 	: 	:2
	! 
	! 
	! 
	! 
	!r%   r  N)r}  r~  r  rl   r   re   r   r  r  rF  ro  r  r6  ru  r  r  r  r  r$   r%   r&   r_   r_   E  s       $ $ $    A A A
4 4 40 0 0  
  1 1 1: : :% % %A A A A AY% A A A (! (! (! (! (!y' (! (! (! (! (!r%   r_   c                  J    t                      } |                                  d S r*   )rX   r|  )ri  s    r&   appr    s    AJJLLLLLr%   __main__r  )2r^   r\   r  r  tkinterr   r   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   nltk.draw.utilr   	nltk.utilr   r  r  r#  r%  r'  r)  rh   r  r  rX   r_   r  r}  __all__r$   r%   r&   <module>r     s       				                                                                  $ # # # # #      $ ( # , 
 79+ . .9 99	9
 ) + +9 0 2 29 3 5 59 2 4 49" : < <#9( 2 4 4)9. 0 2 2/94  ? ?596 , . .79< *+J+J=9> 7 9 9?9D DDE9F * , ,G9L 99M9N ( * *O9T 'U&T4 4 /N.M; ; /P.O; ;. .m9 9 9xL+ L+ L+ L+ L+ L+ L+ L+^u! u! u! u! u! u! u! u!p  
 zCEEE'r%   