Contoh Program Text Summarization Menggunakan Python Nltk

Contoh Program Text Summarization Menggunakan Python NLTK. Program Text Summarization yaitu sebuah program yang dibuat buat membuat sebuah ringkasan dari sebuah dokumen dengan tetap mempertahankan point penting dari dokumen asli. Program Text Summarization sangat penting buat kita pelajari serta kembangakan. mengapa Program Text Summarization sangat penting ?. Coba anda bayangkan saat anda diberikan setumpuk dokumen (ratusan serta bahkan ribuan dokumen) serta diminta buat membuat teks ringkasannya, tentu saja bakal sangat melelahkan.
 Contoh Program Text Summarization Menggunakan Python NLTK Contoh Program Text Summarization Menggunakan Python NLTK

Dengan menggunakan sebuah Program Text Summarization maka meringka sebuah dokumen yang sangat banyak bakal sangat mudah. Kalian cuma perlu menjalankan program serta tunggu hingga program selesai meringka, maka hasil ringkasan dokumen bakal anda dapatkan. tidak cuma itu, dengan menggunakan Text Summarization maka kita dapat mengetahui kata serta bahkan topik apa saja yang tengah hangat dibicarakan oleh banyak orang dari teks tersebut.

Baca Juga : Contoh Program Operasi Matriks Ordo 2x2 Menggunakan Python

Dengan melakukan Text Summarization maka kita dapat memperoleh data yang sangat penting. Contohnya kita melakukan Text Summarization pada semua respon komentar terhadap produk yang pada sebuah toko online. Dengan memanfaatkan Text Summarization maka kita bisa mengetahui serta mengelompokan apa saja yang menjadi keluhan serta masukan dari para pembeli yang paling dominan. Dengan mengetahui informasi ini maka kita dapat dengan gampang memberikan solusi atau memperbaiki kualitas layanan sesuai dengan apa yang dikeluhkan.

Pada kesempatan kali ini gammafisblog.com bakal berbagi kepada anda tentang "Contoh Program Text Summarization Menggunakan Python NLTK". Aku menggunakan aplikasi anaconda sebagai tools buat membuat program ini. Namun, anda bisa menggunakan program apa saya yang suport terhapad bahasa python. Kalian juga bisa menggunakan Google Colaboratory ataupun melalui kaggle.com. Untuk cara menggunakanya silahkan cari di google.

Contoh Program Text Summarization Menggunakan Python NLTK

Dibawah ini yaitu contoh program Text Summarization. Kalian bisa mendownload file tersebut secara gratis. File tersebut berekstensi .ipynb, artinya anda membutuhkan sebuah software buat membukanya. Kalian bisa membukanya menggunakan aplikasi ananconda, google colaboratory serta lewat website kaggle.com. Aku sendiri membuat aplikasi anaconda buat membuat program ini. Jadi, saya juga menyerankan kepada anda menggunakan aplikasi yang sama seperti saya.

Kelebihan menggunakan aplikasi anaconda yaitu aplikasi ini dijalankan di localhost serta tidak  membutuhkan koneksi internet buat menjalankanya. Namun, ada kekurangannya seperti anda perlu menginstal beberapa library secara manual. Sedangkan jika anda menggunakan google colaboratory serta kaggle.com maka kebanyakan library telah terinstal serta anda cuma menggunakannya saja.

Berikut yaitu contoh program text summarization menggunakan bahasa pemrograman python NLTK :

Catatan : Sebelum anda menjalankan program ini, maka pastikan anda telah menginstal terlebih dahulu NLTK lewat command prompt anaconda.

# Start : Melakukan Import Library

from gensim.summarization.summarizer import summarize
from gensim.summarization import keywords
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.stem.wordnet import WordNetLemmatizer
import string
import gensim
import gensim.corpora as corpora
from gensim.utils import simple_preprocess
from gensim.models import CoherenceModel
import pyLDAvis
import pyLDAvis.gensim 
import matplotlib.pyplot as plt
%matplotlib inline
import warnings
warnings.filterwarnings("ignore")
import urllib
from bs4 import BeautifulSoup
import requests

import os
import nltk
import nltk.corpus


# Mencari lokasi Folder Corpora
path = nltk.data.find('corpora')
print(path)
print(os.listdir(nltk.data.find('corpora')))

nltk.corpus.treebank.fileids()

#Data yang terdapat pada chesterton-brown.txt disimpat dengan variabel data_brown
data_treebank = nltk.corpus.treebank.words('wsj_0100.mrg')
print(data_treebank)

#Data yang terdapat pada wsj_0100.mrg disimpat dengan variabel data_treebank
data_treebank = nltk.corpus.treebank.words('wsj_0100.mrg')
print(data_treebank)

# melakukan print data data_treebank sepanjang 300 kata
for word in data_treebank[:300]:
    print(word, sep = ' ', end = ' ')

