3
dH9                 @   s^  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&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 dZ'G dd dZ(G d d! d!Z)d"d# Z*e+d$krTe*  d#gZ,dS )%    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)c               C   s   t j S )N)r   words r   r   9/tmp/pip-build-v9q4h5k9/nltk/nltk/app/collocations_app.py<lambda>3   s    r!   c               C   s   t j S )N)r   r   r   r   r   r    r!   4   s    c               C   s   t jdddgdS )NnewsZ	editorialZreviews)
categories)r   r   r   r   r   r    r!   5   s   c               C   s   t jddS )NZreligion)r#   )r   r   r   r   r   r    r!   8   s    c               C   s   t jddS )NZlearned)r#   )r   r   r   r   r   r    r!   9   s    c               C   s   t jddS )NZscience_fiction)r#   )r   r   r   r   r   r    r!   :   s   c               C   s   t jddS )NZromance)r#   )r   r   r   r   r   r    r!   =   s    c               C   s   t jddS )NZhumor)r#   )r   r   r   r   r   r    r!   >   s    c               C   s   t j S )N)r   r   r   r   r   r    r!   ?   s    c               C   s   t j S )N)r   r   r   r   r   r    r!   @   s    c               C   s   t j S )N)r   r   r   r   r   r    r!   A   s    c               C   s   t j S )N)r   r   r   r   r   r    r!   B   s    c               C   s   t jddS )Nz	hindi.pos)files)r   r   r   r   r   r    r!   C   s    c               C   s   t j S )N)r   r   r   r   r   r    r!   D   s    c               C   s   t j S )N)r   r   r   r   r   r    r!   E   s    c               C   s   t j S )N)r   r   r   r   r   r    r!   F   s    c               C   s   t j S )N)r   r   r   r   r   r    r!   G   s    )zCatalan: CESS-CAT CorpuszEnglish: Brown CorpuszEnglish: Brown Corpus (Press)z English: Brown Corpus (Religion)zEnglish: Brown Corpus (Learned)z'English: Brown Corpus (Science Fiction)zEnglish: Brown Corpus (Romance)zEnglish: Brown Corpus (Humor)zEnglish: NPS Chat Corpusz#English: Wall Street Journal CorpuszChinese: Sinica CorpuszDutch: Alpino CorpuszHindi: Indian Languages Corpusz&Portuguese: Floresta Corpus (Portugal)z&Portuguese: MAC-MORPHO Corpus (Brazil)z#Portuguese: Machado Corpus (Brazil)zSpanish: CESS-ESP Corpusc               @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4S )5CollocationsViewz#FFFc             C   sb   t j | _t| j| _t | _| j| j | j  | j	| j | j
| jj | jjt| j| _d S )N)qQueuequeueCollocationsModelmodelr   top	_init_top_init_menubar_init_widgetsload_corpusDEFAULT_CORPUSafterPOLL_INTERVAL_poll)selfr   r   r    __init__N   s    
zCollocationsView.__init__c             C   s@   |j d |jd |jd| j |jd| j |jdd d S )Nz550x650+50+50zNLTK Collocations Listz<Control-q>ZWM_DELETE_WINDOWi&  i  )ZgeometrytitlebinddestroyprotocolZminsize)r4   r+   r   r   r    r,   X   s
    

zCollocationsView._init_topc             C   s^   t |t| jdddd| _| j| j | j| j | j| j | j| j | jjddd d S )N   )
backgroundpadxpadyborderbothT)fillexpand)	r   dict_BACKGROUND_COLOURZ
main_frame_init_corpus_select_init_results_box_init_paging_init_statuspack)r4   parentr   r   r    r.   _   s    zCollocationsView._init_widgetsc          	   C   s   t || jd}t|| _| jj| jj t|td| jddddj	dd t
| jjj j| jj}t|| j| jjf| jj d	| ji}d|d
< d|d< |j	dd |j	dddd d S )N)r;   z	 Corpus:    r:   r   )justifytextr;   r<   r=   r>   left)sidecommandborderwidthhighlightthicknessr+   xn)rN   r@   anchor)r   rC   r   varsetr*   r0   r   r   rH   listCORPORAkeysremover
   non_default_corporacorpus_selected)r4   rI   
innerframeZother_corporaZomr   r   r    rD   i   s.    

