Anda di halaman 1dari 15

NATURAL LANGUAGE PROCESSING

Summarizer Text Menggunakan Library Sastrawi

Oleh:

1605552033
Boy Jehezkiel Kamanang Mahar

PROGRAM STUDI TEKNOLOGI INFORMASI

FAKULTAS TEKNIK

UNIVERSITAS UDAYANA

2020
I. Pendahuluan
Secara mendasar, komunikasi adalah salah satu hal paling penting yang dibutuhkan
manusia sebagai makhluk sosial. Ada lebih dari trilyunan halaman berisi informasi
pada Website, dimana kebanyakan diantaranya menggunakan bahasa natural. Isu
yang sering muncul dalam pengolahan bahasa adalah ambiguitas, dan bahasa yang
berantakan/tidak formal (tidak sesuai aturan bahasa).

Natural Language Processing (NLP) merupakan salah satu cabang ilmu AI yang
berfokus pada pengolahan bahasa natural. Bahasa natural adalah bahasa yang
secara umum digunakan oleh manusia dalam berkomunikasi satu sama lain.
Bahasa yang diterima oleh komputer butuh untuk diproses dan dipahami terlebih
dahulu supaya maksud dari user bisa dipahami dengan baik oleh komputer.

Ada berbagai terapan aplikasi dari NLP. Diantaranya adalah Chatbot (aplikasi yang
membuat user bisa seolah-olah melakukan komunikasi dengan computer),
Stemming atau Lemmatization (pemotongan kata dalam bahasa tertentu menjadi
bentuk dasar pengenalan fungsi setiap kata dalam kalimat), Summarization
(ringkasan dari bacaan), Translation Tools (menterjemahkan bahasa) dan aplikasi-
aplikasi lain yang memungkinkan komputer mampu memahami instruksi bahasa
yang diinputkan oleh user.
a. NLP Area
Pustejovsky dan Stubbs (2012) menjelaskan bahwa ada beberapa area
utama penelitian pada field NLP, diantaranya:

 Question Answering Systems (QAS). Kemampuan komputer untuk


menjawab pertanyaan yang diberikan oleh user. Daripada memasukkan
keyword ke dalam browser pencarian, dengan QAS, user bisa langsung
bertanya dalam bahasa natural yang digunakannya, baik itu Inggris,
Mandarin, ataupun Indonesia.
 Summarization. Pembuatan ringkasan dari sekumpulan konten dokumen
atau email. Dengan menggunakan aplikasi ini, user bisa dibantu untuk
mengkonversikan dokumen teks yang besar ke dalam bentuk slide
presentasi.
 Machine Translation. Produk yang dihasilkan adalah aplikasi yang dapat
memahami bahasa manusia dan menterjemahkannya ke dalam bahasa lain.
Termasuk di dalamnya adalah Google Translate yang apabila dicermati
semakin membaik dalam penterjemahan bahasa. Contoh lain lagi adalah
BabelFish yang menterjemahkan bahasa pada real time.
 Speech Recognition. Field ini merupakan cabang ilmu NLP yang cukup
sulit. Proses pembangunan model untuk digunakan telpon/komputer
dalam mengenali bahasa yang diucapkan sudah banyak dikerjakan.
Bahasa yang sering digunakan adalah berupa pertanyaan dan perintah.
 Document classification. Sedangkan aplikasi ini adalah merupakan area
penelitian NLP Yang paling sukses. Pekerjaan yang dilakukan aplikasi ini
adalah menentukan dimana tempat terbaik dokumen yang baru diinputkan
ke dalam sistem. Hal ini sangat berguna pada aplikasi spam filtering, news
article classification, dan movie review.

b. Terminologi NLP
Perkembangan NLP menghasilkan kemungkinan dari interface bahasa
natural menjadi knowledge base dan penterjemahan bahasa natural. Poole
dan Mackworth (2010) menjelaskan bahwa ada 3 (tiga) aspek utama pada
teori pemahaman mengenai natural language:

 Syntax: menjelaskan bentuk dari bahasa. Syntax biasa dispesifikasikan oleh


