Apa sih PubMed itu?
PubMed adalah sumber daya gratis yang mendukung pencarian literatur
ilmiah dalam bidang biomedis dan kesehatan. PubMed mencakup lebih dari
30 juta kutipan dan abstrak dari artikel jurnal biomedis. Ini adalah
alat penting bagi para peneliti, dokter, dan profesional kesehatan untuk
menemukan penelitian terbaru dan informasi medis yang relevan.
Pada project ini, saya melakukan scraping pada situs web https://pubmed.ncbi.nlm.nih.gov/ untuk mengumpulkan
artikel jurnal yang menggunakan metode Support Vector Machine (SVM). SVM
adalah salah satu metode pembelajaran mesin yang sangat populer dan
digunakan untuk klasifikasi dan regresi. Tujuan utama dari scraping ini
adalah untuk mengumpulkan data penelitian terbaru yang menggunakan
metode SVM dan memudahkan analisis data dari berbagai studi yang
dipublikasikan.
Dengan melakukan scraping data dari PubMed, kita bisa mendapatkan
berbagai informasi penting seperti id, judul artikel jurnal, penulis,
dan link. Data ini sangat berguna untuk keperluan penelitian, review
literatur, dan analisis tren penggunaan SVM dalam berbagai bidang
biomedis dan kesehatan.
library(ggplot2)
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(tidyr)
## Warning: package 'tidyr' was built under R version 4.1.2
library(tm)
## Loading required package: NLP
##
## Attaching package: 'NLP'
## The following object is masked from 'package:ggplot2':
##
## annotate
library(SnowballC)
## Warning: package 'SnowballC' was built under R version 4.1.2
library(wordcloud)
## Loading required package: RColorBrewer
## Warning: package 'RColorBrewer' was built under R version 4.1.2
library(textclean)
library(topicmodels)
## Warning: package 'topicmodels' was built under R version 4.1.2
setwd("~/Desktop")
data <- read.csv("~/Desktop/Project_UAS.PubMed.csv", header = TRUE)
head(data)
## X_id
## 1 665fdaabbf2c72d2a006cf91
## 2 665fdaacbf2c72d2a006cf92
## 3 665fdaacbf2c72d2a006cf93
## 4 665fdaacbf2c72d2a006cf94
## 5 665fdaadbf2c72d2a006cf95
## 6 665fdaadbf2c72d2a006cf96
## title
## 1 Applications of Support Vector Machine (SVM) Learning in Cancer Genomics.
## 2 Sparse SVM for Sufficient Data Reduction.
## 3 SVM-CART for Disease Classification.
## 4 SVM clustering.
## 5 SVM-Boosting based on Markov resampling: Theory and algorithm.
## 6 Bayesian-Optimized Hybrid Kernel SVM for Rolling Bearing Fault Diagnosis.
## author
## 1 Huang S, Cai N, Pacheco PP, Narrandes S, Wang Y, Xu W.
## 2 Huang S, et al.
## 3 Zhou S.
## 4 Zhou S.
## 5 Reynolds E, Callaghan B, Banerjee M.
## 6 Reynolds E, et al.
## link
## 1 https://pubmed.ncbi.nlm.nih.gov/29275361/
## 2 https://pubmed.ncbi.nlm.nih.gov/33891547/
## 3 https://pubmed.ncbi.nlm.nih.gov/33012942/
## 4 https://pubmed.ncbi.nlm.nih.gov/18047717/
## 5 https://pubmed.ncbi.nlm.nih.gov/32836044/
## 6 https://pubmed.ncbi.nlm.nih.gov/37299863/
str(data)
## 'data.frame': 202 obs. of 4 variables:
## $ X_id : chr "665fdaabbf2c72d2a006cf91" "665fdaacbf2c72d2a006cf92" "665fdaacbf2c72d2a006cf93" "665fdaacbf2c72d2a006cf94" ...
## $ title : chr "Applications of Support Vector Machine (SVM) Learning in Cancer Genomics." "Sparse SVM for Sufficient Data Reduction." "SVM-CART for Disease Classification." "SVM clustering." ...
## $ author: chr "Huang S, Cai N, Pacheco PP, Narrandes S, Wang Y, Xu W." "Huang S, et al." "Zhou S." "Zhou S." ...
## $ link : chr "https://pubmed.ncbi.nlm.nih.gov/29275361/" "https://pubmed.ncbi.nlm.nih.gov/33891547/" "https://pubmed.ncbi.nlm.nih.gov/33012942/" "https://pubmed.ncbi.nlm.nih.gov/18047717/" ...
dim(data)
## [1] 202 4
data %>%
count(author) %>%
top_n(10, n) %>%
ggplot(aes(x = reorder(author, n), y = n)) +
geom_bar(stat = "identity", fill = "red", alpha = 0.8) +
theme_minimal() +
labs(title = "Top 10 Penulis Terbanyak",
x = "Penulis",
y = "Jumlah Artikel") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Interpretasi:
Diagram ini menunjukkan bahwa
sebagian besar penulis teratas telah berkontribusi masing-masing 2
artikel, kecuali Bui DD. et al., yang telah berkontribusi 3 artikel,
menjadikannya penulis paling produktif di antara 10 penulis teratas yang
tercantum. Adanya kategori untuk artikel tanpa penulis menunjukkan bahwa
beberapa kontribusi tidak diatributkan kepada individu tertentu.
# Menggabungkan semua judul artikel menjadi satu teks
all_titles <- paste(data$title, collapse = " ")
# Membuat corpus dari teks
corpus <- Corpus(VectorSource(all_titles))
# Membersihkan teks
corpus <- tm_map(corpus, content_transformer(tolower))
## Warning in tm_map.SimpleCorpus(corpus, content_transformer(tolower)):
## transformation drops documents
corpus <- tm_map(corpus, removePunctuation)
## Warning in tm_map.SimpleCorpus(corpus, removePunctuation): transformation drops
## documents
corpus <- tm_map(corpus, removeWords, stopwords("english"))
## Warning in tm_map.SimpleCorpus(corpus, removeWords, stopwords("english")):
## transformation drops documents
corpus <- tm_map(corpus, stripWhitespace)
## Warning in tm_map.SimpleCorpus(corpus, stripWhitespace): transformation drops
## documents
# Membuat word cloud
wordcloud(corpus, max.words = 100, random.order = FALSE, colors = brewer.pal(8, "Dark2"))
Interpretasi:
Gambar tersebut adalah sebuah
word cloud yang menggambarkan kata-kata yang paling sering muncul dalam
sebuah kumpulan teks atau artikel yang terkait dengan “svm” (Support
Vector Machine). Berikut adalah interpretasi dari word cloud tersebut:
Kesimpulan:
Word cloud ini mengilustrasikan bahwa dalam teks
atau artikel yang dianalisis, SVM (Support Vector Machine) sangat sering
dikaitkan dengan topik klasifikasi, pembelajaran mesin, dan analisis
data. Istilah-istilah terkait menunjukkan aplikasi SVM yang luas dalam
berbagai bidang, serta metodologi dan teknik yang digunakan dalam
penerapan SVM.
# Membuat corpus dari judul-judul
corpus1 <- Corpus(VectorSource(data$title))
# Membersihkan teks: mengubah huruf menjadi kecil dan menghilangkan angka dan tanda baca
corpus1 <- tm_map(corpus1, content_transformer(tolower))
## Warning in tm_map.SimpleCorpus(corpus1, content_transformer(tolower)):
## transformation drops documents
corpus1 <- tm_map(corpus1, removeNumbers)
## Warning in tm_map.SimpleCorpus(corpus1, removeNumbers): transformation drops
## documents
corpus1 <- tm_map(corpus1, removePunctuation)
## Warning in tm_map.SimpleCorpus(corpus1, removePunctuation): transformation
## drops documents
# Mengubah corpus menjadi matriks dokumen-istilah
dtm <- DocumentTermMatrix(corpus1)
# Mengubah matriks dokumen-istilah menjadi matriks tf-idf
tfidf <- weightTfIdf(dtm)
# Menentukan jumlah cluster
k <- 5
# Melakukan k-means clustering
set.seed(123)
kmeans_result <- kmeans(tfidf, centers = k)
# Menggabungkan hasil clustering ke data
data$cluster <- as.factor(kmeans_result$cluster)
# Memberikan nama untuk setiap cluster
cluster_names <- c("Medical Image Analysis", "Disease Diagnosis and Classification", "Machine Learning in Healthcare", "Bioinformatics and Genomics", "Drug Discovery and Molecular Modeling")
# Mengubah label cluster menjadi nama cluster
data$cluster_name <- cluster_names[data$cluster]
# Visualisasi hasil clustering dengan nama cluster
ggplot(data, aes(x = cluster_name)) +
geom_bar(fill = "red", alpha = 0.8) +
labs(title = "Jumlah Judul dalam Setiap Cluster",
x = "Cluster",
y = "Jumlah Judul") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotasi label sumbu x agar lebih mudah dibaca
Interpretasi:
Diagram batang berjudul “Jumlah
Judul dalam Setiap Cluster” menunjukkan jumlah judul artikel yang
tergolong dalam masing-masing cluster. Berikut adalah interpretasinya:
Secara keseluruhan, diagram ini menunjukkan bahwa dalam kumpulan
artikel yang dianalisis, topik “Disease Diagnosis and Classification”
sangat populer dan menjadi fokus utama penelitian atau publikasi,
sedangkan topik lainnya mendapat perhatian yang jauh lebih sedikit.