# Menggabungkan data_treebank
text = " ".join(data_treebank[:1000])
text

#The “get_summary” function generate the summary by using summarize method from gensim.summarizer
def get_summary(text, pct):
    summary = summarize(text,ratio=pct,split=True)
    return summary

#The “get_keywords” function filters the noun and adjective words in the source text as the keywords
def get_keywords(text):
    res = keywords(text, ratio=0.1, words=None, split=False, scores=False, pos_filter=('NN', 'JJ'), lemmatize=False, deacc=False)
    res = res.split("\n")
    return res

print('The Input Text')
print('--------------------------')
print(text)
print('--------------------------')
print('Printing Summary')
print('--------------------------')
print(get_summary(text, 0.3))
print('--------------------------')
print('Printing Keywords')
print('--------------------------')
print(get_keywords(text))

def sent_to_words(sentences):
    for sentence in sentences:
        yield(gensim.utils.simple_preprocess(str(sentence), deacc=True))

list(sent_to_words(get_summary(text, 0.3)))

import re
text_baru = re.sub('[^ a-zA-Z0-9]', '' , text)
print(text_baru)

# Melakukan tokenize
stop_words = set(stopwords.words('english'))
lemma = WordNetLemmatizer()
word_tokens = word_tokenize(str(text_baru))
filtered_sentence = [w for w in word_tokens if not w in stop_words]
normalized = " ".join(lemma.lemmatize(word) for word in filtered_sentence)

print(normalized)

from nltk import ngrams
n = 2
total_grams = []
number_of_grams = ngrams(normalized.split(), n)
for grams in number_of_grams:
    total_grams.append(grams)


# Visualisasi Hasil

from wordcloud import WordCloud
import matplotlib.pyplot as plt

wordcloud = WordCloud(max_font_size=60).generate(normalized)
plt.figure(figsize=(16,12))

'''plot wordcloud in matplotlib'''

plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()

count = {}
for w in normalized.split():
    if w in count:
        count[w] += 1
    else:
        count[w] = 1
for word, times in count.items():
    if times > 5:
        print("%s was found %d times" % (word, times))


from nltk.book import text2 as content
#*** Introductory Examples for the NLTK Book ***
#Loading text1, ..., text9 and sent1, ..., sent9
#Type the name of the text or sentence to view it.
#Type: 'texts()' or 'sents()' to list the materials.
#text1: Moby Dick by Herman Melville 1851
#text2: Sense and Sensibility by Jane Austen 1811
#text3: The Book of Genesis
#text4: Inaugural Address Corpus
#text5: Chat Corpus
#text6: Monty Python and the Holy Grail
#text7: Wall Street Journal
#text8: Personals Corpus
#text9: The Man Who Was Thursday by G . K . Chesterton 1908

plt.figure(figsize=(8,5))
topics = ['Hahn', 'GeorgiaPacific', 'company', 'Mr', 'say']
content.dispersion_plot(topics)

def sent_to_word(sentence):
    for sentence in sentence:
        yield(gensim.utils.simple_preprocess(str(sentence), deacc=True))

import gensim
from gensim import corpora
tokenized_sent = list(sent_to_word(filtered_sentence))
dictionary = corpora.Dictionary(tokenized_sent)
doc_term_matrix = [dictionary.doc2bow(doc) for doc in tokenized_sent]
doc_term_matrix

# Uji Coba num_topics=2 buat mengetahui tingkat Koherensi
Lda = gensim.models.ldamodel.LdaModel
ldamodel = Lda(doc_term_matrix, num_topics=2, id2word=dictionary, passes=100)

print('\nPerplexity: ', ldamodel.log_perplexity(doc_term_matrix))
coherence_model_lda=CoherenceModel(
    model=ldamodel,
    texts=tokenized_sent,
    dictionary=dictionary,
    coherence='c_v'
)
coherence_lda = coherence_model_lda.get_coherence()
print("\nCoherence Score ", coherence_lda)

# Uji Coba num_topics=10 buat mengetahui tingkat Koherensi
Lda = gensim.models.ldamodel.LdaModel
ldamodel = Lda(doc_term_matrix, num_topics=10, id2word=dictionary, passes=100)

print('\nPerplexity: ', ldamodel.log_perplexity(doc_term_matrix))
coherence_model_lda=CoherenceModel(
    model=ldamodel,
    texts=tokenized_sent,
    dictionary=dictionary,
    coherence='c_v'
)
coherence_lda = coherence_model_lda.get_coherence()
print("\nCoherence Score ", coherence_lda)

# Uji Coba num_topics=5 buat mengetahui tingkat Koherensi
Lda = gensim.models.ldamodel.LdaModel
ldamodel = Lda(doc_term_matrix, num_topics=5, id2word=dictionary, passes=100)