sebuah grammar. Natural language jauh lebih daripada formal language
yang digunakan untuk logika kecerdasan buatan dan program komputer
 Semantics: menjelaskan arti dari kalimat dalam satu bahasa. Meskipun
teori semantics secara umum sudah ada, ketika membangun sistem natural
language understanding untuk aplikasi tertentu, akan digunakan
representasi yang paling sederhana.
 Pragmatics: menjelaskan bagaimana pernyataan yang ada berhubungan
dengan dunia. Untuk memahami bahasa, agen harus mempertimbangan
lebih dari hanya sekedar kalimat. Agen harus melihat lebih ke dalam
konteks kalimat, keadaan dunia, tujuan dari speaker dan listener, konvensi
khusus, dan sejenisnya.
Contoh kalimat di bawah ini akan membantu untuk memahami perbedaan
diantara ketiga aspek tersebut di atas. Kalimat-kalimat ini adalah kalimat
yang mungkin muncul pada bagian awal dari sebuah buku Artificial
Intelligence (AI):

1. This book is about Artificial Intelligence


2. The green frogs sleep soundly
3. Colorless green ideas sleep furiously
4. Furiously sleep ideas green colorless

Kalimat pertama akan tepat jika diletakkan pada awal sebuah buku, karena
tepat secara sintaks, semantik, dan pragmatik. Kalimat kedua tepat secara
sintaks dan semantic, namun kalimat tersebut akan menjadi aneh apabila
diletakkan pada awal sebuah buku AI, sehingga kalimat ini tidak tepat
secara pragmatik. Kalimat ketiga tepat secara sintaks, tetapi tidak secara
semantik. Sedangkan pada kalimat keempat, tidak tepat secara sintaks,
semantik, dan pragmatik.

Selain daripada ketiga istilah tersebut ada beberapa istilah yang terkait
dengan NLP, yaitu:

 Morfologi. Adalah pengetahuan tentang kata dan bentuknya sehingga bisa


dibedakan antara yang satu dengan yang lainnya. Bisa juga didefinisikan
asal usul sebuah kata itu bisa terjadi. Contoh : membangunkan –> bangun
(kata dasar), mem- (prefix), -kan (suffix)
 Fonetik. Adalah segala hal yang berhubungan dengan suara yang
menghasilkan kata yang dapat dikenali. Fonetik digunakan dalam
pengembangan NLP khususnya bidang speech based system

c. Information Retrieval
Information Retrieval (IR) adalah pekerjaan untuk menemukan dokumen
yang relevan dengan kebutuhan informasi yang dibutuhkan oleh user.
Contoh sistem IR yang paling popular adalah search engine pada World
Wide Web. Seorang pengguna Web bisa menginputkan query berupa kata
apapun ke dalam sebuah search engine dan melihat hasil dari pencarian
yang relevan. Karakteristik dari sebuah sistem IR (Russel & Norvig, 2010)
diantaranya adalah:

 A corpus of documents. Setiap sistem harus memutuskan dokumen yang


ada akan diperlakukan sebagai apa. Bisa sebagai sebuah paragraf,
halaman, atau teks multipage.
 Queries posed in a query language. Sebuah query menjelaskan tentang
apa yang user ingin peroleh. Query language dapat berupa list dari kata-
kata, atau bisa juga menspesifikasikan sebuah frase dari kata-kata yang
harus berdekatan
 A result set. Ini adalah bagian dari dokumen yang dinilai oleh sistem IR
sebagai yang relevan dengan query.
 A presentation of the result set. Maksud dari bagian ini adalah tampilan
list judul dokumen yang sudah di ranking.

d. Morphological Analysis
Proses dimana setiap kata yang berdiri sendiri (individual words) dianalisis
kembali ke komponen pembentuk mereka dan token nonword seperti tanda
baca dsb dipisahkan dari kata tersebut.

Contohnya apabila terdapat kalimat:

“I want to print Bill’s .init file”

