Algoritma Sederhana untuk meringkas isi Artikel

By | April 13, 2023
672 Views

Algoritma Sederhana untuk meringkas isi Artikel – Artikel yang bertebaran dalam website saat ini sangat banyak, malahan dengan teknik spinning text isinya itu-itu saja. Spinning text hanya mengubah kata/sinomim dengan bentuk lain tanpa mengubah maksud dari tujuan isi artikel tersebut.

Meringkas isi artikel sebenarnya sangat mudah, algoritma sederhana untuk meringkas isi artikel yaitu hanya mengandalkan teknik statistik berupa frekuensi. Untuk lebih jelasnya kalian sudah tahu dasar-dasar natural languange processing. Pytorch Studi Kasus Penerapan NLP pada Judul Berita Pytorch Belajar Natural Languange Processing NLP

Secara umum ada beberapa cara untuk meringkas isi artikel diantaranya:

  1. Metode Frequency-Based Summarization:

Metode ini menggunakan frekuensi kata-kata yang muncul dalam artikel untuk menentukan kepentingannya. Kata-kata yang paling sering muncul dianggap penting dan kemudian digunakan untuk membuat ringkasan. Metode ini sederhana dan cepat, namun dapat menghasilkan hasil yang kurang akurat dan tidak akurat.

  1. Metode Extraction-Based Summarization:

Metode ini mengidentifikasi kalimat-kalimat penting dalam artikel dan menggabungkannya untuk membuat ringkasan. Kalimat-kalimat ini dipilih berdasarkan kriteria seperti relevansi, kesederhanaan, dan kejelasan. Metode ini lebih akurat daripada metode frequency-based summarization, namun mungkin menghasilkan ringkasan yang kurang lengkap.

  1. Metode Abstraction-Based Summarization:

Metode ini menciptakan ringkasan baru yang tidak hanya menggabungkan kalimat-kalimat dari artikel asli, tetapi juga memperkenalkan kata-kata dan frase baru. Algoritma yang lebih kompleks digunakan untuk mengidentifikasi ide utama dari artikel dan kemudian membuat ringkasan yang menggambarkannya. Metode ini dapat menghasilkan ringkasan yang sangat akurat, tetapi juga lebih sulit dan lebih mahal untuk dilakukan.

  1. Metode Hybrid Summarization:

Metode ini menggabungkan teknik-teknik dari metode lainnya untuk menghasilkan ringkasan yang lebih baik. Misalnya, algoritma dapat menggunakan metode extraction-based summarization untuk mengidentifikasi kalimat-kalimat penting dan kemudian menggunakan metode abstraction-based summarization untuk memperkenalkan kata-kata dan frase baru yang memperjelas ide-ide yang disampaikan.

Namun kita akan pilih algoritma no 1 karena yang paling mudah.Tujuan dari meringkas artikel yaitu untuk mendapatkan isi kandungan tanpa harus membaca isi artikel utuh, nanti kita akan belajar untuk meringkas artikel dari kompas.com dengan sedikit teknik scraping.  Sekarang kita akan belajar dengan kasus sederhana saja dulu. Agar lebih mudah, kita akan menggunakan library NLTK saja, perhatikan 3 kalimat berikut yang ingin diringkas

import nltk
teks = ("Ini adalah teks yang ingin diringkas. "+
        "Teks ini berisi beberapa kalimat yang panjang dan kompleks. "+
        "Tujuan dari ringkasan ini adalah untuk menyajikan informasi utama dari teks dengan cara yang singkat dan jelas.")

tahap pertama kita akan memisahkan teks menjadi beberapa kalimat

kalimat = nltk.sent_tokenize(teks)

langkah kedua yaitu membuat token / kata sekaligus mencari nilai frekuensinya

frekuensi = {}
for kata in nltk.word_tokenize(teks):
    if kata in frekuensi:
        frekuensi[kata] += 1
    else:
        frekuensi[kata] = 1

langkah ketiga yaitu menghitung bobot untuk kalimat, misalkan kalimat[0] akan mempunyai bobot 13

bobot = 0
for token in nltk.word_tokenize(kalimat[0]):
    bobot+=frekuensi[token]
print(bobot)

agar bisa otomatis menghitung bobot untuk semua kalimat, gunakan kode berikut

