Proklamasi Kemerdekaan Republik Indonesia

Proklamasi Kemerdekaan Indonesia dilaksanakan pada hari Jumat, 17 Agustus 1945 tahun Masehi, atau tanggal 17 Agustus 2605 menurut tahun Jepang, yang dibacakan oleh Soekarno dengan didampingi oleh Drs. Mohammad Hatta bertempat di sebuah rumah hibah dari Faradj bin Said bin Awadh Martak di Jalan Pegangsaan Timur No. 56, Jakarta Pusat.

Catatan Khusus

Pada 16 Agustus 1945, Soekarno, Mohammad Hatta dan Ahmad Soebardjo berkumpul di rumah Laksamana Muda Maeda, untuk merumuskan teks Proklamasi Kemerdekaan Indonesia.

Naskah proklamasi merupakan tulisan tangan Soekarno yang kemudian menjadi presiden Indonesia pertama.Kemudian tulisan tangan tersebut diketik oleh Sayuti Melik dan segera ditandatangani oleh Soerkarno dan Moh. Hatta.

Mengutip dari situs Kementerian Pendidikan dan Kebudayaan (Kemdikbud), isi dari teks Proklamasi Kemerdekaan Indonesia, secara garis besar mengandung dua pernyataan penting, yakni:

  • Kalimat pertama dalam teks proklamasi merupakan pernyataan tentang kemauan Bangsa Indonesia untuk menentukan nasib sendiri.

  • Kalimat kedua dalam teks proklamasi merupakan pernyataan tentang pengalihan kekuasaan.

1. Analisa naskah pidato Kemerdekaan RI

Pertama membersihkan memori pada komputer

rm(list=ls())

Memanggil library yang akan digunakan

library(tm)
## Loading required package: NLP
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library (readr)
library(tidytext)
options(scipen=999)
knitr::opts_chunk$set(echo=TRUE, warning=FALSE, message=FALSE)

Memanggil dokumen/naskah pidato

d<-data.frame(text=read_lines("pidato17agustus45.txt"))


d %>% filter(text != "") %>% mutate(text=as.character(text))->d

1.1. Tampilkan dalam bentuk tabel data

DT::datatable(d)

1.2. Memilih kata-kata yang penting

data(stop_words)
d %>% unnest_tokens(word, text)  %>% anti_join(stop_words) -> words

1.3. Menghitung frekuensi masing-masing kata

words %>%
  group_by(word) %>%
  count() %>% arrange(-n) ->word_count

1.4. Tampilkan dalam bentuk tabel data

DT::datatable(word_count)

1.5. Tampilkan wordcloud

library(wordcloud)
#generate word cloud
set.seed(1234)
wordcloud(words = word_count$word, freq = word_count$n, min.freq = 3,
          max.words=1000, random.order=FALSE, rot.per=0.20, 
          colors=brewer.pal(8, "Dark2"))

Berdasarkan jumlah kata-kata yang digunakan kata-kata “kita”, “saudara”, “indonesia”, “bangsa”, “dalam”, “dan”, “kemerdekaan” adalah yang sering muncul.

Tapi ini belum memiliki makna….

2. Pre processing Text

e<-read_lines("pidato17agustus45.txt")

2.1. Cara membersihkan dokumen

corpus <- VCorpus(VectorSource(e), 
                  readerControl = list(language = "en", readPlain, load = T))
corpus <- tm_map(corpus, removePunctuation) # menghilangkan tanda baca
corpus <- tm_map(corpus, content_transformer(tolower)) # merubah ke huruf kecil
# corpus <- tm_map(corpus, removeNumbers) # menghilangkan nomor

2.2. Memproses kata-kata yang tidak diinginkan

Anda bisa juga menghilangkan kata-kata yang tidak ingin digunakan karena dianggap kurang signifikan dalam melakukan text analytics.

Menggunakan perintah stopwords.

myStopwords <- c(stopwords('english'), "dalam", "dan","ini","itu","yang","tetapi", "di")

corpus <- tm_map(corpus, removeWords, myStopwords)

corpus_Clean <- tm_map(corpus, stripWhitespace)

2.3. Tampilkan wordcloudnya

library(wordcloud)
#generate word cloud
set.seed(1234)
wordcloud(words = corpus_Clean, min.freq = 3,
          max.words=1000, random.order=FALSE, rot.per=0.20, 
          colors=brewer.pal(8, "Dark2"))

3. N-Grams

N-Grams adalah potongan sejumlah karakter dari suatu string tertentu atau potongan jumlah (n) kata dari suatu kalimat.

N-Grams merupakan dasar dari pengolahan kalimat. Dengan implementasi N-Grams sebuah aplikasi dapat dikembangkan untuk spelling correction, word breaking dan text summarization. Bahkan Microsoft dan Google menggunakan model ini untuk pengembangan web mereka.

N-Grams akan mengambil sejumlah kata yang kita butuhkan dari sebuah kalimat.

Seperti contohnya kalimat “Tanah airku Indonesia yang subur”, maka bentuk N-Grams dari kalimat tersebut adalah :

Model probabilistik N-gram, merupakan model yang digunakan untuk memprediksi kata berikutnya yang mungkin dari kata N-1 sebelumnya. Model statistika dari urutan kata ini seringkali disebut juga sebagai model bahasa (language models / LMs).