Jika morphological analysis diterapkan ke dalam kalimat di atas, maka:

 Pisahkan kata “Bill’s” ke bentuk proper noun “Bill” dan possessive suffix
“’s”
 Kenali sequence “.init” sebagai sebuah extension file yang berfungsi
sebagai adjective dalam kalimat.
Syntactic analysis harus menggunakan hasil dari morphological analysis
untuk membangun sebuah deskripsi yang terstruktur dari kalimat. Hasil
akhir dari proses ini adalah yang sering disebut sebagai parsing. Parsing
adalah mengkonversikan daftar kata yang berbentuk kalimat ke dalam
bentuk struktur yang mendefinisikan unit yang diwakili oleh daftar tadi.

Hampir semua sistem yang digunakan untuk syntactic processing memiliki


dua komponen utama, yaitu:

 Representasi yang deklaratif, yang disebut juga sebagai Grammar, dari fakta
sintaktis mengenai bahasa yang digunakan
 Procedure, yang disebut juga sebagai Parser, yang membandingkan
grammar dengan kalimat yang diinputkan untuk menghasilkan struktur
kalimat yang telah di parsing

Cara yang paling umum digunakan untuk merepresentasikan grammar


adalah dengan sekumpulan production rule. Rule yang paling pertama bisa
diterjemahkan sebagai “Sebuah Sentence terdiri dari sebuah Noun Phrase,
diikuti oleh Verb Phrase”, garis vertical adalah OR, sedangkan ε mewakili
string kosong.

Proses parsing menggunakan aturan-aturan yang ada pada Grammar,


kemudian membandingkannya dengan kalimat yang diinputkan. Struktur
paling sederhana dalam melakukan parsing adalah Parse Tree, yang secara
sederhana menyimpan rule dan bagaimana mereka dicocokkan satu sama
lain. Setiap node pada Parse Tree berhubungan dengan kata yang
dimasukkan atau pada nonterminal pada Grammar yang ada. Setiap level
pada Parse Tree berkorespondensi dengan penerapan dari satu rule pada
Grammar.

e. Stemming & Lemmatization


Stemming merupakan sebuah proses yang bertujuan untuk mereduksi
jumlah variasi dalam representasi dari sebuah kata (Kowalski, 2011).
Resiko dari proses stemming adalah hilangnya informasi dari kata yang di-
stem. Hal ini menghasilkan menurunnya akurasi atau presisi. Sedangkan
untuk keuntungannya adalah, proses stemming bisa meningkatkan
kemampuan untuk melakukan recall. Tujuan dari stemming sebenarnya
adalah untuk meningkatkan performace dan mengurangi penggunakan
resource dari sistem dengan mengurangi jumlah unique word yang harus
diakomodasikan oleh sistem. Jadi, secara umum, algoritma stemming
mengerjakan transformasi dari sebuah kata menjadi sebuah standar
representasi morfologi (yang dikenal sebagai stem).

f. Sastrawi
Sastrawi merupakan library python dimana dapat digunakan untuk
mengurangi kesalahan penggunaan Bahasa Indonesia kedalam bentuk baku
(stem).

g. Summarizer using Sastrawi


Pembuatan ringkasan dari sekumpulan konten dokumen atau email. Dengan
menggunakan aplikasi ini, user bisa dibantu untuk mengkonversikan
dokumen teks yang besar ke dalam bentuk slide presentasi. Namun kita
akan menggunakan library Sastrawi agar teks yang diringkas dalam Bahasa
Indonesia dapat dengan baik dikonversikan.

II. Pembahasan
a. Frequency
Frequency merupakan baris program dimana fitur ini akan menghitung
banyaknya kemunculan kata dalam sebuah dokumen atau sekumpulan
konten . dengan menggunakan kesamaan pola pada text dokumen.
Sehingga source code dapat ditulis

frequency = {}
document_text = self.lineEdit.text()
text_string = document_text.lower()
match_pattern = re.findall(r'[a-z]{3,15}', text_string)

for word in match_pattern:


