
    Ofm^              	          S SK r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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  S SK J!r!  S SK"J#r#  Sr$Sr%S	r&S
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/ _S0 S1 S2 S3 S4 S5 S6 S7.Er, " S8 S95      r- " S: S;5      r.S< r/\0S=:X  a  \/" 5         S>/r1g)?    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                  *    [         R                  " SS9$ N	universal)tagset)r   tagged_sents     :/usr/lib/python3/dist-packages/nltk/app/concordance_app.py<lambda>r'   ;       X5J5J6r%   zEnglish: Brown Corpusc                  ,    [         R                  " 5       $ Nr   r#   r$   r%   r&   r'   r'   >   s    U%7%7%9r%   z"English: Brown Corpus (simplified)c                  *    [         R                  " SS9$ r    r+   r$   r%   r&   r'   r'   ?   s    %2D2D3r%   z)English: Brown Corpus (Press, simplified)c                  0    [         R                  " / SQSS9$ )N)news	editorialreviewsr!   
categoriesr"   r+   r$   r%   r&   r'   r'   B   s    9K9K3K:r%   z,English: Brown Corpus (Religion, simplified)c                  ,    [         R                  " SSS9$ )Nreligionr!   r1   r+   r$   r%   r&   r'   r'   E   s    E<N<Nk=r%   z+English: Brown Corpus (Learned, simplified)c                  ,    [         R                  " SSS9$ )Nlearnedr!   r1   r+   r$   r%   r&   r'   r'   H       5;M;M[<r%   z3English: Brown Corpus (Science Fiction, simplified)c                  ,    [         R                  " SSS9$ )Nscience_fictionr!   r1   r+   r$   r%   r&   r'   r'   K   s    5CUCU$[Dr%   z+English: Brown Corpus (Romance, simplified)c                  ,    [         R                  " SSS9$ )Nromancer!   r1   r+   r$   r%   r&   r'   r'   N   r7   r%   c                  ,    [         R                  " SSS9$ )Nhumorr!   r1   r+   r$   r%   r&   r'   r'   Q   s    9K9K;:r%   zEnglish: NPS Chat Corpusc                  ,    [         R                  " 5       $ r*   r   tagged_postsr$   r%   r&   r'   r'   T   s    (=(=(?r%   z%English: NPS Chat Corpus (simplified)c                  *    [         R                  " SS9$ r    r?   r$   r%   r&   r'   r'   U   r(   r%   z#English: Wall Street Journal Corpusc                  ,    [         R                  " 5       $ r*   r   r#   r$   r%   r&   r'   r'   X   s    83H3H3Jr%   z0English: Wall Street Journal Corpus (simplified)c                  *    [         R                  " SS9$ r    rC   r$   r%   r&   r'   r'   Y   s    @U@UAr%   zChinese: Sinica Corpusc                  ,    [         R                  " 5       $ r*   r   r#   r$   r%   r&   r'   r'   \   s    o&B&B&Dr%   z#Chinese: Sinica Corpus (simplified)c                  *    [         R                  " SS9$ r    rF   r$   r%   r&   r'   r'   ]   s    ?3O3O4r%   zDutch: Alpino Corpusc                  ,    [         R                  " 5       $ r*   r   r#   r$   r%   r&   r'   r'   `   s    F$7$7$9r%   z!Dutch: Alpino Corpus (simplified)c                  *    [         R                  " SS9$ r    rI   r$   r%   r&   r'   r'   a   s    1D1D2r%   c                  *    [         R                  " SS9$ )N	hindi.pos)filesr   r#   r$   r%   r&   r'   r'   d   s    f.A.A.Tr%   c                  ,    [         R                  " SSS9$ )NrL   r!   )rM   r"   rN   r$   r%   r&   r'   r'   e   s    6;N;N+<r%   c                  ,    [         R                  " 5       $ r*   r   r#   r$   r%   r&   r'   r'   h   s    h6K6K6Mr%   c                  *    [         R                  " SS9$ r    rQ   r$   r%   r&   r'   r'   i   s    (BWBWCr%   c                  ,    [         R                  " 5       $ r*   r   r#   r$   r%   r&   r'   r'   l   s    j6M6M6Or%   c                  *    [         R                  " SS9$ r    rT   r$   r%   r&   r'   r'   m   s    *BYBYCr%   c                  *    [         R                  " SS9$ 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                      \ 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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-).ConcordanceSearchViewv   z#FFFz#F00
HL_WRD_TAGz#C0C0C0
HL_LBL_TAGg333333?c                    [         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ConcordanceSearchModelmodelr   top	_init_top_init_menubar_init_widgetsload_corpusDEFAULT_CORPUSafterPOLL_INTERVAL_pollselfs    r&   __init__ConcordanceSearchView.__init__   s    WWY
+DJJ7
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950x680+50+50zNLTK Concordance Searchz<Control-q>WM_DELETE_WINDOWi  i  )geometrytitlebinddestroyprotocolminsize)rl   rb   s     r&   rc   ConcordanceSearchView._init_top   sN    _%		+,-'6Cr%   c           
         [        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                  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_query_box_init_results_box_init_paging_init_statuspackrl   parents     r&   re   #ConcordanceSearchView._init_widgets   s    DD$;$;!!TUV
 	  1T__-t/$//*$//*&6r%   c                    [        U R                  5      U l        [        U R                  5      U l        [        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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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                  S SUS9  U R                  R                  US!9  g )"Nr   )tearoffborderwidthExitry   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	   rb   _result_size_cntx_bf_len_cntx_af_lenr   add_commandrt   add_cascadeadd_radiobuttonset_result_sizeinvokeset_cntx_bf_lenset_cntx_af_lenconfig)rl   menubarfilemenueditmenu
rescntmenucntxmenu
cntxbfmenu
cntxafmenus           r&   rd   #ConcordanceSearchView._init_menubar   s   "488,"488,"488,txx.:At|| 	 	
 	&AHE+(A.
""&&(( 	# 	
 	""&&(( 	# 	
 	""&&(( 	# 	
 	!>QZP!,(A.
""!&&(( 	# 	
 	""!&&(( 	# 	
 	"""&&(( 	# 	
 	!8qzJ(A.
""!&&(( 	# 	
 	""!&&(( 	# 	
 	"""&&(( 	# 	
 	!7ajI9I&AHEW%r%   c                 V    U R                   R                  5       U R                  l        g r*   )r   getra   result_countrl   kwargss     r&   r   %ConcordanceSearchView.set_result_size   s    "&"3"3"7"7"9

r%   c                 B    U R                   R                  5       U l        g r*   )r   r   _char_afterr   s     r&   r   %ConcordanceSearchView.set_cntx_af_len  s    ,,002r%   c                 B    U R                   R                  5       U l        g r*   )r   r   _char_beforer   s     r&   r   %ConcordanceSearchView.set_cntx_bf_len  s     --113r%   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rz   z	 Corpus:    ry   r   )justifytextrz   r{   r|   r}   left)sider   r   highlightthicknessrb   xnr   r   anchor)r   r   r   varsetra   rg   r
   r   r   listCORPORAkeysremover   non_default_corporacorpus_selected)rl   r   
innerframeother_corporaoms        r&   r   )ConcordanceSearchView._init_corpus_select  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   ry   )r   reliefrz   r}   r{   r|   rb   swr   r   )r
   r   r   r   statusr   r   s     r&   r   "ConcordanceSearchView._init_status$  sB    ..
 	eD1r%   c                    [        XR                  S9n[        X R                  S9n[        USS9U l        U R                  R	                  SSSSS9  [        US	U R                  S
S
S9U l        U R                  R	                  SSSSS9  U R                  R                  SU R                  5        UR	                  5         UR	                  SSSS9  g )Nr   r   )widthr   r      center)r   r   r|   r   Searchry   )r   r   r   r   z<KeyPress-Return>rb   r   r   )
r   r   r   	query_boxr   r   searchsearch_buttonrs   search_enter_keypress_handler)rl   r   r   anothers       r&   r   %ConcordanceSearchView._init_query_box0  s    6.E.EF

/F/FGwb1c8L#KK 
 	V#BxP/1S1STUS9r%   c                 $    U R                  5         g r*   )r   rl   events     r&   r   3ConcordanceSearchView.search_enter_keypress_handlerA  s    r%   c                 D   [        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
                  R                  U R                  U R                  S9  U R
                  R                  U R                  U R                  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 ) Nry   )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   rz   r   rb   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   )rl   r   r   i1i2
vscrollbar
hscrollbars          r&   r   'ConcordanceSearchView._init_results_boxD  s   6]
::rq1
rqA
YT2%>>%>>
 	6tD##$$1L1L 	$ 	
 	##%%$2N2N 	$ 	
 	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  SU l        g )Nr   Previous10ry   r   )r   r   r   r   r   r   r   r   r   Nextrightrb   r  )r   r   r   )	r   r   r   previousprevr   __next__nextcurrent_page)rl   r   r   r  r  s        r&   r   "ConcordanceSearchView._init_pagingi  s    6.E.EF