print(ldamodel.print_topics(num_topics=5, num_words=20))

print('\nPerplexity: ', ldamodel.log_perplexity(doc_term_matrix))
coherence_model_lda=CoherenceModel(
    model=ldamodel,
    texts=tokenized_sent,
    dictionary=dictionary,
    coherence='c_v'
)
coherence_lda = coherence_model_lda.get_coherence()
print("\nCoherence Score ", coherence_lda)

pyLDAvis.enable_notebook()
vis=pyLDAvis.gensim.prepare(ldamodel, doc_term_matrix, dictionary)
vis


Baca Juga : Belajar Konsep Dasar For Loop (Perintah Perulangan) pada Java

Berikut yaitu code program Text Summarization dengan formast .ipynb yang dapat anda download.


Hasil serta Pembahasan Text Summarization

Koherensi yaitu keterkaitan antara bagian yang satu dengan bagian yang lainnya, sehingga kalimat mempunyai kesatuan makna yang utuh (Brown serta Yule dalam Mulyana, 2005: 30). Artinya tingkat koherensi menyetakan sebuah hubungan atau keterkaitan topik sehingga membentuk sebuah teks/kalimat dengan satu kesatuan makna. Berdasarkan hasil yang diperoleh, nilai koherensi sangat dipengaruhi oleh jumlah topik pembahasan dalam sebuh teks summary. Jumlah topik pada program ini di inisialisasikan dengan variabel num_topics. Hubungan jumlah topik serta tingkat koherensi yaitu berbending terbalik. Perkara ini berdarkan hasil uji coba yang telah dilakukan. Semakin banyak jumlah topik yang mau dikenal dalam sebuah teks maka tingkan koherensi bakal makin rendah. Pada num_topics = 2 diperoleh tingkat koherensinya yaitu 0.8599. Kemudian pada num_topics = 5 nilai koherensi yang diperoleh 0.8435 serta pada num_topics = 10 diperoleh nilai koherensi yaitu 0.8298. Perkara ini membuktikan jumlah topik yang mau dikenal menentukan nilai koherensi.

Pada definisi num_topics = 5, maka Intertopic Distance Map bakal menginterpertasikan hasil dari 5 topik dalam summary teks. Intertopic Distance Map mempunyai 2 warna diagram batang. Untuk warna biru muda menunjukan Overall term frequency (frekuensi secara keseluruhan atau gelobal). Sedangkan warna merah menunjukan Estimated term frequency within the selected topic (Frekuensi yang diperkirakan dalam topik yang dipilih). Artinya jika kita memilih atau Selected Topic maka bakal ada 2 interpertasi, yaitu frekuensi topik global serta frekuensi dari topik itu sendiri. Contohnya saat kita memilih topik 3 maka kata-kata yang mempunyai frekuensi 5 terbesar yaitu "hahn, the, university, made serta bid".

Pada 5 kata dengan frekuensi terbesar ada 2 warna yang terlihat diagram batang diatas, yaitu warna merah (frekuensi topik) serta biru (frekuensi global). Yang mana nilai frekuensi global lebih besar dari pada nilai frekuensi kata dalam topik. Artinya setaip kata dalam topik mempunyai hubungan atau koherensi terhadap topik secara global. Perkara ini bakal sama jika kita pada topik yang ke 4, kata-kata yang mempunyai frekuensi 5 terbesar yaitu "Company, but, vice, in serta paper". Dari sini kita bisa lihat Jika setiap topik mempunyai kata dengan frekuensi terbesarnya masing masing. Namung setiap kata tersebut tetap mempunyai hubungan dengan kata-kata secara global.

Oleh karna setiap topik mempunyai kata dengan frekuensi terbesarnya masing-masing, artinya makin diperbanyak topik maka tingkat hubungan (koherensi) antara topik bakal berkurang. Perkara inilah yang menyebabkan tingkat koherensi menurun seiring dengan penambahan topik yang ingn dikenal dalam sebuah teks. Jadi, secara garis besar dapat disimpulkan Jika jumlah topik bakal mempengaruhi nilai koherensi.

Baca Juga : Belajar Konsep Dasar IF serta ELSE pada Java

Penutup:
Itulah artikel tentang Contoh Program Text Summarization Menggunakan Python NLTK. Semoga artikel ini dapat memberikan manfaat buat anda. Jangan lupa buat share artikel ini kepada teman-teman anda serta jangan lupa juga buat follow blog ini, agar penulis lebih semangat lagi dalam membuat artikel bermanfaat lainya. Mungkin itu saja pembahasan kali ini, akhir kata penulis ucapkan mohon maaf jika ada kesalahan serta sampai jumpa kembali.

Belum ada Komentar untuk "Contoh Program Text Summarization Menggunakan Python Nltk"

Posting Komentar

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel