Text Summarization dengan Python

Text Summarization dengan Python

Text Summarization merupakan proses untuk mereduksi dokumen untuk menghasilkan sebuah ringkasan. Apalagi banyak informasi yang bertebaran di internet, peringkasan otomatis/automatic summarization adalah cara mudah untuk mendapatkan informasi penting dari suatu sumber ke dalam bentuk yang sederhana.

Dengan adanya text summarization, kita dapat menghemat lebih banyak waktu untuk mendapatkan point penting dokumen yang kita baca. Dibandingkan kita harus membaca keseluruhan dokumen.

Text summarization diklasifikasikan menjadi 2 kategori yaitu ekstraksi dan abstraksi. Ringkasan ekstrasi adalah memilih kalimat atau frasa dari teks asli dengan skor tertinggi dan menggabungkannya menjadi teks baru yang lebih pendek. Sedangkan, ringkasan abstraksi menggunakan metode linguistik untuk menelaah dan menafsirkan teks.

Pada tutorial kali ini kita akan membuat Text Summarization Ekstrasi dengan menggunakan Python. Kita akan mengambil contoh dokumen dengan bahasa inggris dan bahasa indonesia.

Pertama, kita buat file notebook baru di google colab. Bisa melalui link berikut https://colab.research.google.com/#create=true

Text Summarization dengan Bahasa Inggris

Untuk melakukan peringkasan teks pada bahasa inggris kita bisa menggunakan bantuan sumy. Tetapi, google colab tidak memiliki library sumy. Oleh karena itu, kita perlu install terlebih dahulu library sumy seperti berikut.

!pip install sumy

Note

Sumy hanya bisa digunakan untuk meringkas teks dalam bahasa ingrris saja

Kemudian, kita import library yang akan digunakan dalam proses peringkasan teks.

from sumy.parsers.plaintext import PlaintextParser
from sumy.nlp.tokenizers import Tokenizer
from sumy.summarizers.text_rank import TextRankSummarizer

import nltk
nltk.download('punkt')

Berikut adalah contoh dokumen yang akan kita gunakan dalam proses text summarization menggunakan python.

text="""A vaccine for the coronavirus will likely be ready by early 2021 but rolling it out safely across India’s 1.3 billion people will be the country’s biggest challenge in fighting its surging epidemic, a leading vaccine scientist told Bloomberg.
India, which is host to some of the front-runner vaccine clinical trials, currently has no local infrastructure in place to go beyond immunizing babies and pregnant women, said Gagandeep Kang, professor of microbiology at the Vellore-based Christian Medical College and a member of the WHO’s Global Advisory Committee on Vaccine Safety.
The timing of the vaccine is a contentious subject around the world. In the U.S., President Donald Trump has contradicted a top administration health expert by saying a vaccine would be available by October. In India, Prime Minister Narendra Modi’s government had promised an indigenous vaccine as early as mid-August, a claim the government and its apex medical research body has since walked back.
"""

Setelah itu, kita lihat berapa panjang dokumen tersebut.

len(text)

Selanjutnya, kita pisah setiap kata ke dalam token.

# For Strings
parser = PlaintextParser.from_string(text,Tokenizer("english"))

Setiap kata tersebut akan dihitung skornya, lalu digabungkan kembali menjadi kalimat awal dan dijumlahkan skornya. Kalimat dengan skor paling tinggi akan masuk ke dalam hasil ringkasan.

# Summarize using sumy TextRank
summarizer = TextRankSummarizer()
summary =summarizer(parser.document,2)
text_summary=""
for sentence in summary:
    text_summary+=str(sentence)
    
print(text_summary)

Berikut hasil ringkasan dengan menggunakan library sumy.

A vaccine for the coronavirus will likely be ready by early 2021 but rolling it out safely across India’s 1.3 billion people will be the country’s biggest challenge in fighting its surging epidemic, a leading vaccine scientist told Bloomberg.India, which is host to some of the front-runner vaccine clinical trials, currently has no local infrastructure in place to go beyond immunizing babies and pregnant women, said Gagandeep Kang, professor of microbiology at the Vellore-based Christian Medical College and a member of the WHO’s Global Advisory Committee on Vaccine Safety.

Text Summarization dengan Bahasa Indonesia