Model estimasi seperti N-gram memberikan probabilitas kemungkinan pada kata berikutnya yang mungkin dapat digunakan untuk melakukan kemungkinan penggabungan pada keseluruhan kalimat. Model N-gram merupakan model yang paling penting dalam pemrosesan suara ataupun bahasa baik untuk memperkirakan probabilitas kata berikutnya maupun keseluruhan sequence.

[source: https://socs.binus.ac.id/2019/12/31/n-gram/]

3.1. Unigrams Barplot

library(RWeka)
par(mar = c(12, 12, 1, 1))
tokenizer1 <- function(x) NGramTokenizer(x, Weka_control(min = 1, max = 1))
uni_gram <- TermDocumentMatrix(corpus_Clean, control = list(tokenize = tokenizer1))
uni_gram <- as.data.frame(as.matrix(uni_gram))
uni_gram <- rowSums(uni_gram)
uni_gram <- sort(uni_gram, decreasing = T)
uni_gram_frame<-data.frame(uni_gram)
barplot(uni_gram[1:10], las = 2)

3.2. 2-grams Barplot

par(mar = c(12, 12, 1, 1))
tokenizer2 <- function(x) NGramTokenizer(x, Weka_control(min = 2, max = 2))
bi_gram <- TermDocumentMatrix(corpus_Clean, control = list(tokenize = tokenizer2))
bi_gram <- as.data.frame(as.matrix(bi_gram))
bi_gram <- rowSums(bi_gram)
bi_gram <- sort(bi_gram, decreasing = T)
barplot(bi_gram[1:10], horiz=TRUE,las = 2, )

3.3. 3-grams Barplot

par(mar = c(12, 12, 1, 1))
tokenizer3 <- function(x) NGramTokenizer(x, Weka_control(min = 3, max = 3))
tri_gram <- TermDocumentMatrix(corpus_Clean, control = list(tokenize = tokenizer3))
tri_gram <- as.data.frame(as.matrix(tri_gram))
tri_gram <- rowSums(tri_gram)
tri_gram <- sort(tri_gram, decreasing = T)
barplot(tri_gram[1:10], las = 1, horiz=TRUE)

4. UDPIPE

paket dalam R yang mampu menganalisa dan melakukan kalkulasi language-agnostic tokenization, tagging, lemmatization dan dependency parsing dari data teks, yang merupakan hal terpenting dalam Natural Language Processing (NLP).

4.1. Menggunakan UDPIPE

setwd("D:/R/textanalysis/udpipe")
pidato <- read.table(file="pidato17agustus45.txt", sep=";", quote="\"")

library(udpipe)
udmodel_indonesian <- udpipe_load_model(file = 'indonesian-gsd-ud-2.3-181115.udpipe')
s <- udpipe_annotate(udmodel_indonesian, pidato$V1)
x <- data.frame(s)
library(lattice)
stats <- txt_freq(x$upos)
stats$key <- factor(stats$key, levels = rev(stats$key))
barchart(key ~ freq, data = stats, col = "yellow", 
         main = "UPOS (Universal Parts of Speech)\n frequency of occurrence", 
         xlab = "Freq")

4.2. Kata-kata benda yang sering muncul (NOUNS)

stats <- subset(x, upos %in% c("NOUN")) 
stats <- txt_freq(stats$token)
stats$key <- factor(stats$key, levels = rev(stats$key))
barchart(key ~ freq, data = head(stats, 20), col = "cadetblue", 
         main = "Kata Benda yang sering muncul", xlab = "Freq")

4.3. Kata-kata sifat yang sering muncul (ADJECTIVES)

stats <- subset(x, upos %in% c("ADJ")) 
stats <- txt_freq(stats$token)
stats$key <- factor(stats$key, levels = rev(stats$key))
barchart(key ~ freq, data = head(stats, 20), col = "purple", 
         main = "Kata Sifat yang sering muncul", xlab = "Freq")

4.4. Kata-kata kerja yang sering muncul(VERB)

stats <- subset(x, upos %in% c("VERB")) 
stats <- txt_freq(stats$token)
stats$key <- factor(stats$key, levels = rev(stats$key))
barchart(key ~ freq, data = head(stats, 20), col = "gold", 
         main = "Kata Kerja yang sering muncul", xlab = "Freq")

4.5. Menggunakan RAKE

Rake (Rapid Automatic Keyword Extraction) adalah algoritma yang sangat efisien untuk mengidentifikasi kata kunci yang penting pada dokumen. RAKE bisa mengikuti konversi tata bahasa tertentu.

stats <- keywords_rake(x = x, term = "lemma", group = "doc_id", 
                       relevant = x$upos %in% c("NOUN", "ADJ"))
stats$key <- factor(stats$keyword, levels = rev(stats$keyword))
barchart(key ~ rake, data = head(subset(stats, freq > 2), 20), col = "skyblue", 
         main = "Kata kunci yang teridentifikasi oleh RAKE", 
         xlab = "Rake")

5. INSIGHT

Berdasarkan hasil analisis teks yang dilakukan, secara umum Bung Karno sering menggunakan kata “KITA”. Hal ini menunjukkan rasa kebersamaan, persatuan dan kesatuan yang sangat signifikan.

Kata-kata peting lainnya adalah : “kemerdekaan”,“bangsa”, “tanah air”, “merdeka”, “sendiri”, “ada” (eksistensi), “menyatakan”,“mencapai”, “menyusun”.

Tampak harapan terbesar dari para “founding fathers” dari kata-kata yang sering muncul. Tunggu analisa lanjutan mengenai hubungan antara kata dan korelasi antara satu kata dengan kata lainnya.

Semoga bermanfaat.