!MM 
 	
	D 			vh	/!MM 
 	
	D 			wx	0U-r%   c                     U R                  5         U R                  5         U R                  R                  U R                  S-
  5        g Nry   )clear_results_boxfreeze_editablera   r  r   rk   s    r&   r  ConcordanceSearchView.previous  5     

))A-.r%   c                     U R                  5         U R                  5         U R                  R                  U R                  S-   5        g r#  )r$  r%  ra   r  r   rk   s    r&   r  ConcordanceSearchView.__next__  r'  r%   c                     SnSn SSK Jn  U" X#U R                  S9R                  5         g !   [	        U R
                  X25         g = f)NzNLTK Concordance Search Demo
z#About: NLTK Concordance Search Demor   )Message)messagerr   r   )tkinter.messageboxr+  r   showr   rb   )rl   r  ABOUTTITLEr+  s        r&   aboutConcordanceSearchView.about  s@    05	-2EtGLLN	-TXXu,s	   %, Ac                 T   U R                   R                  [        U R                  5        U R                   R                  [        U R
                  5        U R                   R                  [        U R                  5        U R                   R                  [        U R                  5        g r*   )
rb   rs   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_corpusrk   s    r&   _bind_event_handlers*ConcordanceSearchView._bind_event_handlers  sf    )4+D+DE-t/L/LM($*B*BC0$2R2RSr%   c                     U R                   R                  SS9nU[        :X  a  U R                  U5        OSU[        :X  a  U R                  U5        O7U[        :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)r_   r   r4  r5  r6  r7  r8  r9  r:  r;  r]   Emptyrb   rh   ri   rj   r   s     r&   rj   ConcordanceSearchView._poll  s    	8JJNNN/E ++))%011--e4,,((/44007XX^^M4::>
 ww 		s   B: :CCc                     SU R                   R                  5       -   U R                  S'   U R                  5         U R	                  5         U R                  5         g )NzError in loading r   )r   r   r   unfreeze_editable	clear_allr%  r   s     r&   r;  1ConcordanceSearchView.handle_error_loading_corpus  sA    1DHHLLNBF r%   c                     U R                   R                  5       S-   U R                  S'   U R                  5         U R	                  5         U R
                  R                  5         g )Nz
 is loadedr   )r   r   r   rC  rD  r   	focus_setr   s     r&   r5  *ConcordanceSearchView.handle_corpus_loaded  sE    "hhlln|;F   "r%   c                    U R                   R                  5       nU R                  U5        SU R                  S'   [	        U5      S:X  a'  SU R                   R
                  -   U R                  S'   OU R                   R                  U l        U R                  5         U R                  R                  U R                  5        g )N r   r   zNo results found for )ra   get_resultswrite_resultsr   lenquerylast_requested_pager   rC  r
  xview_moveto_FRACTION_LEFT_TEXT)rl   r   resultss      r&   r7  .ConcordanceSearchView.handle_search_terminated  s    **((*7# Fw<1"9DJJ<L<L"LDKK $

 > >D %%d&>&>?r%   c                 p    SU R                   R                  -   U R                  S'   U R                  5         g )NzError in query r   )ra   rN  r   rC  r   s     r&   r9  )ConcordanceSearchView.handle_search_error  s+    /$**2B2BBF r%   c                 Z    U R                   R                  5       nU R                  U5        g r*   )r   r   rf   )rl   argsnew_selections      r&   r   %ConcordanceSearchView.corpus_selected  s    '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   )ra   selected_corpusr   r%  rf   )rl   	selections     r&   rf   !ConcordanceSearchView.load_corpus  sO    ::%%2",y"85"@DKK  "JJ""9- 3r%   c                 j   SU l         U R                  5         U R                  R                  5         U R                  R                  5       n[        UR                  5       5      S:X  a  g SU-   U R                  S'   U R                  5         U R                  R                  XR                   S-   5        g )Nr   zSearching for r   ry   )r   r$  ra   reset_resultsr   r   rM  stripr   r%  r   )rl   rN  s     r&   r   ConcordanceSearchView.search  s     

  """$u{{}".6F

%!2!2Q!67r%   c                 x   SU R                   S'   SnU GH  nUS   R                  5       US   US   pen[        U5      S:w  d  M1  XPR                  :  a  U R	                  XEU5      u  pEnXEU R                  -
  XPR
                  -    nU[        U5      :X  d  US-  nU R                   R                  [        U5      S-   U5        U R                  XEU5      u  pU H`  n
U R                   R                  U R                  [        U5      S-   [        U
S   5      -   [        U5      S-   [        U
S   5      -   5        Mb     U	 H`  n
U R                   R                  U R                  [        U5      S-   [        U
S   5      -   [        U5      S-   [        U
S   5      -   5        Mb     US-  nGM     S	U R                   S'   g )
Nnormalr   ry   r   r   
z.0.r   )r
  r`  rM  r   padr   insertstrwords_and_labelstag_addr  r  )rl   rR  roweachsentpos1pos2sentenceword_markerslabel_markersmarkers              r&   rL  #ConcordanceSearchView.write_results  s   $,!D#Aw}}QaD4yA~+++'+xxD'A$Dt'8'8 84BRBR;RSc'l*$H  ''C4B.2.C.CDPT.U+*F$$,,00C3VAY7C3VAY7 + ,F$$,,11C3VAY7C3VAY7 , q- . %/!r%   c                    XU n/ / peUR                  S5      nSnU H  n	U	S:X  a  US-  nOU	R                  S5      u  pUR                  U R                  U-   U R                  U-   [        U
5      -   45        U[        U
5      S-   -  nUR                  U R                  U-   U R                  U-   [        U5      -   45        U[        U5      -  nUS-  nM     XV4$ )N r   rJ  ry   /)splitappendr   rM  )rl   rp  rn  ro  
search_expwordslabelslabeled_wordsindexrl  wordr   s               r&   ri  &ConcordanceSearchView.words_and_labels  s    4(
Bv"((-!Drz
"jjo&&.0A0AE0ICPTI0UV TQ&&&.0A0AE0ICPUJ0VW U#QJE " }r%   c                     X R                   :  a  XU4$ U R                   U-
  nSR                  S/U-  5      U-   nXU-   X4-   4$ )NrJ  rv  )r   join)rl   rm  hstarthendds        r&   rf  ConcordanceSearchView.pad  sS    &&&%%&wwuqy!D(aZ))r%   c                     U R                   c  g U R                   R                  U R                  5        U R                   R                  5         S U l         g r*   )rb   after_cancelrh   rt   )rl   r  s     r&   rt   ConcordanceSearchView.destroy  s<    88djj)r%   c                     U R                   R                  S[        5        U R                  R	                  5         U R                  5         g Nr   )r   deleter   ra   reset_queryr$  rk   s    r&   rD  ConcordanceSearchView.clear_all  s2    a%

  r%   c                     SU R                   S'   U R                   R                  S[        5        SU R                   S'   g )Nrc  r   z1.0r   )r
  r  r   rk   s    r&   r$  'ConcordanceSearchView.clear_results_box!  s8    $,!s+$.!r%   c                 |    SU R                   S'   SU R                  S'   SU R                  S'   SU R                  S'   g )Nr   r   )r   r   r  r  rk   s    r&   r%  %ConcordanceSearchView.freeze_editable&  s<    ",w&07#'		''		'r%   c                 `    SU R                   S'   SU R                  S'   U R                  5         g )Nrc  r   )r   r   set_paging_button_statesrk   s    r&   rC  'ConcordanceSearchView.unfreeze_editable,  s,    "*w&.7#%%'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   ry   r   r   rc  )r   r  ra   has_more_pagesr  rk   s    r&   r  .ConcordanceSearchView.set_paging_button_states1  sp    !T%6%6!%;!+DIIg!)DIIg::$$T%6%677!)DIIg!+DIIgr%   c                 8    U R                   R                  USS9  g )Ntail)when)rb   event_generater   s     r&   
fire_event ConcordanceSearchView.fire_event;  s    F3r%   c                 \    [        5       (       a  g U R                  R                  " U0 UD6  g r*   )r   rb   mainloop)rl   rW  r   s      r&   r  ConcordanceSearchView.mainloop?  s#    994*6*r%   )r   r   r   r   r   rh   r   r   ra   r  r  r   r_   r
  r   r   rb   r   N)/__name__
__module____qualname____firstlineno__r   r  r  r  r  rQ  rm   rc   re   rd   r   r   r   r   r   r   r   r   r   r  r  r1  r<  rj   r;  r5  r7  r9  r   rf   r   rL  ri  rf  rt   rD  r$  r%  rC  r  r  r  __static_attributes__r$   r%   r&   rX   rX   v   s     $&'' ?	7]&~:34::
2:"#>J2/
/
-T? #
@!(.	8/8**!
/
((
,4+r%   rX   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 S\R                   5      r " S S\R                   5      rSrg)r`   iE  c                     Xl         [        U l        [        U l        S U l        U R                  5         U R                  5         S U l        SU l	        g r  )
r_   _CORPORAr   _DEFAULTrg   r[  r  r_  r   last_sent_searched)rl   r_   s     r&   rm   ConcordanceSearchModel.__init__F  sF    
&# "#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   rg   sort)rl   copys     r&   r   *ConcordanceSearchModel.non_default_corporaP  sE    D**,-.D''(		r%   c                 `    Xl         / U l        U R                  X5      nUR                  5         g r*   )r[  r#   
LoadCorpusstart)rl   namerunner_threads      r&   rf   "ConcordanceSearchModel.load_corpusW  s*    #3r%   c                 p    Xl         X l        U R                  XU R                  5      R	                  5         g r*   )rN  rO  SearchCorpusr   r  )rl   rN  pages      r&   r   ConcordanceSearchModel.search]  s,    
#' $d&7&78>>@r%   c                     Xl         [        U R                  5      U:  a  U R                  U R                  U5        g U R
                  R                  [        5        g r*   )rO  rM  rR  r   rN  r_   putr6  rl   r  s     r&   r  ConcordanceSearchModel.nextb  s<    #' t||t#KK

D)JJNN23r%   c                 N    Xl         U R                  R                  [        5        g r*   )rO  r_   r  r6  r  s     r&   r  ConcordanceSearchModel.previ  s    #' 

./r%   c                 .    SU l         / U l        S U l        g r  )r  rR  	last_pagerk   s    r&   r_  $ConcordanceSearchModel.reset_resultsm  s    "#r%   c                     S U l         g r*   )rN  rk   s    r&   r  "ConcordanceSearchModel.reset_queryr  s	    
r%   c                 B    U R                   R                  US-
  U5        g r#  )rR  rg  )rl   r  	resultsets      r&   set_results"ConcordanceSearchModel.set_resultsu  s    D1Hi0r%   c                 :    U R                   U R                  S-
     $ r#  )rR  rO  rk   s    r&   rK  "ConcordanceSearchModel.get_resultsx  s    ||D44q899r%   c                     U R                   / :X  d  U R                   S   / :X  a  gU R                  c  gXR                  :  $ )Nr   FT)rR  r  r  s     r&   r  %ConcordanceSearchModel.has_more_pages{  s:    <<2aB!6>>!nn$$r%   c                        \ rS rSrS rS rSrg)!ConcordanceSearchModel.LoadCorpusi  c                 ^    [         R                  R                  U 5        X!sU l        U l        g r*   )	threadingThreadrm   ra   r  )rl   r  ra   s      r&   rm   *ConcordanceSearchModel.LoadCorpus.__init__  s$    %%d+$)!DJ	r%   c                     U R                   R                  U R                     " 5       nU Vs/ s H  nSR                  S U 5       5      PM     snU R                   l        U R                   R
                  R                  [        5        g s  snf ! [         a>  n[        U5        U R                   R
                  R                  [        5         S nAg S nAff = f)Nrv  c              3   6   #    U  H  u  pUS -   U-   v   M     g7f)rw  Nr$   ).0r  ts      r&   	<genexpr>8ConcordanceSearchModel.LoadCorpus.run.<locals>.<genexpr>  s     <tVaQWq[ts   )ra   r   r  r  r#   r_   r  r4  	Exceptionprintr:  )rl   tsrm  r  s       r&   run%ConcordanceSearchModel.LoadCorpus.run  s    AZZ''		24IK+IKCHH<t<<+

' 

  $$%89+  Aa

  $$%?@@As(   ,B "B;B B 
C4CC)ra   r  N)r  r  r  r  rm   r  r  r$   r%   r&   r  r    s    	0		Ar%   r  c                   &    \ rS rSrS rS rS rSrg)#ConcordanceSearchModel.SearchCorpusi  c                 l    XUsU l         U l        U l        [        R                  R                  U 5        g r*   )ra   countr  r  r  rm   )rl   ra   r  r  s       r&   rm   ,ConcordanceSearchModel.SearchCorpus.__init__  s*    05d-DJ
DI%%d+r%   c                    U R                  5       n/ SSpCnU R                  R                  U R                  R                  S   H  n [        R
                  " X5      nU(       ag  UR                  XVR                  5       UR                  5       45        US-  nX0R                  :  a$  U R                  =R                  US-
  -  sl          O	US-  nM     U R                  [        U5      :  ad  U R                  =R                  US-
  -  sl        U R                   U R                  l        U R                  R%                  U R                   U5        O)U R                  R%                  U R                   US S 5        U R                  R                  R                  [&        5        g ! [        R                   aG    U R                  R                  5         U R                  R                  R                  [        5           g f = f)Nr   ry   )processed_queryra   r#   r  rer   errorr_  r_   r  r8  ry  r  endr  rM  r  r  r  r6  )rl   r]   sent_posi
sent_countrm  ms          r&   r  'ConcordanceSearchModel.SearchCorpus.run  sy   $$&A&(!QH

//

0M0M0OP		!*A
 OOT779aeeg$>?FA::~

55aG5a
 Q zzS]*

--a?-'+yy

$

&&tyy(;

&&tyy(3B-@JJ  !89# xx JJ,,.JJ$$(();<s   F$$AG?>G?c                    / nU R                   R                  R                  5        H  n[        R                  " SSU5      n[        R
                  " SU5      (       a+  UR                  [        [        -   S-   U-   [        -   5        Mb  SU;   a!  UR                  [        U-   [        -   5        M  UR                  [        U-   S-   [        -   [        -   5        M     SR                  U5      $ )Nz\.z[^/ ]z[A-Z]+$rw  rv  )
ra   rN  rx  r  submatchry  BOUNDARYWORD_OR_TAGr  )rl   newterms      r&   r  3ConcordanceSearchModel.SearchCorpus.processed_query  s    C

((..0vveXt488It,,JJx+5;dBXMND[JJx$9:JJx$4{BXMN 1 88C= r%   )r  ra   r  N)r  r  r  r  rm   r  r  r  r$   r%   r&   r  r    s    	,	:2
	!r%   r  )r   rg   r  rO  r  rN  r_   r   rR  r[  r#   N)r  r  r  r  rm   r   rf   r   r  r  r_  r  r  rK  r  r  r  r  r  r  r$   r%   r&   r`   r`   E  s`    $A
40
1:%AY%% A (!y'' (!r%   r`   c                  8    [        5       n U R                  5         g r*   )rX   r  )r  s    r&   appr    s    AJJLr%   __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  r4  r6  r8  r:  ri   r  r  rX   r`   r  r  __all__r$   r%   r&   <module>r     s    	         $ $ ( # , 
 79+ .9 9	9
 ) +9 0 29 3 59 2 49" : <#9( 2 4)9. 0 2/94  ?596 , .79< *+J=9> 7 9?9D DE9F * ,G9L 9M9N ( *O9T 'U4 /N; /P;.m9xL+ L+^u! u!p
 zE'r%   