Untuk melakukan text summarization dengan bahasa indonesia, kita perlu membuat summarizer sendiri karena saat ini python belum menyediakan text sumarization untuk bahasa indonesia.

Pertama kita perlu import library NLTK yang bertujuan untuk membangun text summarization dengan hasil yang baik dan efisien.

nltk.download('stopwords')

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize, sent_tokenize

Berikut contoh dokumen bahasa indonesia yang akan kita gunakan dalam proses text summarization.

teks="""
Komisi Pemberantasan Korupsi (KPK) memastikan akan melantik 1.271 pegawai KPK menjadi aparatur sipil negara (ASN). “Pelantikan akan diikuti oleh 1.271 pegawai secara daring dan luring di Aula Gedung Juang KPK,” kata Pelaksana Tugas Juru Bicara KPK Ali Fikri, Senin (31/5/2021) malam. Ali menyebutkan, pelantikan dilaksanakan pada pukul 13.00 WIB. Namun, untuk memastikan penerapan protokol kesehatan, yang hadir secara langsung hanya 53 perwakilan pegawai dan pejabat struktural. “Selebihnya pegawai mengikuti pelantikan melalui aplikasi daring dan wajib melakukan absensi serta menunjukkan bukti kehadiran,” ucap Ali. Adapun rangkaian pelantikan terdiri dari Pelantikan dan Pengambilan Sumpah/Janji PNS dan Sumpah/Janji Jabatan Pimpinan Tinggi Madya; Jabatan Pimpinan Tinggi Pratama dan Administrator. Terima kasih telah membaca Kompas.com. Dapatkan informasi, inspirasi dan insight di email kamu. “KPK akan menyiarkan seluruh rangkaian kegiatan ini secara langsung melalui kanal YouTube KPK,” ucap dia. Sebelumnya, Kepala Badan Kepegawaian Negara (BKN) Bima Haria Wibisana juga telah menerima undangan pelantikan pegawai KPK menjadi ASN besok. “Saya dapat undangan pelantikan besok jam 14.00,” kata Bima kepada Kompas.com, Senin (31/5/2021). Sebelumnya, Wakil Ketua KPK Nurul Ghufron menyatakan bahwa pimpinan KPK akan mengadakan rapat perihal adanya surat mengenai usulan permintaan penundaan pelantikan pegawai KPK pada hari ini. Adapun surat itu dikirim oleh pegawai KPK yang lolos tes wawasan kebangsaan dan menilai hasil TWK masih bermasalah. "Rencananya akan kami bahas Senin, hasilnya kami kabarkan selanjutnya," ucap Ghufron dalam keterangan tertulis, Minggu (30/5/2021). Ghufron menilai, pimpinan KPK menghargai sikap para pegawai yang bersolidaritas dengan 75 pegawai lain yang tak lolos TWK. Menurut dia, solidaritas pegawai KPK yang meminta penundaan tersebut merupakan pengamalan dari sila Pancasila tentang Persatuan Indonesia. 
"Solidaritas dari segenap pegawai KPK yang meminta agar pelantikan ditunda sangat kami hargai," kata Ghufron. Ia pun mengungkapkan alasan menjadikan tanggal 1 Juni 2021 sebagai hari pelantikan pegawai KPK menjadi ASN. Ghufron menyebut, pimpinan KPK memilih pelantikan yang bertepatan pada hari lahir Pancasila itu sebagai simbol bahwa pegawai KPK adalah seorang Pancasilais. "Untuk memperingati dan menghormati Hari Lahir Pancasila, sehingga secara simbolik untuk menyatakan bahwa pegawai KPK Pancasilais," kata dia. Hampir 700 pegawai Komisi Pemberantasan Korupsi (KPK) yang berasal dari berbagai direktorat mengirimkan surat terbuka kepada pimpinan KPK. Mereka meminta agar pelantikan sebagai ASN ditunda, di tengah polemik 75 pegawai yang tidak lolos TWK. Ada dugaan bahwa 75 pegawai itu tak lolos TWK sebagai upaya penyingkiran dan pelemahan terhadap KPK. Dari 75 pegawai yang dinyatakan tidak lolos TWK tersebut, 51 di antaranya diberhentikan dan 24 pegawai akan dibina kembali. Tidak hanya itu, materi TWK juga dianggap bermasalah, dinilai melecehkan perempuan hingga bertentangan dengan hak asasi manusia.
"""

