Isi Penting Generator HuggingFace headline news style#

Generate a long text with headline news style given isi penting (important facts).

This tutorial is available as an IPython notebook at Malaya/example/isi-penting-generator-huggingface-headline-news-style.

Results generated using stochastic methods.

[1]:
%%time
import malaya
from pprint import pprint
/home/husein/dev/malaya/malaya/tokenizer.py:208: FutureWarning: Possible nested set at position 3386
  self.tok = re.compile(r'({})'.format('|'.join(pipeline)))
/home/husein/dev/malaya/malaya/tokenizer.py:208: FutureWarning: Possible nested set at position 3904
  self.tok = re.compile(r'({})'.format('|'.join(pipeline)))
CPU times: user 3.11 s, sys: 3.5 s, total: 6.61 s
Wall time: 2.3 s

List available HuggingFace#

[2]:
malaya.generator.isi_penting.available_huggingface()
[2]:
Size (MB) ROUGE-1 ROUGE-2 ROUGE-L Suggested length
mesolitica/finetune-isi-penting-generator-t5-small-standard-bahasa-cased 242.0 0.246203 0.058961 0.15159 1024.0
mesolitica/finetune-isi-penting-generator-t5-base-standard-bahasa-cased 892.0 0.246203 0.058961 0.15159 1024.0

Load HuggingFace#

Transformer Generator in Malaya is quite unique, most of the text generative model we found on the internet like GPT2 or Markov, simply just continue prefix input from user, but not for Transformer Generator. We want to generate an article or karangan like high school when the users give ‘isi penting’.

def huggingface(model: str = 'mesolitica/finetune-isi-penting-generator-t5-base-standard-bahasa-cased', **kwargs):
    """
    Load HuggingFace model to generate text based on isi penting.

    Parameters
    ----------
    model: str, optional (default='mesolitica/finetune-isi-penting-generator-t5-base-standard-bahasa-cased')
        Check available models at `malaya.generator.isi_penting.available_huggingface()`.

    Returns
    -------
    result: malaya.torch_model.huggingface.IsiPentingGenerator
    """
[3]:
model = malaya.generator.isi_penting.huggingface()

generate#

