Team Ai
Apppublic

sumanthd/IndicTrans-MultilingualTranslation

sourceHugging Facemitupdated 4y agoView on Hugging Face
6likes
engine.cpython-38.pyc59 linesDownload Raw Back to __pycache__
1U

2��,cw�@s�ddlmZddlmZddlmZddlmZddlmZmZddl	Z	ddl3m4Z5ddlmZdd	lm
Z
dd6lmZddlmZddlmZdd
lmZddlmZdddddddddddgZdd�Zdd�Zdd�Zd d!�ZGd"d#�d#�ZdS)$�)�truncate)�MosesPunctNormalizer)�MosesTokenizer)�MosesDetokenizer)�BPE�read_vocabularyN)�tqdm)�indic_tokenize)�indic_detokenize)�indic_normalize)�unicode_transliterate)�MosesSentenceSplitter)�sentence_tokenize)�7Translator�asZbn�gu�hi�kn�ml�mr�or�pa�ta�tec8CsJ|dkr0t|��}||g�W5QR�SQRXn|tkrFtj||d�SdS)N�en��lang)r
�INDICrZsentence_split)�	paragraph�language�splitter�r!�+D:\ai4bharat\indicTrans\inference\engine.py�split_sentencess910r#cCsBg}|D]&\}}d|d|d}|�|�qd�|�d|S)z�add special tokens specified by tag_infos to each element in list11 12    tag_infos: list of tuples (tag_type,tag)13 14    each tag_info results in a token of the form: __{tag_type}__{tag}__15 16    �__� )�append�join)�sentZ	tag_infos�tokensZtag_type�tag�tokenr!r!r"�	add_tokens17	r,cCs6g}|D](}t|��d|fd|fg�}|�|�q|S)N�src�tgt)r,�stripr&)�sents�src_lang�tgt_lang�tagged_sentsr(Ztagged_sentr!r!r"�apply_lang_tags.s18r4cCs�d}g}|D]p}|��}t|�}||krrd�|dd��dd�|dd��}d�|d|��}td|�d��|�|�q|S)N��r%�z .... �����zWARNING: Sentence z; truncated to 200 tokens as it exceeds maximum length limit)�split�lenr'�printr&)r0ZMAX_SEQ_LENZ	new_sentsr(�wordsZ	num_wordsZ	print_strr!r!r"�truncate_long_sentences6s(19�r<c@sFeZdZdd�Zdd�Zdd�Zdd�Zd	d20�Zddd
�Zdd�Z	dS)�ModelcCs�||_tdd�|_t�|_tdd�|_t��|_	t21d�ttj
|�d�dd�d�|_ttj
|�d�dd�d	d22|jd�|_t23d�t|�d�|�d
�dd�|_dS)NrrzInitializing vocab and bpez/vocab/vocab.SRCzutf-8)�encodingr6z/vocab/bpe_codes.32k.SRC�����z@@z"Initializing model for translationz24/final_binz/model/checkpoint_best.pt�d)Z25batch_size)�expdirr�en_tokr�
en_normalizerr�en_detokr�UnicodeIndicTransliterator�26xliteratorr:r�codecs�openZ27vocabularyr�bper�28translator)�selfrAr!r!r"�__init__Js.29���zModel.__init__c	CsVt|t�st�|j||d�}|�|�}t|||�}t|�}|j�|�}|�	||�}|S)Nr)30�31isinstance�list�AssertionError�32preprocess�	apply_bper4r<rJ�	translate�postprocess)	rK�batchr1r2Zpreprocessed_sentsZ	bpe_sentsr3Ztranslations�postprocessed_sentsr!r!r"�batch_translatecs33zModel.batch_translatecCs4t|t�st�t||�}|�|||�}d�|�}|S)Nr%)rM�strrOr#rVr')rKrr1r2r0rUZtranslated_paragraphr!r!r"�translate_paragraphqs343536zModel.translate_paragraphc37Cs^|dkr*d�|jj|j�|���dd��Stj�d�t	�38|�|���|��|d��dd�SdS)Nrr%F)�escaperu ् u्)r'rB�tokenizerC�	normalizer/rrE�
transliterater	Ztrivial_tokenize�replace)rKr(�39normalizerrr!r!r"�preprocess_sent|s(������zModel.preprocess_sentcsR�dkr"��fdd�t|�D�}n,t��}|�������fdd�t|�D�}|S)zr40        Normalize, tokenize and script convert(for Indic)41        return number of sentences input file42 43        rcsg|]}��|d���qS)N�r_��.0�line)rrKr!r"�44<listcomp>�sz$Model.preprocess.<locals>.<listcomp>csg|]}��|����qSr!r`ra�rr^rKr!r"rd�s)rrZIndicNormalizerFactoryZget_normalizer)rKr0rZprocessed_sentsZnormfactoryr!rer"rP�s�45�zModel.preprocessrcCs`g}|dkr0|D]}|�|j�|�d���qn,|D]&}t�|j�|||�|�}|�|�q4|S)al46        parse fairseq interactive output, convert script back to native Indic script (in case of Indic languages) and detokenize.47 48        infname: fairseq log file49        outfname: output file of translation (sentences not translated contain the dummy string 'DUMMY_OUTPUT'50        input_size: expected number of output sentences51        lang: language52        rr%)r&rDZ53detokenizer8r54Ztrivial_detokenizerFr\)rKr0rZcommon_langrUr(�outstrr!r!r"rS�s	�zModel.postprocesscs�fdd�|D�S)Ncsg|]}�j�|��qSr!)rIZprocess_line)rbr(�rKr!r"rd�sz#Model.apply_bpe.<locals>.<listcomp>r!)rKr0r!rgr"rQ�szModel.apply_bpeN)r)55�__name__�56__module__�__qualname__rLrVrXr_rPrSrQr!r!r!r"r=Is57r=)�osrZ58sacremosesrrrZsubword_nmt.apply_bperrrGrZindicnlp.tokenizer	r59Zindicnlp.normalizerZindicnlp.transliteraterZmosestokenizerr
rZinference.custom_interactiverrr#r,r4r<r=r!r!r!r"�<module>s&