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:
- 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.
- 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.
- 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.
- 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:
Dalam proses ringkasan tersebut diatas
- kita belum menerapkan lowercase() sehingga token untuk huruf besar dan kecil akan dibedakan
- 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
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
Ringkasan Artikel