a
     g	                     @   s>   d Z ddlmZ ddlmZmZ ddlmZ G dd dZdS )z
Summarization by mT5 model
    )List)T5TokenizerMT5ForConditionalGeneration)CPE_KMUTT_THAI_SENTENCE_SUMc                	   @   s<   e Zd Zdeeeeeeedd	d
Zeee dddZdS )mT5Summarizersmall         d   TN)
model_size	num_beamsno_repeat_ngram_size
min_length
max_lengthskip_special_tokenspretrained_mt5_model_namec           	      C   s   d}|d u r0|dvr$t d| dd| }n|tkrDdt }n|}|| _t|| _t|| _|| _|| _	|| _
|| _|| _d S )N )r   baseZlargeZxlZxxlzmodel_size "zY" not found.
                    It might be a typo; if not, please consult our document.zgoogle/mt5-thanathorn/)
ValueErrorr   
model_namer   Zfrom_pretrainedmodelr   	tokenizerr   r   r   r   r   )	selfr   r   r   r   r   r   r   r    r   A/usr/local/lib/python3.9/dist-packages/pythainlp/summarize/mt5.py__init__   s$    

zmT5Summarizer.__init__)textreturnc                 C   s~   |  dd}| jdt kr*d| }nd| }| jj|dd}| jj|| j| j	| j
| jdd	}| jj|d
 | jd}|gS )N
r   r   z
simplify: zsummarize: pt)Zreturn_tensorsT)r   r   r   r   Zearly_stoppingr   )r   )stripreplacer   r   r   encoder   generater   r   r   r   decoder   )r   r   Zpreprocess_textZt5_prepared_TextZtokenized_textZsummary_idsoutputr   r   r   	summarize.   s&    

zmT5Summarizer.summarize)r   r   r	   r
   r   TN)	__name__
__module____qualname__strintboolr   r   r(   r   r   r   r   r      s"           r   N)	__doc__typingr   Ztransformersr   r   Zpythainlp.summarizer   r   r   r   r   r   <module>   s   