Paraphrase#

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

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

This interface deprecated, use HuggingFace interface instead.

[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.11 s, sys: 3.43 s, total: 6.54 s
Wall time: 2.36 s
[4]:
import warnings
warnings.filterwarnings('default')

List available Transformer model#

[5]:
malaya.paraphrase.available_transformer()
/home/husein/dev/malaya/malaya/paraphrase.py:67: DeprecationWarning: `malaya.paraphrase.available_transformer` is deprecated, use `malaya.paraphrase.available_huggingface` instead
  warnings.warn(
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
[5]:
Size (MB) Quantized Size (MB) BLEU SacreBLEU Verbose Suggested length
t5 1250 481 35.862111 61.1/40.6/31.3/25.2 (BP = 0.959 ratio = 0.960 ... 256
small-t5 355.6 195 37.247311 61.6/41.7/32.5/26.3 (BP = 0.968 ratio = 0.968 ... 256
tiny-t5 208 103 13.253919 38.6/16.3/9.4/5.8 (BP = 0.973 ratio = 0.974 hy... 256

Load Transformer model#

def transformer(model: str = 'small-t5', quantized: bool = False, **kwargs):
    """
    Load Malaya transformer encoder-decoder model to generate a paraphrase given a string.

    Parameters
    ----------
    model : str, optional (default='small-t5')
        Model architecture supported. Allowed values:

        * ``'t5'`` - T5 BASE parameters.
        * ``'small-t5'`` - T5 SMALL parameters.
        * ``'tiny-t5'`` - T5 TINY parameters.

    quantized : bool, optional (default=False)
        if True, will load 8-bit quantized model.
        Quantized model not necessary faster, totally depends on the machine.

    Returns
    -------
    result: model
        List of model classes:

        * if `t5` in model, will return `malaya.model.t5.Paraphrase`.
    """
[6]:
t5 = malaya.paraphrase.transformer(model = 'small-t5')
/home/husein/dev/malaya/malaya/paraphrase.py:103: DeprecationWarning: `malaya.paraphrase.transformer` is deprecated, use `malaya.paraphrase.huggingface` instead
  warnings.warn(
2022-10-30 16:27:13.983308: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2022-10-30 16:27:13.987073: E tensorflow/stream_executor/cuda/cuda_driver.cc:271] failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected
2022-10-30 16:27:13.987092: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:169] retrieving CUDA diagnostic information for host: husein-MS-7D31
2022-10-30 16:27:13.987095: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:176] hostname: husein-MS-7D31
2022-10-30 16:27:13.987164: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:200] libcuda reported version is: Not found: was unable to find libcuda.so DSO loaded into this program
2022-10-30 16:27:13.987182: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:204] kernel reported version is: 470.141.3

Paraphrase simple string#

We only provide greedy_decoder method for T5 models,

def greedy_decoder(self, strings: List[str]):
    """
    paraphrase strings.

    Parameters
    ----------
    strings: List[str]

    Returns
    -------
    result: List[str]
    """
[7]:
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.')
[8]:
pprint(t5.greedy_decoder([string]))
['Beliau yang juga saksi pendakwaan kesembilan berkata, ia bagi mengelak wujud '
 'isu yang digunakan terhadap Najib.']
[11]:
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.
"""
[13]:
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
[13]:
['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.greedy_decoder(splitted)
[20]:
['PELETAKAN jawatan Tun Dr Mahathir Mohamad sebagai Pengerusi Parti Pribumi Bersatu Malaysia (Bersatu) ditolak pada 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 buat.',
 'Saya tidak faham bagaimana Jabatan Pendaftaran Pertubuhan Malaysia (JPPM) kata peletakan jawatan itu sah sedangkan kita sudah membuat keputusan di dalam mesyuarat, bukan seorang dua yang membuat keputusan.',
 '"Semua keputusan mesti dibuat melalui parti.',
 'Walau apa pun perbincangan dibuat di luar keputusan mesyuarat, ini bukan keputusan parti.',
 '"Apa locus standy yang ada pada Setiausaha Kerja untuk membawa perkara ini kepada JPPM.',
 'Ia sepatutnya 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 jika berhenti atau diberhentikan, tetapi ini mesyuarat sudah menolak," katanya.',
 'Marzuki juga mempersoalkan kenyataan media yang dibuat oleh 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 mengubah keputusan yang sudah dibuat di dalam mesyuarat.',
 'Kami mencatat dalam minit apa yang terjadi di dalam pertemuan," katanya.']