count = frequency.get(word, 0)
frequency[word] = count + 1
frequency_list = frequency.keys()

for words in frequency_list:


print(words, frequency[words])
self.Frekuensi_2.setText(words+
str(frequency[words]))

b. Stopword
Stop words adalah kata umum (common words) yang biasanya muncul
dalam jumlah besar dan dianggap tidak memiliki makna. Stop words
umumnya dimanfaatkan dalam task information retrieval. Fitur stopwords
dapat dituliskan pada Source code.

factory = StopWordRemoverFactory()
stopword = factory.create_stop_word_remover()

stop = stopword.remove(self.lineEdit.text())
print("StopWord :", stop)
self.Stopword_2.setText("StopWord :\n"+ stop)

c. Stemmer
Merupakan pemotongan imbuhan pada kata berimbuhan (awalan, akhiran,
sisipan, kombinasi) yang dijalankan dengan algoritme tertentu. Pengolahan
queri yang mengandung imbuhan pada mesin pencari di atas (dalam bahasa
Inggris), akan memberikan hasil pencarian halaman-halaman yang memuat
kata dasarnya atau kombinasi imbuhan lainnya. Fitur Stemmer pada dapat
dilihat pada Source Code.

factory = StemmerFactory()
stemmer = factory.create_stemmer()

kalimat = self.lineEdit.text()
katadasar = stemmer.stem(kalimat)
print(katadasar)
self.Steamming.setText("Steeming :\n" + katadasar)

d. Summarization
Summarization merupakan Ringkasan pada sebuah dokumen atau
paragraph text yang dapat menyimpulkan isi dari dokumen tersebut,
Summary dapat dibentuk secara akurat dari dasar fitur yang telah diatur
pada dokumen sebelumnya, Summarization pada aplikasi dapat dilihat pada
Source Code.
summarizationn (self):
factory = StemmerFactory()
stemmer = factory.create_stemmer()

def load_stopWords():
f = open('stopword.txt', 'r');
return f.readlines()

stopwords = load_stopWords()

def cleanData(sentence):
# sentence = re.sub('[^A-Za-z0-9 ]+', '', sentence)
# sentence filter(None, re.split("[.!?", setence))
ret = []
sentence = stemmer.stem(sentence)
for word in sentence.split():
if not word in stopwords:
ret.append(word)
return " ".join(ret)

def getVectorSpace(cleanSet):
vocab = {}
for data in cleanSet:
for word in data.split():
vocab[data] = 0
return vocab.keys()

def calculateSimilarity(sentence, doc):


if doc == []:
return 0
vocab = {}
for word in sentence:
vocab[word] = 0

docInOneSentence = '';
for t in doc:
docInOneSentence += (t + ' ')
for word in t.split():
vocab[word] = 0

cv = CountVectorizer(vocabulary=vocab.keys())

docVector = cv.fit_transform([docInOneSentence])
sentenceVector = cv.fit_transform([sentence])
return cosine_similarity(docVector,
sentenceVector)[0][0]

data = open("word.txt", 'r')


rite = open('word.txt', 'w')
rite.write(self.lineEdit.text())
rite.close()
texts = data.readlines()

sentences = []
clean = []
originalSentenceOf = {}

start = time.time()

for line in texts:


parts = line.split('.')
for part in parts:
cl = cleanData(part)
# print cl
sentences.append(part)
clean.append(cl)
originalSentenceOf[cl] = part
setClean = set(clean)

scores = {}
for data in clean:
temp_doc = setClean - set([data])
score = calculateSimilarity(data, list(temp_doc))
scores[data] = score

n = 20 * len(sentences) / 100
alpha = 0.5
summarySet = []
while n > 0:
mmr = {}
# kurangkan dengan set summary
for sentence in scores.keys():
if not sentence in summarySet:
mmr[sentence] = alpha * scores[sentence] - (1
- alpha) * calculateSimilarity(sentence, summarySet)
selected = max(mmr.items(),
key=operator.itemgetter(1))[0]
summarySet.append(selected)
n -= 1