def generate(
    self,
    strings: List[str],
    mode: str = 'surat-khabar',
    **kwargs,
):
    """
    generate a long text given a isi penting.

    Parameters
    ----------
    strings : List[str]
    mode: str, optional (default='surat-khabar')
        Mode supported. Allowed values:

        * ``'surat-khabar'`` - news style writing.
        * ``'tajuk-surat-khabar'`` - headline news style writing.
        * ``'artikel'`` - article style writing.
        * ``'penerangan-produk'`` - product description style writing.
        * ``'karangan'`` - karangan sekolah style writing.

    **kwargs: vector arguments pass to huggingface `generate` method.
        Read more at https://huggingface.co/docs/transformers/main_classes/text_generation

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

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

And recently, huggingface released https://huggingface.co/blog/introducing-csearch

[4]:
isi_penting = ['Dr M perlu dikekalkan sebagai perdana menteri',
              'Muhyiddin perlulah menolong Dr M',
              'rakyat perlu menolong Muhyiddin']
[5]:
pprint(model.generate(isi_penting, mode = 'tajuk-surat-khabar',
    do_sample=True,
    max_length=256,
    top_k=50,
    top_p=0.95,))
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.
['Menurut Perdana Menteri Muhyiddin Yassin Yassin, perkara itu perlu dilakukan '
 'kerana ia memberi manfaat kepada rakyat. "Ini bukan isu siapa menang kerana '
 'rakyat nak tahu siapa yang menang. Muhyiddin perlulah menolong Dr M. "Rakyat '
 'tidak perlu memberi undi kepada Muhyiddin kerana kerajaan sekarang bukan '
 'parti Bersatu. Muhyiddin juga akui Dr M tidak akan diberi mandat oleh rakyat '
 'pada PRU ke-15 nanti. Namun, Dr M harus dipertahankan sebagai perdana '
 'menteri kerana beliau sedar kepentingan rakyat untuk semua dan bukan atas '
 'nama orang lain.']
[7]:
pprint(model.generate(isi_penting, mode = 'tajuk-surat-khabar',
    do_sample=True,
    max_length=256,
    penalty_alpha=0.8, top_k=4,))
['KUALA LUMPUR:Perdana Menteri, Tan Sri Muhyiddin Yassin perlu terus kekal '
 'menjadi perdana menteri sehingga habis penggal, kata Ahli Parlimen Rembau, '
 'Khairy Jamaluddin. Jelasnya, rakyat perlu menolong Muhyiddin untuk '
 'meneruskan kehidupan seperti biasa dan tidak terbeban dengan masalah ekonomi '
 'yang dihadapi negara ketika ini. "Tan Sri Muhyiddin mesti kekal sebagai '
 'perdana menteri sehingga habis penggal. "Rakyat perlu menolong beliau untuk '
 'meneruskan hidup seperti biasa. "Beliau perlulah menolong Dr Mahathir," '
 'katanya dalam satu kenyataan pada Isnin. Dalam masa sama, Khairy menegaskan, '
 'rakyat perlu membantu Muhyiddin untuk meneruskan kehidupan seperti biasa. '
 '"Rakyat perlu menolong Dr M untuk meneruskan hidup seperti biasa.']
[8]:
isi_penting = ['Neelofa tetap dengan keputusan untuk berkahwin akhir tahun ini',
              'Long Tiger sanggup membantu Neelofa',
              'Tiba-tiba Long Tiger bergaduh dengan Husein Zolkepli']

We also can give any isi penting even does not make any sense.

[9]:
pprint(model.generate(isi_penting, do_sample=True, mode = 'tajuk-surat-khabar',
    max_length=256,
    top_k=50,
    top_p=0.95, ))
['PENYANYI dan pelakon Neelofa tetap dengan keputusan untuk berkahwin akhir '
 'tahun ini. Namun jelasnya, dia tidak boleh lari daripada membuat andaian '
 'yang tidak benar berkenaan hal itu kerana ia keputusan yang perlu mengambil '
 'kira semua aspek. Neelofa pada awalnya enggan mengambil sikap sedemikian dan '
 'dia tetap dengan keputusan itu dan menganggap ia sebagai tidak benar sama '
 'sekali. Tiba-tiba Long Tiger bergaduh dengan Husein Zolkepli ketika baru '
 'selesai program realiti Big Stage. Bagaimanapun, pasangan ini berjaya '
 'menewaskan pasangan yang juga juara Akademi Fantasia musim kelima (AF5) itu '
 'sehingga bergelar suami isteri. "Lagi pun, tak ada sebab yang betul untuk '
 'ambil keputusan berkahwin. Jika ada pun, mungkin dengan cara sebegini," '
 'katanya. Neelofa dan Husein mengikat tali pertunangan pada Mei tahun lalu.']
[10]:
pprint(model.generate(isi_penting, mode = 'tajuk-surat-khabar',
    do_sample=True,
    max_length=256,
    penalty_alpha=0.8, top_k=4,))
['PELAKON dan pengacara, Neelofa tetap dengan keputusan untuk berkahwin akhir '
 'tahun ini. Menerusi perkongsian di Instagram (IG), Neelofa berkongsi berita '
 'tersebut dengan pengikutnya. "Alhamdulillah. Terima kasih kepada semua, '
 'sahabat-sahabat yang telah memberikan kata semangat dan kata-kata semangat '
 'untuk Neelofa dan suami tercinta (Hussein Zolkepli). "Semoga #Neelofa '
 'sentiasa bersama-sama dan #BetterSyukur," tulisnya. Menerusi perkongsian '
 'sama, Neelofa juga sanggup membantu Long Tiger yang merupakan seorang '
 'pelakon. "Syukur Alhamdulillah... Terima kasih kepada semua sahabat-sahabat '
 'yang telah memberikan kata semangat dan kata-kata semangat untuk Neelofa & '
 'Husein Zolkepli. "Semoga #BetterSyukur," tulisnya. Tiba-tiba Long Tiger '
 'bergaduh dengan Husein. "Syukur," tulisnya. View this post on Instagram.']
[14]:
isi_penting = ['Anwar Ibrahim jadi perdana menteri', 'Muhyiddin cemburu jadi PM tepi',
              'PAS menggunakan isu sentimen kaum dan agama']
[11]:
pprint(model.generate(isi_penting, do_sample=True, mode = 'tajuk-surat-khabar',
    max_length=256))
['Parti Pribumi Bersatu Malaysia (Bersatu) percaya tiada perbincangan '
 'sedemikian dilakukan ketika pertemuan antara Presiden PKR, Datuk Seri Anwar '
 'Ibrahim dan Timbalan Presiden Amanah, Mohamad Sabu di Kuala Lumpur pada '
 'Selasa. "Dasar apa yang boleh dibuat ialah PAS menggunakan isu sentimen kaum '
 'dan agama yang tidak dapat dielakkan," katanya selepas mempengerusikan '
 'Mesyuarat Majlis Pimpinan Tertinggi (MPT) Bersatu di ibu pejabat Umno di '
 'Kuala Lumpur, malam tadi. Dalam perkembangan lain, Takiyuddin yang juga '
 'anggota parlimen Kota Bharu mengingatkan PH sendiri bahawa tiada sebarang '
 'rundingan membabitkan Datuk Seri Dr Wan Azizah Wan Ismail dan Datuk Seri '
 'Anwar Ibrahim. Muhyiddin cemburu jadi PM tepi "Ini kerana, walhal ada '
 'perjanjian persefahaman (MoU) antara PH dan Anwar ini bermakna PH bergaduh '
 'sesama sendiri.']
[15]:
pprint(model.generate(isi_penting, mode = 'tajuk-surat-khabar',
    do_sample=True,
    max_length=256,
    penalty_alpha=0.8, top_k=4,))
['Presiden PKR, Anwar Ibrahim menjadi Perdana Menteri selepas Pakatan Harapan '
 '(PH) mengambil alih kerajaan selepas pilihan raya umum ke-14 (PRU14) lalu. '
 '"Kalau nak jadi Perdana Menteri (perdana menteri), (perdana menteri) '
 'Muhyiddin (Yassin), jadi Muhyiddin cemburu jadi PM tepi," katanya kepada '
 'media selepas menghadiri program "Sembang Santai bersama rakyat di Kampung '
 'Kubang Rotan, di sini, hari ini. Beliau mengulas kenyataan Presiden PAS, '
 'Abdul Hadi Awang yang menyifatkan PAS menggunakan isu sentimen kaum dan '
 'agama sebagai alasan untuk menyokong gabungan parti itu.']
[ ]: