Oleh:
1605552033
Boy Jehezkiel Kamanang Mahar
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:
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:
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:
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:
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.
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.
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
f. Sastrawi
Sastrawi merupakan library python dimana dapat digunakan untuk
mengurangi kesalahan penggunaan Bahasa Indonesia kedalam bentuk baku
(stem).
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)
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()
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]
sentences = []
clean = []
originalSentenceOf = {}
start = time.time()
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')
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)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = GUII()
ex.show()
sys.exit(app.exec_())
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