print('\nSummary:\n')
for sentence in summarySet:
print(originalSentenceOf[sentence].lstrip(' '))
self.summarization.setText("Summary:\n" +
originalSentenceOf[sentence].lstrip(' '))

print('======================================================
=======')
print('\nOriginal Passages:\n')

for sentence in clean:


if sentence in summarySet:

print(colored(originalSentenceOf[sentence].lstrip(' '),
'red'))
else:
print(originalSentenceOf[sentence].lstrip(' '))

e. GUI
GUI didesain dengan GUI toolkit wxPython source code utama dapat
dilihat pada tabel berikut.
class GUII (QtWidgets.QMainWindow) :
def __init__(self):
QtWidgets.QWidget.__init__(self)
super (GUII,self).__init__()
uic.loadUi("GUII.ui",self)
self.setWindowTitle("Natural Language
Proccesing")
pybutton = QPushButton('Frekuensi', self)
pybutton.clicked.connect(self.clickMethod)
pybutton.resize(131, 41)
pybutton.move(10, 660)

pabutton = QPushButton('Stopword', self)


pabutton.clicked.connect(self.clickMethodd)
pabutton.resize(131, 41)
pabutton.move(350, 660)

pubutton = QPushButton('Stemming', self)


pubutton.clicked.connect(self.clickMethoddd)
pubutton.resize(131, 41)
pubutton.move(700, 660)

pobutton = QPushButton('Open', self)


pobutton.clicked.connect(self.open)
pobutton.resize(131, 41)
pobutton.move(870, 210)

pibutton = QPushButton('summarization', self)


pibutton.clicked.connect(self.summarizationn)
pibutton.resize(131, 41)
pibutton.move(1030, 660)
def __init__(self):

if __name__ == '__main__':
app = QApplication(sys.argv)
ex = GUII()
ex.show()
sys.exit(app.exec_())

Hasil Screenshot dari GUI dapat dilihat pada Gambar berikut


III. Kesimpulan
a. Output Frequency
Untuk pengambilan output saya akan menggunakan text berita yang saya
ambil dari detik news Kamis, 31 Des 2020 10:49 WIB
b. Output Stopword

c. Output Stemmer
d. Output Summarization

Video Link

https://drive.google.com/file/d/1kg2rLFBd85xZvUZsFnsExss7es_LvPO0/view?usp=sharing
Daftar Pustaka

 Ingason, K., Helgadóttir, S., Loftsson, H., Rögnvaldsson, E. (2008). A Mixed Method
Lemmatization Algorithm Using a Hierarchy of Linguistic Identities (HOLI). Aarne
Ranta (Eds,). Advances in Natural Language Processing.
 Jurafsky D. dan Martin, J.H. (2008). Speech and Language Processing: An
Introduction to Natural Language Processing, Computational Linguistics, and Speech
Recognition. 2ndEdition. New Jersey: Pearson, Prentice Hall.
 Kowalski, M. (2011). Information Retrieval Architecture and Algorithms. New York:
Springer.
 Nirenburg, S. (2009). Language Engineering for Lesser-Studied Languages.
Amsterdam: IOS Press.
 Pustejovsky, J., Stubbs A. (2012). Natural Language Annotation for Machine
Learning. Beijing: O’Reilly.
 Russel, S. J., Norvig, P. (2010). Artificial Intelligence A Modern Approach. New
Jersey: Pearson Education Inc.
 Suhartono, D., Christiandy D., Rolando (2013). Lemmatization Technique in Bahasa:
Indonesian Language. Kuwait: Journal of Software (unpublished)
 Massachusetts Institute of Technology (2010). Advanced Natural Language
Processing. http://people.csail.mit.edu/regina/6864/. Cambridge

 https://socs.binus.ac.id/2013/06/22/natural-language-processing/
 https://id.wikipedia.org/
 https://news.detik.com/berita/d-5316067/catat-masyarakat-penerima-vaksin-covid-19-akan-
dapat-sms-mulai-hari-ini

Anda mungkin juga menyukai