IND to MS HuggingFace#

This tutorial is available as an IPython notebook at Malaya/example/ind-ms-translation-huggingface.

This module trained on standard language and augmented local language structures, proceed with caution.

[1]:
import os

os.environ['CUDA_VISIBLE_DEVICES'] = ''
[2]:
%%time

import malaya
import logging

logging.basicConfig(level=logging.INFO)
CPU times: user 3.75 s, sys: 3.58 s, total: 7.33 s
Wall time: 3.06 s

List available HuggingFace models#

[5]:
malaya.translation.ind_ms.available_huggingface()
INFO:malaya.translation.ind_ms:tested on FLORES200 IND-MS (ind_Latn-zsm_Latn) pair `dev` set, https://github.com/facebookresearch/flores/tree/main/flores200
[5]:
Size (MB) BLEU SacreBLEU Verbose SacreBLEU-chrF++-FLORES200 Suggested length
mesolitica/finetune-translation-austronesian-t5-tiny-standard-bahasa-cased 139 30.277471 64.2/38.0/24.1/15.6 (BP = 0.978 ratio = 0.978 ... 57.38 256
mesolitica/finetune-translation-austronesian-t5-small-standard-bahasa-cased 242 30.24359 61.1/36.9/23.8/15.6 (BP = 1.000 ratio = 1.052 ... 58.43 512
mesolitica/finetune-translation-austronesian-t5-base-standard-bahasa-cased 892 31.494673 64.1/38.8/25.1/16.5 (BP = 0.989 ratio = 0.990 ... 58.1 512

Load Transformer models#

def huggingface(
    model: str = 'mesolitica/finetune-translation-austronesian-t5-small-standard-bahasa-cased',
    force_check: bool = True,
    **kwargs,
):
    """
    Load HuggingFace model to translate IND-to-MS.

    Parameters
    ----------
    model: str, optional (default='mesolitica/finetune-translation-t5-small-standard-bahasa-cased')
        Check available models at `malaya.translation.ind_ms.available_huggingface()`.

    Returns
    -------
    result: malaya.torch_model.huggingface.Generator
    """
[17]:
transformer_huggingface = malaya.translation.ind_ms.huggingface()

Translate#

def generate(self, strings: List[str], **kwargs):
    """
    Generate texts from the input.

    Parameters
    ----------
    strings : List[str]
    **kwargs: vector arguments pass to huggingface `generate` method.
        Read more at https://huggingface.co/docs/transformers/main_classes/text_generation

    Returns
    -------
    result: List[str]
    """

For better results, always split by end of sentences.

[7]:
from pprint import pprint
[20]:
news = 'Jakarta Pusat, Kominfo - Presiden Joko Widodo menerima surat kepercayaan dari sebelas duta besar luar biasa dan berkuasa penuh (LBBP) negara-negara sahabat. Penyerahan surat kepercayaan tersebut digelar di Ruang Kredensial, Istana Merdeka, Jakarta Pusat, Senin (20/02/2023). Prosesi acara penyerahan surat kepercayaan dimulai dengan diperdengarkannya lagu kebangsaan dari masing-masing negara sahabat setelah duta besar tiba di Istana Merdeka. Adapun kesebelas duta besar negara sahabat yang diterima oleh Presiden'
text = 'Saya tidak suka ikan keli dan ayam goreng'
[21]:
%%time

pprint(transformer_huggingface.generate([news, text],
                                       max_length = 1000))
['Jakarta Pusat, Kominfo - Presiden Joko Widodo menerima surat kepercayaan '
 'dari sebelas duta luar biasa dan penuh kuasa (LBBP) negara sahabat '
 'Penyerahan surat kepercayaan itu digelar di Ruang Kredensial, Istana '
 'Merdeka, Jakarta Pusat, Senin (20/02/2023) Prosesi penyerahan surat '
 'kepercayaan dimulai dengan diperdengarkannya lagu kebangsaan dari '
 'masing-masing negara sahabat setelah duta besar tiba di Istana Merdeka '
 'Adapun kesebelas duta negara sahabat yang diterima Presiden.',
 'Saya tidak suka lele dan ayam goreng']
CPU times: user 13.3 s, sys: 1.45 ms, total: 13.3 s
Wall time: 1.13 s

compare with Google translate using googletrans#

Install it by,

pip3 install googletrans==4.0.0rc1
[13]:
from googletrans import Translator

translator = Translator()
[22]:
strings = [news, text]
[23]:
for t in strings:
    r = translator.translate(t, src='id', dest = 'ms')
    print(r.text)
JAKARTA PUSAT, Kominfo - Presiden Joko Widodo menerima surat kepercayaan dari sebelas duta hebat dan kuasa penuh (LBBP) negara -negara yang mesra.Penyerahan surat amanah telah diadakan di Bilik Kredensial, Istana Merdeka, Jakarta Tengah, Isnin (02/20/2023).Perarakan penyerahan kepercayaan bermula dengan bermain lagu kebangsaan dari setiap negara kawan selepas duta besar tiba di Istana Merdeka.Bagi sebelas duta negara yang mesra yang diterima oleh presiden
Saya tidak suka ikan keli dan ayam goreng