bobot_kalimat = {}
for i in range(len(kalimat)):
    for kata in nltk.word_tokenize(kalimat[i]):
        if kata in frekuensi:
            if i in bobot_kalimat:
                bobot_kalimat[i] += frekuensi[kata]
            else:
                bobot_kalimat[i] = frekuensi[kata]
print(bobot_kalimat)

hasilnya

{0: 13, 1: 16, 2: 28}

langkah keempat lakukan sortasi dan mencari nilai batasnya, misalkan hanya menampilkan 2 kalimat teratas saja

n = 2 # Jumlah kalimat dalam ringkasan
ringkasan = ''
if len(bobot_kalimat) < n:
    n = len(bobot_kalimat)
kalimat_terpilih = sorted(bobot_kalimat.keys(), key=lambda i: bobot_kalimat[i], reverse=True)[:n]
kalimat_terpilih = sorted(kalimat_terpilih)
for i in kalimat_terpilih:
    ringkasan += kalimat[i]
    
print(ringkasan)

hasil ringkasan kalimat diatas yaitu

Teks ini berisi beberapa kalimat yang panjang dan kompleks.Tujuan dari ringkasan ini adalah untuk menyajikan informasi utama dari teks dengan cara yang singkat dan jelas.

Catatan:

See also  Belajar Regex Regular Expression

Dalam proses ringkasan tersebut diatas

  1. kita belum menerapkan lowercase() sehingga token untuk huruf besar dan kecil akan dibedakan
  2. tidak remove tanda baca/number

 

Studi kasus meringkas artikel dari kompas.com

Kita butuh scraping dan extract isi HTML, setelah kita telusuri kode letak content artikel tersebut diletakan di <div class=”read__content”> dan juga ada beberapa tag dan kalimat yang perlu kita remove. Yuk langsung saja kita gunakan fake agent agar setiap kita request ke server kompas.com selalu berbeda-beda user agent nya. Misalkan kita ingin ambil content artikel dari alamat https://www.kompas.com/tren/read/2023/04/08/063000565/4-sifat-wajib-nabi-muhammad-saw-apa-saja-?page=all#page2

from fake_useragent import UserAgent
from bs4 import BeautifulSoup
import requests
import re
import nltk
#nltk.download('punkt')

url = "https://www.kompas.com/tren/read/2023/04/08/063000565/4-sifat-wajib-nabi-muhammad-saw-apa-saja-?page=all#page2"
ua = UserAgent()
req = requests.get(url,ua.random)
soup = BeautifulSoup(req.content, 'html.parser')
content = soup.find_all("div", {"class": "read__content"})[0].text #karena isinya hanya 1 saja


#untuk membuang kalimat yang tidak perlu
isi_artikel = " "
for i, paragraf in enumerate(content.split("\n")):
    deteksi = re.findall('baca juga|dapatkan update berita pilihan',paragraf.lower())
    if len(deteksi)==0:
        isi_artikel+="\n"+paragraf
    
print(isi_artikel)

isi artikel tersebut diatas yaitu