z$CollocationsView._init_corpus_selectc          	   C   s.   t |tt| jdddd| _| jjddd d S )Nr   r:   )rK   Zreliefr;   r>   r<   r=   r+   sw)rN   rT   )r   r   r   rC   statusrH   )r4   rI   r   r   r    rG      s    
zCollocationsView._init_statusc             C   s   t | j| _t| j}t|ddd}|jdd| jdd |jdd|d t|dd	}t|dd	}|jd
| jdd| jd |jd| jdd| jd |jd| jdd| jd |j	d |jdd|d |jdd|d | jj
|d d S )Nr   )tearoffrP   ZExitr:   zCtrl-q)label	underlinerO   ZacceleratorZFile)ra   rb   menu)r`   20   )ra   variablerb   valuerO   Z502   Z100r   zResult CountZEdit)rc   )r   r+   _result_sizer	   Zadd_commandr8   Zadd_cascadeZadd_radiobuttonset_result_sizeZinvokeconfig)r4   ZmenubarZfilemenuZeditmenuZ
rescntmenur   r   r    r-      s<    




zCollocationsView._init_menubarc             K   s   | j j | j_d S )N)ri   getr*   result_count)r4   kwargsr   r   r    rj      s    z CollocationsView.set_result_sizec             C   s   t |}t |}t |}t|dd}t|ddd}t|tddddd|j|jd	d
ddd
| _| jjdddd |jdddd |j| jjd |jddddd |j| jj	d t
|d| jdjddd |jddddd |jdddd |jdddd d S )Nr:   )rP   Zhoriz)rP   ZorientZcourierZ16)familysizedisablednoneZ40rd   )	fontstaterP   ZyscrollcommandZxscrollcommandwrapwidthheightZexportselectionrM   r?   T)rN   r@   rA   ye)rN   r@   rT   )rO   rR   w)rN   r@   rA   rT   z   )rL   r;   )rN   rT   r+   rS   Zbottoms)r   r   r   r   rV   results_boxrH   rk   ZyviewZxviewr   rC   )r4   rI   r]   i1i2Z
vscrollbarZ
hscrollbarr   r   r    rE      s4    


z"CollocationsView._init_results_boxc          	   C   s   t || jd}t|d| jddddd | _}|jddd	 t|d
| jddddd | _}|jddd	 |jddd | j  d S )N)r;   ZPrevious10r:   rq   )rL   rO   rv   rP   rQ   rt   rM   center)rN   rT   ZNextrightr+   rx   )rN   r@   )	r   rC   r   previousprevrH   __next__nextreset_current_page)r4   rI   r]   r   r   r   r   r    rF      s*    zCollocationsView._init_pagingc             C   s
   d| _ d S )Nr:   )current_page)r4   r   r   r    r      s    z#CollocationsView.reset_current_pagec             C   sf   y| j jdd}W n tjk
r(   Y n(X |tkr>| j| n|tkrP| j| | jj	t
| j| _	d S )NF)block)r(   rl   r&   EmptyCORPUS_LOADED_EVENThandle_corpus_loadedERROR_LOADING_CORPUS_EVENThandle_error_loading_corpusr+   r1   r2   r3   )r4   eventr   r   r    r3      s    
zCollocationsView._pollc             C   s8   d| j j  | jd< | j  | j  | j  | j  d S )NzError in loading rL   )rU   rl   r_   unfreeze_editableclear_results_boxfreeze_editabler   )r4   r   r   r   r    r     s
    z,CollocationsView.handle_error_loading_corpusc             C   sZ   | j j d | jd< | j  | j  | j  | jj| jd }| j	| |  jd7  _d S )Nz
 is loadedrL   r:   )
rU   rl   r_   r   r   r   r*   r   r   write_results)r4   r   collocationsr   r   r    r   
  s    
z%CollocationsView.handle_corpus_loadedc             G   s   | j j }| j| d S )N)rU   rl   r/   )r4   argsZnew_selectionr   r   r    r\     s    
z CollocationsView.corpus_selectedc             C   sD   | j   | jj| jd }| jd | _| j  | j| | j  d S )Nr:   )r   r*   r   r   r   r   r   )r4   r   r   r   r    r     s    
zCollocationsView.previousc             C   sF   | j   | jj| jd }| j  | j| |  jd7  _| j  d S )Nr:   )r   r*   r   r   r   r   r   )r4   r   r   r   r    r      s    
zCollocationsView.__next__c             C   s6   | j j|kr2d| d | jd< | j  | j j| d S )NzLoading z...rL   )r*   selected_corpusr_   r   r/   )r4   Z	selectionr   r   r    r/   (  s    zCollocationsView.load_corpusc             C   s   d| j d< d| jd< d S )Nrq   rt   )r   r   )r4   r   r   r    r   .  s    
z CollocationsView.freeze_editablec             C   s&   d| j d< | j jdt d| j d< d S )Nnormalrt   z1.0rq   )r|   deleter   )r4   r   r   r    r   2  s    
z"CollocationsView.clear_results_boxc             C   s   | j j|dd d S )Ntail)when)r+   Zevent_generate)r4   r   r   r   r    
fire_event7  s    zCollocationsView.fire_eventc             G   s0   | j d krd S | j j| j | j j  d | _ d S )N)r+   Zafter_cancelr1   r8   )r4   ry   r   r   r    r8   ;  s
    

zCollocationsView.destroyc             O   s   t  r
d S | jj|| d S )N)r   r+   mainloop)r4   r   rn   r   r   r    r   B  s    zCollocationsView.mainloopc             C   s   | j   d S )N)set_paging_button_states)r4   r   r   r    r   G  s    z"CollocationsView.unfreeze_editablec             C   sR   | j dks| j dkr d| jd< n
d| jd< | jj| j rDd| jd< n
d| jd< d S )Nr:   r   rq   rt   r   r   )r   r   r*   is_last_pager   )r4   r   r   r    r   J  s    
z)CollocationsView.set_paging_button_statesc             C   s\   d| j d< d}x>|D ]6}| j jt|d |d d |d  d  |d7 }qW d| j d< d S )	Nr   rt   r:   z.0r    
rq   )r|   insertstr)r4   resultsrowZeachr   r   r    r   T  s    

*zCollocationsView.write_resultsN)__name__
__module____qualname__rC   r5   r,   r.   rD   rG   r-   rj   rE   rF   r   r3   r   r   r\   r   r   r/   r   r   r   r8   r   r   r   r   r   r   r   r    r%   K   s4   

'

r%   c               @   sV   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	G dd de
jZdS )r)   c             C   s0   d | _ d | _d | _t| _t| _|| _| j  d S )N)	rm   r   r   _CORPORArX   _DEFAULTr0   r(   reset_results)r4   r(   r   r   r    r5   ^  s    zCollocationsModel.__init__c             C   s   g | _ d| _d S )Nr   )result_pagesresults_returned)r4   r   r   r    r   g  s    zCollocationsModel.reset_resultsc             C   s,   || _ d | _| j|| }|j  | j  d S )N)r   r   
LoadCorpusstartr   )r4   nameZrunner_threadr   r   r    r/   k  s
    zCollocationsModel.load_corpusc             C   s0   g }|j t| jj  |j| j |j  |S )N)extendrW   rX   rY   rZ   r0   sort)r4   copyr   r   r    r[   r  s
    z%CollocationsModel.non_default_corporac             C   s6   |t | jk rdS | j|t | j | j  t | jkS )NF)lenr   r   rm   r   )r4   numberr   r   r    r   y  s
    zCollocationsModel.is_last_pagec             C   sl   t | jd |k rbxNt|t | jd  D ]4}| jj| j| j| j| j   |  j| j7  _q*W | j| S )Nr:   )r   r   rangeappendr   r   rm   )r4   pageir   r   r    r     s    zCollocationsModel.nextc             C   s   |dkrg S | j | S )Nr:   r   )r   )r4   r   r   r   r    r     s    zCollocationsModel.prevc               @   s   e Zd Zdd Zdd ZdS )zCollocationsModel.LoadCorpusc             C   s   t jj|  || | _| _d S )N)	threadingThreadr5   r*   r   )r4   r   r*   r   r   r    r5     s    z%CollocationsModel.LoadCorpus.__init__c                s   y| j j| j  }ddlm} dd |D tfddttd D  t fdd D }|j|dd	d
 t	t
|d|| j _| j jjt W n8 tk
r } zt| | j jjt W Y d d }~X nX d S )Nr   )
itemgetterc             S   s   g | ]}t |d kr|qS )rJ   )r   ).0rz   r   r   r    
<listcomp>  s    z4CollocationsModel.LoadCorpus.run.<locals>.<listcomp>c             3   s"   | ]}t  ||d   V  qdS )rJ   N)tuple)r   r   )rL   r   r    	<genexpr>  s    z3CollocationsModel.LoadCorpus.run.<locals>.<genexpr>r:   c                s8   g | ]0\}}||f ||f d  | |   fqS )   r   )r   Zw1Zw2)fdvocabr   r    r     s   T)keyreverse)r*   rX   r   operatorr   r   r   r   r   rW   mapr   r(   putr   	Exceptionprintr   )r4   r   r   Zscoredry   r   )r   rL   r   r    run  s    "z CollocationsModel.LoadCorpus.runN)r   r   r   r5   r   r   r   r   r    r     s   r   N)r   r   r   r5   r   r/   r[   r   r   r   r   r   r   r   r   r   r    r)   ]  s   	r)   c              C   s   t  } | j  d S )N)r%   r   )cr   r   r    app  s    r   __main__)-r(   r&   r   tkinterr   r   r   r   r   r   r   r	   r
   r   r   r   r   Ztkinter.fontr   Znltk.corpusr   r   r   r   r   r   r   r   r   r   r   Znltk.probabilityr   Z	nltk.utilr   r   r   r2   r   r   r%   r)   r   r   __all__r   r   r   r    <module>
   sF   <4  Q