Kita akan lihat terlebih dahulu panjang dari dokumen yang kita gunakan.

len(teks)

Selanjutnya, kita akan menghapus kata yang tidak penting/ tidak memiliki makna. Misalnya adalah, dan, yang, dll. Kita bisa menggunakan bantuan stopwords dengan set bahasa ke dalam indonesian.

Kemudian, hasil kata dari stopwords dipisah menjadi sebuah token dengan menggunakan fungsi word_tokenize().

stopwords = set (stopwords.words("indonesian"))
words = word_tokenize(teks)

Setelah itu, kita hitung jumlah frekuensi kemunculan setiap kata dalam dokumen.

freqTable = dict()
for word in words:
    word = word.lower()
    if word in stopwords:
        continue
    if word in freqTable:
        freqTable[word] += 1
    else:
        freqTable[word] = 1

Kita akan membuat dictionary untuk tetap menjaga skore setiap kalimat

sentences = sent_tokenize(teks)
sentenceValue = dict()

Selanjutnya, kita akan menjumlahkan skor setiap kata dalam kalimat.

for sentence in sentences:
    for word, freq in freqTable.items():
        if word in sentence.lower():
            if sentence in sentenceValue:
                sentenceValue[sentence] += freq
            else:
                sentenceValue[sentence] = freq

Kemudian, kita hitung jumlah keseluruhan skor pada semua kalimat di dalam dokumen.

sumValues = 0
for sentence in sentenceValue:
    sumValues += sentenceValue[sentence]

Lalu, kita hitung rata-rata skor dengan cara jumlah keseluruhan skor pada semua kalimat / jumlah kalimat yang ada di dokumen.

average = int(sumValues / len(sentenceValue))
print(average)

Terakhir, kita akan menggabungkan kalimat dengan skor diatas rata-rata sebagai hasil ringkasan.

summary = ''
for sentence in sentences:
    if (sentence in sentenceValue) and (sentenceValue[sentence] > (average)):
        summary += " " + sentence
        
print(summary)

Berikut hasil dari ringkasan pada dokumen bahasa indonesia

Komisi Pemberantasan Korupsi (KPK) memastikan akan melantik 1.271 pegawai KPK menjadi aparatur sipil negara (ASN). “Pelantikan akan diikuti oleh 1.271 pegawai secara daring dan luring di Aula Gedung Juang KPK,” kata Pelaksana Tugas Juru Bicara KPK Ali Fikri, Senin (31/5/2021) malam. “Selebihnya pegawai mengikuti pelantikan melalui aplikasi daring dan wajib melakukan absensi serta menunjukkan bukti kehadiran,” ucap Ali. Sebelumnya, Kepala Badan Kepegawaian Negara (BKN) Bima Haria Wibisana juga telah menerima undangan pelantikan pegawai KPK menjadi ASN besok. “Saya dapat undangan pelantikan besok jam 14.00,” kata Bima kepada Kompas.com, Senin (31/5/2021). Sebelumnya, Wakil Ketua KPK Nurul Ghufron menyatakan bahwa pimpinan KPK akan mengadakan rapat perihal adanya surat mengenai usulan permintaan penundaan pelantikan pegawai KPK pada hari ini. Ghufron menilai, pimpinan KPK menghargai sikap para pegawai yang bersolidaritas dengan 75 pegawai lain yang tak lolos TWK. Menurut dia, solidaritas pegawai KPK yang meminta penundaan tersebut merupakan pengamalan dari sila Pancasila tentang Persatuan Indonesia. "Solidaritas dari segenap pegawai KPK yang meminta agar pelantikan ditunda sangat kami hargai," kata Ghufron. Ghufron menyebut, pimpinan KPK memilih pelantikan yang bertepatan pada hari lahir Pancasila itu sebagai simbol bahwa pegawai KPK adalah seorang Pancasilais. "Untuk memperingati dan menghormati Hari Lahir Pancasila, sehingga secara simbolik untuk menyatakan bahwa pegawai KPK Pancasilais," kata dia. Hampir 700 pegawai Komisi Pemberantasan Korupsi (KPK) yang berasal dari berbagai direktorat mengirimkan surat terbuka kepada pimpinan KPK. Mereka meminta agar pelantikan sebagai ASN ditunda, di tengah polemik 75 pegawai yang tidak lolos TWK.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top