Oleh : Devi Permata Sari (G1501231026) Perkembangan teknologi dan internet telah mengubah cara masyarakat mengonsumsi berita, dengan media online menjadi sumber informasi utama bagi banyak orang. Salah satu bentuk media online yang dapat diakses oleh masyarakat adalah Detik.com. Detik.com merupakan situs berita online yang diproduksi oleh PT Agrakom (Agranet Multicitra Siberkom) dan menjadi salah satu pelopor website berita di Indonesia. Detik.com menyediakan portal berita online yang menyajikan berita peristiwa terbaru, serta informasi lain seperti kesehatan, bisnis, gaya hidup, hiburan, olahraga, dan lain-lain. Dalam perkembangannya, Detik.com selalu berusaha menyesuaikan kebutuhan pembaca dan menyajikan berita yang ter-up to date, aktual, dan terpercaya (Batubara, 2015). Penelitian ini bertujuan untuk melakukan analisis mendalam terhadap data berita yang diperoleh dari Detik.com menggunakan teknik web scraping dan berbagai metode analisis data. Tujuan utamanya adalah untuk memperoleh pemahaman yang lebih baik tentang tren, pola, dan topik yang muncul dalam berita di Detik.com, serta mengungkap wawasan berharga yang dapat bermanfaat bagi jurnalis, editor, pembuat kebijakan, dan peneliti yang tertarik dengan analisis media dan opini publik.
library(mongolite)
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(wordcloud)
## Loading required package: RColorBrewer
library(ggplot2)
##
## Attaching package: 'ggplot2'
## The following object is masked from 'package:NLP':
##
## annotate
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
library(tidytext)
library(tidyr)
library(stringr)
library(topicmodels)
library(knitr)
library(stopwords)
##
## Attaching package: 'stopwords'
## The following object is masked from 'package:tm':
##
## stopwords
library(kableExtra)
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
# Koneksi ke MongoDB
mongo_conn <- mongo(collection = "detik",
db = "scrappingweb",
url = "mongodb+srv://dvprmta:12345@cluster0.tzxirz3.mongodb.net/")
# Read data from MongoDB
headlines_df <- mongo_conn$find()
# Define corpus
corpus <- VCorpus(VectorSource(headlines_df$headline))
# Get Indonesian stopwords list from stopwords package
stopwords_id <- stopwords::stopwords(language = "id", source = "stopwords-iso")
# Preprocess corpus
corpus <- corpus %>%
tm_map(content_transformer(tolower)) %>%
tm_map(removePunctuation) %>%
tm_map(removeNumbers) %>%
tm_map(removeWords, stopwords_id) %>%
tm_map(stripWhitespace)
# Create DocumentTermMatrix
dtm <- DocumentTermMatrix(corpus)
# Calculate word frequencies
word_freq <- sort(colSums(as.matrix(dtm)), decreasing = TRUE)
word_freq_df <- data.frame(word = names(word_freq), freq = word_freq)
# Display top 15 most frequent words
head(word_freq_df, 10)
## word freq
## jakarta jakarta 34
## anies anies 27
## jokowi jokowi 20
## pdip pdip 17
## fakta fakta 13
## kpk kpk 13
## pilkada pilkada 13
## dki dki 12
## adha adha 11
## gaza gaza 11
# Generate word cloud
wordcloud(words = word_freq_df$word, freq = word_freq_df$freq, min.freq = 1,
max.words = 100, random.order = FALSE, rot.per = 0.35,
colors = c("#80DEEA", "#221E21"))
Analisis:
1. Jakarta (30 kali): Frekuensi tinggi kata “Jakarta”
menunjukkan bahwa ibu kota Indonesia ini menjadi pusat perhatian dalam
pemberitaan. Hal ini wajar mengingat Jakarta adalah pusat pemerintahan
dan ekonomi negara. Beberapa judul terkait seperti “Wacana PDIP-PKB
Berkoalisi Dukung Anies di Pilgub Jakarta” dan “Siapa Bersaing di Pilgub
Jakarta?” menunjukkan adanya fokus pada dinamika politik di Jakarta,
khususnya terkait pemilihan gubernur mendatang.
2. Anies (25 kali):
Kemunculan nama Anies Baswedan dengan frekuensi tinggi mengindikasikan
bahwa mantan Gubernur DKI Jakarta ini masih menjadi tokoh yang banyak
dibicarakan. Judul seperti “Plus Minus Jika PDIP Usung Anies di Pilkada
Jakarta Versi Bos Indostrategic” menunjukkan spekulasi tentang
kemungkinan Anies kembali berkontestasi di Pilgub Jakarta.
3.
Jokowi (16 kali): Presiden Joko Widodo tetap menjadi figur penting dalam
pemberitaan nasional. Judul-judul seperti “Jokowi Bareng Iriana dan Jan
Ethes Bersepeda di CFD Bundaran HI” menunjukkan bahwa aktivitas personal
presiden pun masih menjadi perhatian publik.
4. PDIP (16 kali):
Partai Demokrasi Indonesia Perjuangan (PDIP) sebagai partai penguasa
saat ini juga sering muncul dalam pemberitaan. Judul seperti “Politisi
PDIP Anggap Pujian Anies Objektif, Bawa-bawa Jokowi” menunjukkan peran
PDIP dalam dinamika politik nasional dan hubungannya dengan tokoh-tokoh
lain.
# Menghitung bigram counts
bigrams <- headlines_df %>%
unnest_tokens(bigram, headline, token = "ngrams", n = 2) %>%
count(bigram, sort = TRUE)
head(bigrams, 10)
## bigram n
## 1 idul adha 11
## 2 di pilkada 8
## 3 judi online 8
## 4 di pilgub 7
## 5 harun masiku 7
## 6 pagi ini 7
## 7 pilgub jakarta 7
## 8 anies di 6
## 9 di tol 6
## 10 hari ini 6
# Menghitung trigram counts
trigrams <- headlines_df %>%
unnest_tokens(trigram, headline, token = "ngrams", n = 3) %>%
count(trigram, sort = TRUE)
head(trigrams, 10)
## trigram n
## 1 di pilgub jakarta 5
## 2 salat idul adha 5
## 3 di pilkada 2024 4
## 4 anies di pilgub 3
## 5 beda dengan anies 3
## 6 bilang beda dengan 3
## 7 di pilkada jakarta 3
## 8 effect di pilkada 3
## 9 eks penyidik kpk 3
## 10 idul adha di 3
# Visualisasi bigram counts (10 teratas)
ggplot(head(bigrams, 10), aes(x = reorder(bigram, n), y = n)) +
geom_bar(stat = "identity", fill = "skyblue", color = "black") +
labs(x = "Bigram", y = "Count", title = "Top 10 Bigrams in Headlines") +
coord_flip() + # Mengatur orientasi sumbu x menjadi horizontal
theme_minimal() + # Tema minimalis untuk plot
theme(axis.text.y = element_text(size = 10)) # Mengatur ukuran teks pada sumbu y
# Visualisasi trigram counts (10 teratas)
ggplot(head(trigrams, 10), aes(x = reorder(trigram, n), y = n)) +
geom_bar(stat = "identity", fill = "lightgreen", color = "black") +
labs(x = "Trigram", y = "Count", title = "Top 10 Trigrams in Headlines") +
coord_flip() + # Mengatur orientasi sumbu x menjadi horizontal
theme_minimal() + # Tema minimalis untuk plot
theme(axis.text.y = element_text(size = 10)) # Mengatur ukuran teks pada sumbu y
Analisis:
Analisis 5 bigram paling sering muncul:
1.
“idul adha” (11 kali): Perayaan Idul Adha menjadi topik signifikan,
tercermin dalam judul seperti “Daftar 30++ Ucapan Idul Adha 2024” dan
“Wapres Ma’ruf Amin Serahkan Sapi Kurban 1,2 Ton ke Masjid Istiqlal”.
Ini menunjukkan pentingnya momen keagamaan ini dalam konteks sosial dan
politik Indonesia.
2. “judi online” (8 kali): Isu judi online
muncul sebagai masalah serius, terlihat dari judul “Data Ngeri Judi
Online di Indonesia: Angka Transaksi Salip Korupsi”. Hal ini
menggambarkan keprihatinan publik dan pemerintah terhadap dampak
perjudian online.
3. “di pilgub” (7 kali): Pemilihan gubernur,
terutama di Jakarta, menjadi topik hangat. Judul seperti “Mencuat Wacana
PDIP-PKB Berkoalisi Dukung Anies di Pilgub Jakarta” menunjukkan dinamika
politik menjelang pemilihan kepala daerah.
4. “harun masiku” (7
kali): Kasus Harun Masiku tetap menjadi sorotan media, terlihat dari
judul “Klaim Terbaru KPK Tangkap Harun Masiku dalam Seminggu”. Ini
menandakan adanya perhatian berkelanjutan terhadap kasus korupsi dan
penegakan hukum.
5. “pagi ini” (7 kali): Frasa ini sering muncul
dalam berita lalu lintas harian, seperti “Lalin Tol Dalam Kota di Cawang
Arah Tebet Macet Pagi Ini”, menunjukkan fokus media pada informasi
real-time yang relevan bagi pembaca sehari-hari.
Analisis 5 trigram
paling sering muncul
1. “di pilgub jakarta” (5 kali): Frasa ini
muncul dalam judul seperti “Mencuat Wacana PDIP-PKB Berkoalisi Dukung
Anies di Pilgub Jakarta”, menunjukkan fokus media pada dinamika politik
menjelang pemilihan gubernur Jakarta.
2. “salat idul adha” (5
kali): Terlihat dalam judul seperti “Polda Metro Jaya Gelar Salat Idul
Adha, Eks Menag Lukman Hakim Jadi Khatib”, mencerminkan perhatian media
pada aspek keagamaan dan keterlibatan tokoh-tokoh penting dalam
perayaan.
3. “anies di pilgub” (3 kali): Muncul dalam konteks
spekulasi tentang pencalonan Anies Baswedan di Pilgub Jakarta,
menandakan posisinya sebagai figur politik yang masih diperhitungkan.
4. “di pilkada jakarta” (3 kali): Serupa dengan “di pilgub
jakarta”, frasa ini menekankan fokus pemberitaan pada kontestasi politik
di ibukota, menunjukkan pentingnya Jakarta dalam lanskap politik
nasional.
5. “eks penyidik kpk” (3 kali): Terlihat dalam judul
seperti “Eks Penyidik KPK Ungkap TWK Era Firli ‘Gagalkan’ Tangkap Harun
Masiku”, menggambarkan adanya sorotan terhadap dinamika internal dan
kasus-kasus yang melibatkan KPK.
Kesimpulan
Analisis
frekuensi kata membuktikan bahwa pemberitaan nasional masih didominasi
oleh isu-isu politik, khususnya dinamika menjelang Pilkada Jakarta yang
melibatkan tokoh seperti Anies Baswedan, dibuktikan dengan tingginya
frekuensi kemunculan kata “Jakarta” dan “Anies” pada analisis 1 kata,
frasa “di pilgub” pada analisis 2 kata, serta frasa “di pilgub jakarta”,
“anies di pilgub”, dan “di pilkada jakarta” pada analisis 3 kata.
Pentingnya aspek religius dalam kehidupan masyarakat Indonesia
dibuktikan dengan frasa “idul adha” yang sering muncul pada analisis 2
kata dan frasa “salat idul adha” pada analisis 3 kata. Perhatian publik
terhadap isu-isu sosial seperti judi online dan korupsi dibuktikan
dengan frasa “judi online” dan “harun masiku” pada analisis 2 kata,
serta “eks penyidik kpk” pada analisis 3 kata. Media juga menunjukkan
perannya dalam menyajikan informasi yang dekat dengan kehidupan
masyarakat, dibuktikan dengan frasa “pagi ini” yang sering muncul pada
analisis 2 kata dalam konteks berita lalu lintas harian.
# Memeriksa jumlah total judul
total_titles <- nrow(headlines_df)
cat("Total judul berita:", total_titles, "\n")
## Total judul berita: 276
# Memeriksa jumlah total data
total_records <- length(headlines_df$tanggal)
cat("Total data:", total_records, "\n")
## Total data: 276
# Memeriksa struktur kolom tanggal
str(headlines_df$tanggal)
## chr [1:276] "Minggu, 09 Jun 2024 09:03 WIB" ...
# Membersihkan dan mengonversi kolom tanggal
library(stringr)
headlines_df$tanggal <- str_trim(headlines_df$tanggal) # Menghapus spasi di depan dan belakang
headlines_df$tanggal <- str_replace_all(headlines_df$tanggal, "Minggu,", "Sunday,") # Mengganti "Minggu," dengan "Sunday,")
headlines_df$tanggal <- str_replace_all(headlines_df$tanggal, "Senin,", "Monday,")
headlines_df$tanggal <- str_replace_all(headlines_df$tanggal, "Selasa,", "Tuesday,")
headlines_df$tanggal <- str_replace_all(headlines_df$tanggal, "Rabu,", "Wednesday,")
headlines_df$tanggal <- str_replace_all(headlines_df$tanggal, "Kamis,", "Thursday,")
headlines_df$tanggal <- str_replace_all(headlines_df$tanggal, "Jumat,", "Friday,")
headlines_df$tanggal <- str_replace_all(headlines_df$tanggal, "Sabtu,", "Saturday,")
# Mengonversi kolom tanggal menggunakan strptime untuk penanganan format eksplisit
headlines_df$tanggal <- strptime(headlines_df$tanggal, format = "%A, %d %b %Y %H:%M WIB", tz = "Asia/Jakarta")
# Memeriksa nilai NA setelah konversi
if (any(is.na(headlines_df$tanggal))) {
cat("Terdapat nilai NA dalam kolom tanggal setelah konversi\n")
} else {
cat("Tidak ada nilai NA dalam kolom tanggal setelah konversi\n")
}
## Tidak ada nilai NA dalam kolom tanggal setelah konversi
# Melanjutkan dengan analisis frekuensi tanggal dan plotting
library(dplyr)
library(ggplot2)
date_freq <- headlines_df %>%
na.omit() %>%
mutate(tanggal = as.Date(tanggal)) %>%
group_by(tanggal) %>%
summarise(count = n())
# Menampilkan data tabel
print(date_freq)
## # A tibble: 15 × 2
## tanggal count
## <date> <int>
## 1 2024-06-09 34
## 2 2024-06-10 18
## 3 2024-06-11 16
## 4 2024-06-12 16
## 5 2024-06-13 15
## 6 2024-06-14 16
## 7 2024-06-15 16
## 8 2024-06-16 17
## 9 2024-06-17 20
## 10 2024-06-18 18
## 11 2024-06-19 20
## 12 2024-06-20 18
## 13 2024-06-21 18
## 14 2024-06-22 18
## 15 2024-06-23 16
# Plot menggunakan ggplot2
ggplot(date_freq, aes(x = tanggal, y = count)) +
geom_line(color = "blue", size = 1.5) +
geom_point(color = "blue", size = 3) +
scale_x_date(date_labels = "%d-%m-%Y", date_breaks = "1 day") +
labs(title = "Trend of News Headlines Over Time", x = "Date", y = "Number of Headlines") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 90, hjust = 1, color = "#221E21"),
axis.text.y = element_text(color = "#221E21"),
axis.title = element_text(color = "#221E21"),
plot.title = element_text(color = "#221E21", size = 14, face = "bold"),
panel.background = element_rect(fill = "white"),
plot.background = element_rect(fill = "white"))
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Analisis:
Analisis tren jumlah berita yang diterbitkan di Detik.com
pada periode 9-22 Juni 2024 menunjukkan fluktuasi yang signifikan.
Jumlah berita tertinggi terjadi pada 9 Juni dengan 34 berita, kemudian
mengalami penurunan konsisten hingga mencapai titik terendah 15 berita
pada 13 Juni. Penurunan ini mungkin terkait dengan perayaan Idul Adha
pada 10 Juni. Setelah itu, terjadi peningkatan bertahap, mencapai 20
berita pada 17 dan 19 Juni, mencerminkan kembalinya rutinitas normal
dengan topik-topik seperti politik menjelang Pilkada Jakarta (spekulasi
tentang Anies, Kaesang, dan RK), kasus kriminal (penangkapan Virgoun
terkait narkoba pada 21 Juni), dan isu-isu sosial. Dari 20 hingga 22
Juni, jumlah berita stabil di angka 18 per hari, menunjukkan konsistensi
pemberitaan setelah berakhirnya efek libur Idul Adha dan kembalinya
fokus pada isu-isu reguler.
author_freq <- headlines_df %>%
group_by(penulis) %>%
summarise(total_articles = n()) %>%
arrange(desc(total_articles))
# Menampilkan tabel frekuensi penulis
print(author_freq)
## # A tibble: 76 × 2
## penulis total_articles
## <chr> <int>
## 1 Tim detikcom - detikNews 62
## 2 Dwi Andayani - detikNews 12
## 3 Azhar Bagas Ramadhan - detikNews 11
## 4 Farih Maulana Sidik - detikNews 10
## 5 Rolando Fransiscus Sihombing - detikNews 9
## 6 Wildan Noviansah - detikNews 8
## 7 Yulida Medistiara - detikNews 8
## 8 Arief Ikhsanudin - detikNews 7
## 9 Kadek Melda Luxiana - detikNews 7
## 10 Matius Alfons Hutajulu - detikNews 7
## # ℹ 66 more rows
# Plotting menggunakan ggplot2
ggplot(author_freq, aes(x = reorder(penulis, total_articles), y = total_articles)) +
geom_bar(stat = "identity", fill = "blue") +
coord_flip() +
labs(title = "Number of Articles by Author", x = "Author", y = "Number of Articles") +
theme_minimal() +
theme(axis.text.y = element_text(color = "#221E21"),
axis.title = element_text(color = "#221E21"),
plot.title = element_text(color = "#221E21", size = 14, face = "bold"),
panel.background = element_rect(fill = "white"),
plot.background = element_rect(fill = "white"))
Analisis:
Analisis frekuensi artikel berdasarkan penulis di
Detik.com menunjukkan bahwa Tim detikcom - detikNews memiliki jumlah
postingan terbanyak dengan 52 artikel, jauh melampaui penulis individu
lainnya. Azhar Bagas Ramadhan - detikNews berada di posisi kedua dengan
11 artikel, diikuti oleh Farih Maulana Sidik - detikNews dengan 10
artikel. Dwi Andayani - detikNews dan Wildan Noviansah - detikNews
masing-masing memiliki 8 artikel. Hal ini menunjukkan bahwa Tim detikcom
- detikNews, yang kemungkinan merupakan tim penulis kolektif, memiliki
kontribusi yang sangat signifikan dalam menghasilkan konten berita di
Detik.com, sementara penulis individu lainnya memiliki jumlah postingan
yang relatif lebih sedikit.
tags <- headlines_df %>%
separate_rows(tag, sep = ", ") %>%
count(tag, sort = TRUE)
# Membuat wordcloud
wordcloud(words = tags$tag, freq = tags$n, min.freq = 1,
max.words = 200, random.order = FALSE, rot.per = 0.35,
colors = c("#80DEEA", "#221E21"))
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : round-up could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : kapolri jenderal listyo sigit prabowo could not be fit on page. It will
## not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : sekjen pbb afriansyah noor dipecat could not be fit on page. It will not
## be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : adhyaksa awards 2024 could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : bingkai sepekan could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : bos rental mobil could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : bos rental tewas dihajar di pati could not be fit on page. It will not
## be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : gelombang panas could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : hari raya idul adha could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : harun masiku buronan could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : ibu cabuli anak kandung could not be fit on page. It will not be
## plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : icha shakila could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : iriana jokowi could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : jambret cfd sudirman-thamrin could not be fit on page. It will not be
## plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : jenderal agus subiyanto could not be fit on page. It will not be
## plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : jubir kpk could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : jubir kpk tessa mahardhika could not be fit on page. It will not be
## plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : koalisi indonesia maju could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : mahmoud ahmadinejad could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : mardiono could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : masjid al-azhar could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : masjid istiqlal could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : menko pmk muhadjir effendy could not be fit on page. It will not be
## plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : narkoba could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : pemerasan could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : pemerkosaan could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : pengeroyokan could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : penjarahan could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : perubahan iklim could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : pilkada jabar 2024 could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : pilpres iran could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : pj gubernur dki jakarta could not be fit on page. It will not be
## plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : polres metro jakarta barat could not be fit on page. It will not be
## plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : rusun marunda dijarah could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : salat idul adha 2024 could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : satgas judi online could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : sekjen pbb could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : serang could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : sukolilo pati could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : timwas haji could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : tol dalam kota could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : udara jakarta could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : virgoun could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : virgoun ditangkap polisi could not be fit on page. It will not be
## plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : vladimir putin could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : wapres ma'ruf amin could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : yusril ihza mahendra could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : aedes aegypti could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : agus harimurti yudhoyono could not be fit on page. It will not be
## plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : gempa could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : konferensi internasional could not be fit on page. It will not be
## plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : one way could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : ott kpk could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : pilgub jabar could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : ppp gagal ke senayan could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : pusat data nasional gangguan could not be fit on page. It will not be
## plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : timnas indonesia could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : utut adianto could not be fit on page. It will not be plotted.
## Warning in wordcloud(words = tags$tag, freq = tags$n, min.freq = 1, max.words =
## 200, : vandalisme could not be fit on page. It will not be plotted.
Analisis:
Analisis frekuensi tag pada artikel berita di Detik.com
menunjukkan bahwa “jabodetabek” dan “round-up” adalah dua tag yang
paling sering digunakan, masing-masing muncul sebanyak 46 dan 45 kali.
Dominasi tag “jabodetabek” terlihat pada berita-berita seperti “Rusunawa
Marunda Kian Parah: Dulu Atap Ambruk Kini Barang Dijarah”, “F-PDIP DKI
Minta Penjagaan CFD Dikoreksi Buntut Viral Pelari Dijambret”, dan “Ada
Bhayangkara Fun Walk 2024, Jalan Trunojoyo Jaksel Ditutup”. Ini
mencerminkan fokus Detik.com pada isu-isu lokal yang relevan bagi
penduduk Jakarta dan sekitarnya. Sementara itu, tag “round-up” sering
muncul pada artikel-artikel seperti “5 Fakta Terbaru Kasus Akun FB Icha
Shakila Minta 2 Ibu Cabuli Anak”, “6 Fakta Terkini Virgoun Ditangkap
Dini Hari Bareng Wanita Terkait Narkoba”, dan “Fakta-fakta 3 Situs Judol
Dibongkar, Perputaran Duit Capai Rp 1 Triliun”. Penggunaan tag ini
menunjukkan strategi Detik.com dalam menyajikan informasi secara ringkas
dan komprehensif, memudahkan pembaca untuk mendapatkan gambaran lengkap
suatu topik dalam satu artikel. Kedua tag ini mencerminkan upaya
Detik.com untuk memenuhi kebutuhan informasi pembaca tentang peristiwa
lokal yang relevan serta menyajikan berita dalam format yang mudah
dicerna.
#Analisis Topik Menggunakan LDA
# Dapatkan daftar stopwords bahasa Indonesia
indonesian_stopwords <- stopwords::stopwords(language = "id", source = "stopwords-iso")
# Membuat corpus dari teks tanpa stopwords bahasa Indonesia
corpus <- Corpus(VectorSource(headlines_df$teks))
corpus <- tm_map(corpus, content_transformer(tolower)) # Mengubah teks menjadi lowercase
## Warning in tm_map.SimpleCorpus(corpus, content_transformer(tolower)):
## transformation drops documents
corpus <- tm_map(corpus, removePunctuation) # Menghapus tanda baca
## Warning in tm_map.SimpleCorpus(corpus, removePunctuation): transformation drops
## documents
corpus <- tm_map(corpus, removeNumbers) # Menghapus angka
## Warning in tm_map.SimpleCorpus(corpus, removeNumbers): transformation drops
## documents
corpus <- tm_map(corpus, removeWords, indonesian_stopwords) # Menghapus stopwords bahasa Indonesia
## Warning in tm_map.SimpleCorpus(corpus, removeWords, indonesian_stopwords):
## transformation drops documents
dtm <- DocumentTermMatrix(corpus)
# Membuat model LDA
lda_model <- LDA(dtm, k = 5, control = list(seed = 1234))
# Mendapatkan istilah teratas untuk setiap topik
topics <- tidy(lda_model, matrix = "beta")
top_terms <- topics %>%
group_by(topic) %>%
slice_max(beta, n = 10) %>%
ungroup() %>%
arrange(topic, -beta)
# Visualisasi hasil
top_terms %>%
mutate(term = reorder_within(term, beta, topic)) %>%
ggplot(aes(beta, term, fill = factor(topic))) +
geom_col(show.legend = FALSE) +
facet_wrap(~ topic, scales = "free") +
scale_y_reordered() +
labs(title = "Top Terms per Topic", x = "Beta", y = "Terms") +
theme_minimal() +
theme(plot.title = element_text(color = "#221E21", size = 14, face = "bold"),
panel.background = element_rect(fill = "white"),
plot.background = element_rect(fill = "white"))
Analisis:
1. Topik 1:
Topik ini didominasi oleh
istilah-istilah yang terkait dengan politik Jakarta dan Indonesia,
seperti “jakarta”, “anies”, “pdip”, “dki”, “kpk”, “pilkada”, “pkb”,
“calon”, “partai”, dan “kaesang”. Topik ini kemungkinan membahas tentang
dinamika politik di Jakarta, termasuk pemilihan kepala daerah (pilkada),
partai politik yang terlibat (PDIP, PKB), dan tokoh-tokoh politik
seperti Anies Baswedan dan Kaesang Pangarep.
2. Topik 2:
Topik
ini mengandung istilah-istilah seperti “online”, “judi”, “pbb”,
“afriansyah”, “idul”, “adha”, “with”, “scroll”, “continue”, dan
“content”. Topik ini mungkin terkait dengan perjudian online dan isu-isu
yang berkaitan dengan teknologi atau konten online. Selain itu, topik
ini juga menyebutkan tentang Idul Adha dan PBB (Perserikatan
Bangsa-Bangsa).
3. Topik 3:
Topik ini mencakup istilah-istilah
seperti “jakarta”, “ppp”, “presiden”, “prabowo”, “jokowi”, “anies”,
“ridwan”, “kamil”, “partai”, dan “ahok”. Topik ini tampaknya membahas
tentang politik nasional Indonesia, dengan fokus pada tokoh-tokoh
politik seperti Presiden Joko Widodo, Prabowo Subianto, Anies Baswedan,
Ridwan Kamil, dan Basuki Tjahaja Purnama (Ahok), serta partai politik
seperti PPP.
4. Topik 4:
Topik ini mengandung istilah-istilah
seperti “rita”, “indonesia”, “palestina”, “gaza”, “israel”, “warga”,
“jalan”, “orang”, “negara”, dan “jakarta”. Topik ini tampaknya membahas
tentang isu-isu internasional, khususnya konflik antara Israel dan
Palestina, serta dampaknya terhadap warga dan negara-negara yang
terlibat, termasuk Indonesia.
5. Topik 5:
Topik ini didominasi
oleh istilah-istilah yang terkait dengan kriminalitas dan penegakan
hukum, seperti “jakarta”, “polisi”, “pelaku”, “korban”, “metro”,
“polda”, “jaya”, “uang”, “tersangka”, dan “orang”. Topik ini kemungkinan
membahas tentang kejahatan yang terjadi di Jakarta, peran polisi dalam
menangani kasus-kasus tersebut, serta pelaku dan korban yang
terlibat.
Secara keseluruhan, analisis topik menggunakan LDA ini memberikan wawasan tentang tema-tema utama yang dibahas dalam kumpulan dokumen, mulai dari politik Jakarta dan nasional, perjudian online, isu internasional seperti konflik Israel-Palestina, hingga kriminalitas dan penegakan hukum di Jakarta. Analisis ini dapat membantu memahami fokus dan tren dalam pemberitaan atau diskusi yang terjadi dalam dokumen-dokumen tersebut.