Paraphrase HuggingFace#

This tutorial is available as an IPython notebook at Malaya/example/paraphrase-huggingface.

This module only trained on standard language structure, so it is not save to use it for local language structure.

Results generated using stochastic methods.

[1]:
import os

os.environ['CUDA_VISIBLE_DEVICES'] = ''
[2]:
import logging

logging.basicConfig(level=logging.INFO)
[3]:
%%time

import malaya
from pprint import pprint
CPU times: user 3.17 s, sys: 3.43 s, total: 6.59 s
Wall time: 2.31 s

List available HuggingFace model#

[4]:
malaya.paraphrase.available_huggingface()
INFO:malaya.paraphrase:tested on MRPC validation set, https://huggingface.co/datasets/mesolitica/translated-MRPC
INFO:malaya.paraphrase:tested on ParaSCI ARXIV test set, https://huggingface.co/datasets/mesolitica/translated-paraSCI
[4]:
Size (MB) BLEU SacreBLEU Verbose Suggested length
mesolitica/finetune-paraphrase-t5-tiny-standard-bahasa-cased 139 36.926966 62.5/42.3/33.0/26.9 (BP = 0.943 ratio = 0.945 ... 256
mesolitica/finetune-paraphrase-t5-small-standard-bahasa-cased 242 37.598729 62.6/42.5/33.2/27.0 (BP = 0.957 ratio = 0.958 ... 256
mesolitica/finetune-paraphrase-t5-base-standard-bahasa-cased 892 35.959659 61.7/41.3/32.0/25.8 (BP = 0.944 ratio = 0.946 ... 256

Load HuggingFace model#

def huggingface(model='mesolitica/finetune-paraphrase-t5-small-standard-bahasa-cased', **kwargs):
    """
    Load HuggingFace model to paraphrase.

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

    Returns
    -------
    result: malaya.torch_model.huggingface.Paraphrase
    """
[5]:
t5 = malaya.paraphrase.huggingface()

Paraphrase#

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

    Parameters
    ----------
    strings : List[str]
    postprocess: bool, optional (default=False)
        If True, will removed biased generated `kata Encik`.
    **kwargs: vector arguments pass to huggingface `generate` method.
        Read more at https://huggingface.co/docs/transformers/main_classes/text_generation

    Returns
    -------
    result: List[str]
    """
[6]:
string = "Beliau yang juga saksi pendakwaan kesembilan berkata, ia bagi mengelak daripada wujud isu digunakan terhadap Najib."
pprint(string)
('Beliau yang juga saksi pendakwaan kesembilan berkata, ia bagi mengelak '
 'daripada wujud isu digunakan terhadap Najib.')
[17]:
pprint(t5.generate([string],
    max_length=256,
    temperature = 0.5))
['Beliau berkata ia bagi mengelakkan isu itu digunakan terhadap Najib.']
[6]:
string = """
PELETAKAN jawatan Tun Dr Mahathir Mohamad sebagai Pengerusi Parti Pribumi Bersatu Malaysia (Bersatu) ditolak di dalam mesyuarat khas Majlis Pimpinan Tertinggi (MPT) pada 24 Februari lalu.

Justeru, tidak timbul soal peletakan jawatan itu sah atau tidak kerana ia sudah pun diputuskan pada peringkat parti yang dipersetujui semua termasuk Presiden, Tan Sri Muhyiddin Yassin.

Bekas Setiausaha Agung Bersatu Datuk Marzuki Yahya berkata, pada mesyuarat itu MPT sebulat suara menolak peletakan jawatan Dr Mahathir.

"Jadi ini agak berlawanan dengan keputusan yang kita sudah buat. Saya tak faham bagaimana Jabatan Pendaftar Pertubuhan Malaysia (JPPM) kata peletakan jawatan itu sah sedangkan kita sudah buat keputusan di dalam mesyuarat, bukan seorang dua yang buat keputusan.

"Semua keputusan mesti dibuat melalui parti. Walau apa juga perbincangan dibuat di luar daripada keputusan mesyuarat, ini bukan keputusan parti.

"Apa locus standy yang ada pada Setiausaha Kerja untuk membawa perkara ini kepada JPPM. Seharusnya ia dibawa kepada Setiausaha Agung sebagai pentadbir kepada parti," katanya kepada Harian Metro.

Beliau mengulas laporan media tempatan hari ini mengenai pengesahan JPPM bahawa Dr Mahathir tidak lagi menjadi Pengerusi Bersatu berikutan peletakan jawatannya di tengah-tengah pergolakan politik pada akhir Februari adalah sah.

Laporan itu juga menyatakan, kedudukan Muhyiddin Yassin memangku jawatan itu juga sah.

Menurutnya, memang betul Dr Mahathir menghantar surat peletakan jawatan, tetapi ditolak oleh MPT.

"Fasal yang disebut itu terpakai sekiranya berhenti atau diberhentikan, tetapi ini mesyuarat sudah menolak," katanya.

Marzuki turut mempersoal kenyataan media yang dibuat beberapa pimpinan parti itu hari ini yang menyatakan sokongan kepada Perikatan Nasional.

"Kenyataan media bukanlah keputusan rasmi. Walaupun kita buat 1,000 kenyataan sekali pun ia tetap tidak merubah keputusan yang sudah dibuat di dalam mesyuarat. Kita catat di dalam minit apa yang berlaku di dalam mesyuarat," katanya.
"""
[7]:
import re

# minimum cleaning, just simply to remove newlines.
def cleaning(string):
    string = string.replace('\n', ' ')
    string = re.sub(r'[ ]+', ' ', string).strip()
    return string

string = cleaning(string)
splitted = malaya.text.function.split_into_sentences(string)
splitted
[7]:
['PELETAKAN jawatan Tun Dr Mahathir Mohamad sebagai Pengerusi Parti Pribumi Bersatu Malaysia (Bersatu) ditolak di dalam mesyuarat khas Majlis Pimpinan Tertinggi (MPT) pada 24 Februari lalu.',
 'Justeru, tidak timbul soal peletakan jawatan itu sah atau tidak kerana ia sudah pun diputuskan pada peringkat parti yang dipersetujui semua termasuk Presiden, Tan Sri Muhyiddin Yassin.',
 'Bekas Setiausaha Agung Bersatu Datuk Marzuki Yahya berkata, pada mesyuarat itu MPT sebulat suara menolak peletakan jawatan Dr Mahathir.',
 '"Jadi ini agak berlawanan dengan keputusan yang kita sudah buat.',
 'Saya tak faham bagaimana Jabatan Pendaftar Pertubuhan Malaysia (JPPM) kata peletakan jawatan itu sah sedangkan kita sudah buat keputusan di dalam mesyuarat, bukan seorang dua yang buat keputusan.',
 '"Semua keputusan mesti dibuat melalui parti.',
 'Walau apa juga perbincangan dibuat di luar daripada keputusan mesyuarat, ini bukan keputusan parti.',
 '"Apa locus standy yang ada pada Setiausaha Kerja untuk membawa perkara ini kepada JPPM.',
 'Seharusnya ia dibawa kepada Setiausaha Agung sebagai pentadbir kepada parti," katanya kepada Harian Metro.',
 'Beliau mengulas laporan media tempatan hari ini mengenai pengesahan JPPM bahawa Dr Mahathir tidak lagi menjadi Pengerusi Bersatu berikutan peletakan jawatannya di tengah-tengah pergolakan politik pada akhir Februari adalah sah.',
 'Laporan itu juga menyatakan, kedudukan Muhyiddin Yassin memangku jawatan itu juga sah.',
 'Menurutnya, memang betul Dr Mahathir menghantar surat peletakan jawatan, tetapi ditolak oleh MPT.',
 '"Fasal yang disebut itu terpakai sekiranya berhenti atau diberhentikan, tetapi ini mesyuarat sudah menolak," katanya.',
 'Marzuki turut mempersoal kenyataan media yang dibuat beberapa pimpinan parti itu hari ini yang menyatakan sokongan kepada Perikatan Nasional.',
 '"Kenyataan media bukanlah keputusan rasmi.',
 'Walaupun kita buat 1,000 kenyataan sekali pun ia tetap tidak merubah keputusan yang sudah dibuat di dalam mesyuarat.',
 'Kita catat di dalam minit apa yang berlaku di dalam mesyuarat," katanya.']
[20]:
t5.generate(splitted, max_length = 256, temperature = 0.5)
[20]:
['PELETAKAN jawatan Tun Dr Mahathir Mohamad sebagai Pengerusi Parti Pribumi Bersatu Malaysia (Bersatu) ditolak pada 24 Februari dalam mesyuarat khas Majlis Pimpinan Tertinggi (MPT).',
 'Oleh itu, tidak timbul soal peletakan jawatan itu sah atau tidak kerana ia sudah diputuskan pada peringkat parti yang dipersetujui semua termasuk Presiden, Tan Sri Muhyiddin Yassin.',
 'Bekas Setiausaha Agung Bersatu Datuk Marzuki Yahya berkata pada mesyuarat itu MPT sebulat suara menolak peletakan jawatan Dr Mahathir.',
 '"Ini bertentangan dengan keputusan yang kita buat.',
 'Saya tidak faham bagaimana Jabatan Pendaftar Pertubuhan Malaysia (JPPM) kata peletakan jawatan itu sah manakala kita sudah membuat keputusan dalam mesyuarat, bukan satu dua yang membuat keputusan.',
 '"Semua keputusan mesti dibuat melalui parti," kata Encik S.',
 'Walau bagaimanapun, perbincangan dibuat di luar daripada keputusan mesyuarat, ini bukan keputusan parti.',
 '"Apa locus standy yang ada pada Setiausaha Kerja untuk membawa perkara ini kepada JPPM," kata Encik S.',
 '"Seharus ia dibawa kepada Setiausaha Agung sebagai pentadbir kepada parti," kata jurucakap akhbar itu.',
 'Beliau mengulas laporan media tempatan mengenai pengesahan JPPM bahawa Dr Mahathir tidak lagi menjadi Pengerusi Bersatu selepas peletakan jawatannya di tengah-tengah pergolakan politik pada akhir Februari adalah sah.',
 'Laporan itu juga menyatakan bahawa kedudukan Muhyiddin Yassin memangku jawatan itu juga sah.',
 'Beliau berkata, memang betul Dr Mahathir menghantar surat peletakan jawatan, tetapi ditolak oleh MPT.',
 '"Fasal yang disebut itu terpakai sekiranya berhenti atau diberhentikan, tetapi ini mesyuarat sudah menolak," katanya.',
 'Marzuki juga mempersoal kenyataan media yang dibuat beberapa pemimpin parti itu hari ini yang menyatakan sokongan kepada Perikatan Nasional.',
 'Kenyataan media bukanlah keputusan rasmi.',
 'Walaupun kita buat 1,000 kenyataan sekali pun ia tetap tidak berubah keputusan yang dibuat dalam mesyuarat.',
 '"Kami catat di dalam minit apa yang berlaku di dalam mesyuarat," kata Encik Sutter.']

Good thing about HuggingFace#

In generate method, you can do greedy, beam, sampling, nucleus decoder and so much more, read it at https://huggingface.co/blog/how-to-generate

[8]:
%%time

t5.generate(splitted,
    do_sample=True,
    max_length=256,
    top_k=50,
    top_p=0.95,
    num_return_sequences=1)
You're using a T5TokenizerFast tokenizer. Please note that with a fast tokenizer, using the `__call__` method is faster than using a method to encode the text followed by a call to the `pad` method to get a padded encoding.
CPU times: user 15.1 s, sys: 0 ns, total: 15.1 s
Wall time: 1.3 s
[8]:
['PELETAKAN jawatan Tun Dr Mahathir Mohamad sebagai Pengerusi Parti Pribumi Bersatu Malaysia (Bersatu) ditolak di dalam mesyuarat khas Majlis Pimpinan Tertinggi (MPT) pada 24 Februari lalu.',
 'Justeru, tidak timbul soal peletakan jawatan itu sah atau tidak kerana ia sudah pun diputuskan pada peringkat parti yang dipersetujui semua termasuk Presiden, Tan Sri Muhyiddin Yassin.',
 'Bekas Setiausaha Agung Bersatu Datuk Marzuki Yahya berkata, pada mesyuarat itu MPT sebulat suara menolak peletakan jawatan Dr Mahathir.',
 '"Jadi ini agak berlawanan dengan keputusan yang kita sudah buat.',
 'Saya tak faham bagaimana Jabatan Pendaftar Pertubuhan Malaysia (JPPM) kata peletakan jawatan itu sah sedangkan kita sudah buat keputusan di dalam mesyuarat, bukan seorang dua yang buat keputusan.',
 '"Semua keputusan mesti dibuat melalui parti.',
 'Walau apa juga perbincangan dibuat di luar daripada keputusan mesyuarat, ini bukan keputusan parti.',
 '"Apa locus standy yang ada pada Setiausaha Kerja untuk membawa perkara ini kepada JPPM.',
 'Seharusnya ia dibawa kepada Setiausaha Agung sebagai pentadbir kepada parti," katanya kepada Harian Metro.',
 'Beliau mengulas laporan media tempatan hari ini mengenai pengesahan JPPM bahawa Dr Mahathir tidak lagi menjadi Pengerusi Bersatu berikutan peletakan jawatannya di tengah-tengah pergolakan politik pada akhir Februari adalah sah.',
 'Laporan itu juga menyatakan, kedudukan Muhyiddin Yassin memangku jawatan itu juga sah.',
 'Menurutnya, memang betul Dr Mahathir menghantar surat peletakan jawatan, tetapi ditolak oleh MPT.',
 '"Fasal yang disebut itu terpakai sekiranya berhenti atau diberhentikan, tetapi ini mesyuarat sudah menolak," katanya.',
 'Marzuki turut mempersoal kenyataan media yang dibuat beberapa pimpinan parti itu hari ini yang menyatakan sokongan kepada Perikatan Nasional.',
 '"Kenyataan media bukanlah keputusan rasmi.',
 'Walaupun kita buat 1,000 kenyataan sekali pun ia tetap tidak merubah keputusan yang sudah dibuat di dalam mesyuarat.',
 'Kita catat di dalam minit apa yang berlaku di dalam mesyuarat," katanya.']