KOMPAS.com - Sebagai Rasul, Nabi Muhammad SAW memiliki 4 sifat wajib.
Dilansir dari buku Pengantar Studi Akidah Islam (2017) karya Prof Dr Umar Sulaiman Al-Asyqar, Rasul adalah orang yang diberi wahyu dengan syariat baru.
Rasul berasal dari kata Rasala yang berarti "utusan" atau "penyampaian".
Selain Nabi Muhammad SAW, jumlah Rasul ada sekitar 310.
Sifat wajib Nabi Muhammad SAW
Dikutip dari Kompas.com (27/3/2023), Rasul memiliki 4 sifat wajib, yaitu siddiq, amanah, tablig, dan fatanah.
Berikut penjelasannya:
1. Shiddiq
Shiddiq memiliki makna benar. Artinya, setiap perkataan yang diucapkan atau disampaikan oleh Nabi Muhammad SAW adalah benar.
Sifat wajib Rasul, shiddiq tercantum dalam Surah Maryam ayat 41 yang menyebutkan bahwa:
"Dan ceritakanlah (Muhammad) kisah Ibrahim di dalam kitab (Al-Quran), sesungguhnya dia adalah seorang yang sangat membenarkan, seorang nabi".
2. Amanah
Amanah berarti dapat dipercaya.
Bukti bahwa amanah merupakan sifat wajib Rasul, termasuk Nabi Muhammad SAW dapat dilihat dalam surah An Nisa ayat 58, yang berbunyi:
"Sesungguhnya Allah menyuruh kamu menyampaikan amanat kepada yang berhak menerimanya, dan (menyuruh kamu) apabila menetapkan hukum di antara manusia supaya kamu menetapkan dengan adil. Sesungguhnya Allah memberi pengajaran yang sebaik-baiknya kepadamu. Sesungguhnya Allah adalah Maha Mendengar lagi Maha Melihat".
3. Tablig
Tablig adalah sifat wajib seorang Rasul, yaitu menyampaikan wahyu.
Sifat wajib Nabi Muhammad SAW tablig ini termuat dalam surah Al Maidah ayat 67, berbunyi:
"Wahai Rasul! Sampaikanlah apa yang diturunkan Tuhanmu kepadamu. Jika tidak engkau lakukan (apa yang diperintahkan itu) berarti engkau tidak menyampaikan amanat-Nya. Dan Allah memelihara engkau dari (gangguan) manusia. Sungguh, Allah tidak memberi petunjuk kepada orang-orang kafir".
4. Fatanah
Fatanah berarti pandai, cerdas, dan bijaksana.
Sifat fatanah tercantum dalam surah Al An'am ayat 83, sebagai berikut:
"Dan itulah keterangan Kami yang Kami berikan kepada Ibrahim untuk menghadapi kaumnya. Kami tinggikan derajat siapa yang Kami kehendaki. Sesungguhnya Tuhanmu Mahabijaksana, Maha Mengetahui".
Itulah 4 sifat wajib Nabi MUhammad SAW yang bisa menjadi teladan bagi umat Islam di dunia.

Kita akan meringkas artikel tersebut diatas dengan algoritma yang telah kita buat yaitu

#memisahkan menjadi 1 kalimat
kalimat = nltk.sent_tokenize(isi_artikel)
frekuensi = {}
for kata in nltk.word_tokenize(isi_artikel):
    if kata in frekuensi:
        frekuensi[kata] += 1
    else:
        frekuensi[kata] = 1

bobot_kalimat = {}
for i in range(len(kalimat)):
    for kata in nltk.word_tokenize(kalimat[i]):
        if kata in frekuensi:
            if i in bobot_kalimat:
                bobot_kalimat[i] += frekuensi[kata]
            else:
                bobot_kalimat[i] = frekuensi[kata]

n = 2 # Jumlah kalimat dalam ringkasan
ringkasan_berita = ''
if len(bobot_kalimat) < n:
    n = len(bobot_kalimat)
kalimat_terpilih = sorted(bobot_kalimat.keys(), key=lambda i: bobot_kalimat[i], reverse=True)[:n]
kalimat_terpilih = sorted(kalimat_terpilih)
for i in kalimat_terpilih:
    ringkasan_berita += kalimat[i]    
print(ringkasan_berita)

hasilnya yaitu

Sifat wajib Nabi Muhammad SAW
Dikutip dari Kompas.com (27/3/2023), Rasul memiliki 4 sifat wajib, yaitu siddiq, amanah, tablig, dan fatanah.Sifat wajib Rasul, shiddiq tercantum dalam Surah Maryam ayat 41 yang menyebutkan bahwa:
"Dan ceritakanlah (Muhammad) kisah Ibrahim di dalam kitab (Al-Quran), sesungguhnya dia adalah seorang yang sangat membenarkan, seorang nabi".Bukti bahwa amanah merupakan sifat wajib Rasul, termasuk Nabi Muhammad SAW dapat dilihat dalam surah An Nisa ayat 58, yang berbunyi:
"Sesungguhnya Allah menyuruh kamu menyampaikan amanat kepada yang berhak menerimanya, dan (menyuruh kamu) apabila menetapkan hukum di antara manusia supaya kamu menetapkan dengan adil.

Berikut tampilan web Appnya, kalian bisa menggunakan framework Shiny untuk membuat webapp nya

See also  Sortir Foto Wajah dengan Facenet

Yuk kita ringkas isi artikel dari https://www.kompas.com/properti/read/2023/04/08/053000721/menanti-thr-dari-para-pengelola-jalan-tol-jelang-mudik-lebaran?page=all#page2

Artikel Asli

