a
     g                     @   s*   d dl mZ ddlmZ G dd dZdS )    )M2M100ForConditionalGeneration   )SMALL100Tokenizerc                   @   s8   e Zd ZdZdeeddddZdeeed	d
dZdS )Small100Translatorz
    Machine Translation using small100 model

    - Huggingface https://huggingface.co/alirezamsh/small100

    :param bool use_gpu : load model using GPU (Default is False)
    Falirezamsh/small100N)use_gpu
pretrainedreturnc                 C   s.   || _ t| j | _d | _|r*| j | _d S )N)r   r   from_pretrainedmodeltgt_langZcuda)selfr   r    r   F/usr/local/lib/python3.9/dist-packages/pythainlp/translate/small100.py__init__   s
    zSmall100Translator.__init__en)textr   r	   c                 C   sV   || j kr"tj| j|d| _|| _ | jjf i | j|dd| _| jj| jddd S )uK  
        Translate text from X to X

        :param str text: input text in source language
        :param str tgt_lang: target language
        :return: translated text in target language
        :rtype: str

        :Example:

        ::

            from pythainlp.translate.small100 import Small100Translator

            mt = Small100Translator()

            # Translate text from Thai to English
            mt.translate("ทดสอบระบบ", tgt_lang="en")
            # output: 'Testing system'

            # Translate text from Thai to Chinese
            mt.translate("ทดสอบระบบ", tgt_lang="zh")
            # output: '系统测试'

            # Translate text from Thai to French
            mt.translate("ทดสอบระบบ", tgt_lang="fr")
            # output: 'Test du système'

        )r   pt)Zreturn_tensorsT)Zskip_special_tokensr   )	r   r   r
   r   	tokenizerr   generateZ
translatedZbatch_decode)r   r   r   r   r   r   	translate   s    

zSmall100Translator.translate)Fr   )r   )__name__
__module____qualname____doc__boolstrr   r   r   r   r   r   r      s   
  r   N)Ztransformersr   Ztokenization_small100r   r   r   r   r   r   <module>   s   