JAKARTA, KOMPAS.com – Pemberian diskon tarif tol tentu akan menjadi kabar gembira bagi para pemudik Lebaran 2023 yang menggunakan jalan tol. Kendati demikian, hal itu tergantung keputusan masing-masing pengelola jalan tol alias Badan Usaha Jalan Tol (BUJT), dan bukan dari Kementerian PUPR. Sejauh ini, dari 70 ruas jalan tol beroperasi yang dikelola 49 BUJT dengan panjang total 2.623,51 kilometer, baru satu BUJT yang telah memutuskan memberi diskon tarif tol. BUJT yang dimaksud ialah PT Jasa Marga (Persero) Tbk, di mana akan memberlakukan diskon 20 persen untuk tarif terjauh Jalan Tol Jakarta-Cikampek (Japek). Periode pemberlakuan diskon tarif tol 20 persen saat arus mudik dimulai pada Minggu (16/4/2023) pukul 06.00 WIB hingga Selasa (18/4/2023) pukul 06.00 WIB. Kemudian, untuk arus balik, diskon tarif tol 20 persen diberlakukan mulai Kamis (27/4/2023) pukul 06.00 WIB hingga Sabtu (29/4/2023) pukul 06.00 WIB. Sementara untuk ruas jalan tol yang lainnya, Kementerian PUPR hanya bisa menunggu keputusan BUJT. Menteri PUPR Basuki Hadimuljono mengakui bahwa pihaknya tidak bisa mengambil inisiatif mendiskon tarif jalan tol. Sebab, hal itu berkaitan dengan investasi yang dikucurkan oleh BUJT. “Oh enggak boleh, itu investasi kan, jadi mendistorsi investasi, katanya begitu. Jadi saya tunggu saja, ngojok-ngojoki. Saya enggak akan mengajukan,” ujar Basuki di Kompleks Istana Kepresidenan, Jakarta, Rabu (5/4/2023), dikutip dari pemberitaan Kompas.com. Akan tetapi, dia telah mencoba merayu BUJT melalui Asosiasi Jalan Tol Indonesia (ATI) agar memberi diskon tarif tol kepada masyarakat selama momen mudik Lebaran 2023. Meski demikian, dia juga belum bisa memastikan apakah rayuan kepada ATI untuk memberi diskon tarif jalan tol diterima atau tidak. “Ya saya lagi ngojok-ngojoki itu ATI, asosiasi tol supaya mereka (memberi diskon). Sekarang mereka sedang ngitung,” tandasnya. Hal senada juga pernah disampaikan Kepala Badan Pengatur Jalan Tol (BPJT) Kementerian PUPR Danang Parikesit di Jakarta pada Senin (20/3/2023). Menurut dia, para BUJT sejauh ini masih menghitung-hitung terkait pemberian diskon tarif tol. Sebab, tidak semua dari mereka memiliki kondisi keuangan yang sama. Apalagi, sejatinya diskon tarif jalan tol merupakan inisiatif BUJT. Tugas BPJT hanya menjembatani keinginan masyarakat untuk mendapatkan pelayanan lebih. “Sementara kalau kita tahu, kalau Lebaran pendapatan mereka termasuk yang paling tinggi selama satu tahun. Itu yang selalu jadi bahan kita untuk komunikasi dengan mereka,” terangnya. Untuk itu, Danang masih menunggu adanya kebijakan diskon tarif jalan tol dari BUJT setidaknya sekitar dua minggu menjelang Lebaran 2023. “Kita lihat kira-kira dua minggu sebelum Lebaran (2023) apakah ada pemberitahuan dari mereka (Badan Usaha Jalan Tol/BUJT) untuk memberikan diskon tarif,” tuturnya.   Penulis: Ardito Ramadhan | Editor: Novianti Setuningsih

Ringkasan Artikel

Sejauh ini, dari 70 ruas jalan tol beroperasi yang dikelola 49 BUJT dengan panjang total 2.623,51 kilometer, baru satu BUJT yang telah memutuskan memberi diskon tarif tol.Kemudian, untuk arus balik, diskon tarif tol 20 persen diberlakukan mulai Kamis (27/4/2023) pukul 06.00 WIB hingga Sabtu (29/4/2023) pukul 06.00 WIB.Saya enggak akan mengajukan,” ujar Basuki di Kompleks Istana Kepresidenan, Jakarta, Rabu (5/4/2023), dikutip dari pemberitaan Kompas.com.”Kita lihat kira-kira dua minggu sebelum Lebaran (2023) apakah ada pemberitahuan dari mereka (Badan Usaha Jalan Tol/BUJT) untuk memberikan diskon tarif,” tuturnya.

 

See also  Clustering Color