Tokenisasi dan Penghapusan Kata Henti
Pecah teks menjadi token dan saring kata yang tidak informatif dengan anti_join().
Tokenisasi dan Penghapusan Kata Henti adalah pelajaran R Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar R Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus R Academy mencakup 4 pelajaran total.
Apa Itu Penambangan Teks?
Penambangan teks (atau analisis teks) mengubah teks tidak terstruktur menjadi data terstruktur yang dapat dianalisis secara statistik. Paket tidytext memungkinkan pendekatan tidy: setiap baris merupakan satu token (kata, bigram, kalimat), sehingga kompatibel dengan dplyr dan ggplot2.
library(tidytext)
library(dplyr)
# A simple text corpus
text_df <- tibble::tibble(
doc_id = 1:3,
text = c(
'The quick brown fox jumps over the lazy dog.',
'Text mining with R is powerful and fun.',
'Natural language processing enables many applications.'
)
)
cat('Input: ', nrow(text_df), 'documents\n')
cat('Columns:', names(text_df), '\n')unnest_tokens: Tokenisasi Kata
unnest_tokens(output, input) membagi teks menjadi format dengan satu token per baris. Secara bawaan, fungsi ini melakukan tokenisasi berdasarkan kata, mengubahnya menjadi huruf kecil, dan menghapus tanda baca. Argumen token mendukung 'words', 'ngrams', 'sentences', dan lainnya.
library(tidytext)
library(dplyr)
text_df <- tibble::tibble(
doc_id = 1:2,
text = c(
'R is a great language for data analysis.',
'Text mining reveals hidden patterns in documents.'
)
)
# Tokenise into words
tokens <- text_df |>
unnest_tokens(word, text)
cat('Tokens extracted:', nrow(tokens), '\n')
print(tokens)Dataset stop_words
tidytext menyertakan tibble bawaan stop_words yang berisi 1.149 kata umum bahasa Inggris yang tidak informatif dari tiga leksikon: SMART, Snowball, dan onix. Kata-kata ini ("the", "is", "and"…) hanya membawa sedikit makna semantis dan biasanya dihapus sebelum analisis.
library(tidytext)
library(dplyr)
# Inspect the stop_words dataset
cat('Total stop words:', nrow(stop_words), '\n')
cat('Lexicons:', paste(unique(stop_words$lexicon), collapse = ', '), '\n')
# First few stop words from each lexicon
stop_words |>
group_by(lexicon) |>
slice_head(n = 3) |>
print()anti_join: Menghapus Kata Umum
anti_join(tokens, stop_words, by = 'word') menghapus semua baris yang nilai word-nya cocok dengan entri mana pun dalam stop_words. Ini adalah pola standar tidytext untuk menghapus kata umum—bersih, mudah dibaca, dan mudah diperluas.
library(tidytext)
library(dplyr)
text_df <- tibble::tibble(
doc_id = 1:3,
text = c(
'The quick brown fox jumps over the lazy dog',
'A stitch in time saves nine important words',
'To be or not to be that is the question'
)
)
tokens <- text_df |>
unnest_tokens(word, text)
cat('Before removing stop words:', nrow(tokens), '\n')
tokens_clean <- tokens |>
anti_join(stop_words, by = 'word')
cat('After removing stop words:', nrow(tokens_clean), '\n')
print(tokens_clean)Hitung: Frekuensi Istilah
Setelah melakukan tokenisasi dan menghapus kata umum, gunakan count(word, sort = TRUE) untuk menghitung frekuensi istilah. Ini merupakan dasar bagi banyak analisis penambangan teks—kata bermakna yang paling sering muncul menggambarkan topik dokumen.
library(tidytext)
library(dplyr)
# Use Jane Austen's novels from janeaustenr package
# For demo: simulate a small corpus
corpus <- tibble::tibble(
text = c(
'data science involves statistics programming analysis',
'machine learning algorithms data patterns training',
'statistics probability distributions random variables data',
'programming languages python r julia statistics',
'analysis patterns distributions algorithms science'
)
)
word_counts <- corpus |>
unnest_tokens(word, text) |>
anti_join(stop_words, by = 'word') |>
count(word, sort = TRUE)
cat('Top 8 words:\n')
print(head(word_counts, 8))Kata Umum Kustom
Korpus khusus bidang sering berisi kata berfrekuensi tinggi yang tidak relevan (misalnya, "patient" dan "doctor" dalam catatan medis). Buat tibble kata umum kustom, lalu gabungkan dengan leksikon bawaan menggunakan bind_rows().
library(tidytext)
library(dplyr)
# Domain-specific words to remove
custom_stops <- tibble::tibble(
word = c('data', 'analysis', 'r', 'using', 'also'),
lexicon = 'custom'
)
# Combine with built-in stop words
all_stops <- bind_rows(stop_words, custom_stops)
cat('Total stop words after custom:', nrow(all_stops), '\n')
corpus <- tibble::tibble(
text = c(
'Using R for data analysis and machine learning models',
'Statistical data analysis also involves data visualisation'
)
)
clean_tokens <- corpus |>
unnest_tokens(word, text) |>
anti_join(all_stops, by = 'word') |>
count(word, sort = TRUE)
print(clean_tokens)Tokenisasi Bigram
Atur token = 'ngrams', n = 2 untuk melakukan tokenisasi menjadi pasangan kata berurutan (bigram). Bigram menangkap frasa seperti "machine learning" atau "data science" yang tidak dapat ditangkap oleh kata tunggal, sehingga memberikan konteks yang lebih kaya.
library(tidytext)
library(dplyr)
corpus <- tibble::tibble(
doc_id = 1:2,
text = c(
'machine learning and deep learning are powerful techniques',
'natural language processing uses machine learning methods'
)
)
bigrams <- corpus |>
unnest_tokens(bigram, text, token = 'ngrams', n = 2)
cat('Bigrams extracted:', nrow(bigrams), '\n')
print(bigrams)
# Count most common bigrams
bigram_counts <- bigrams |> count(bigram, sort = TRUE)
cat('\nTop bigrams:\n')
print(head(bigram_counts, 5))Menyaring Bigram untuk Menjaga Kualitas
Bigram yang paling sering muncul biasanya mencakup pasangan kata umum seperti "of the". Pisahkan bigram menjadi dua kolom dengan tidyr::separate(), saring baris yang salah satu katanya merupakan kata umum, lalu gabungkan kembali untuk memperoleh pasangan frasa yang bermakna.
library(tidytext)
library(dplyr)
library(tidyr)
corpus <- tibble::tibble(
text = c(
'the field of machine learning and deep learning is growing',
'natural language processing is a subfield of artificial intelligence'
)
)
bigrams_filtered <- corpus |>
unnest_tokens(bigram, text, token = 'ngrams', n = 2) |>
separate(bigram, into = c('word1', 'word2'), sep = ' ') |>
filter(
!word1 %in% stop_words$word,
!word2 %in% stop_words$word
) |>
unite(bigram, word1, word2, sep = ' ') |>
count(bigram, sort = TRUE)
print(bigrams_filtered)Memvisualisasikan Frekuensi Kata
Buat grafik frekuensi kata sebagai diagram batang menggunakan ggplot2. Urutkan batang dengan reorder(word, n) dan gunakan coord_flip() untuk label horizontal. Ini merupakan salah satu hasil yang paling mudah dikomunikasikan dalam penambangan teks.
library(tidytext)
library(dplyr)
library(ggplot2)
corpus <- tibble::tibble(
text = c(
'statistics probability machine learning algorithms patterns',
'data science programming analysis visualisation models',
'machine learning deep learning neural networks patterns',
'probability statistics hypothesis testing distributions',
'algorithms optimisation gradient descent models training'
)
)
top_words <- corpus |>
unnest_tokens(word, text) |>
anti_join(stop_words, by = 'word') |>
count(word, sort = TRUE) |>
slice_head(n = 10)
ggplot(top_words, aes(reorder(word, n), n)) +
geom_col(fill = 'steelblue') +
coord_flip() +
labs(x = 'Word', y = 'Count', title = 'Top 10 Terms') +
theme_minimal()Jumlah Kata per Dokumen
Ketika korpus Anda memiliki beberapa dokumen, tambahkan kolom pengenal dokumen dan kelompokkan berdasarkan doc_id, word untuk menghitung frekuensi istilah per dokumen. Hasil ini dapat langsung digunakan dalam analisis TF-IDF dan model topik.
library(tidytext)
library(dplyr)
docs <- tibble::tibble(
doc_id = c(1, 1, 1, 2, 2, 2, 3, 3, 3),
text = c(
'machine learning models training',
'neural networks deep learning',
'algorithms gradient descent optimisation',
'statistical analysis probability distributions',
'hypothesis testing confidence intervals regression',
'bayesian inference prior posterior likelihood',
'data visualisation plots charts dashboards',
'ggplot2 ggvis plotly interactive graphics',
'colour scales aesthetics themes layers'
)
)
word_counts <- docs |>
unnest_tokens(word, text) |>
anti_join(stop_words, by = 'word') |>
count(doc_id, word, sort = TRUE)
cat('Word-doc pairs:', nrow(word_counts), '\n')
print(head(word_counts, 10))Tokenisasi Kalimat
Atur token = 'sentences' untuk membagi teks pada batas kalimat. Token tingkat kalimat berguna untuk analisis sentimen (menilai setiap kalimat), peringkasan (memilih kalimat yang mewakili), dan tugas penjawaban pertanyaan.
library(tidytext)
library(dplyr)
doc <- tibble::tibble(
id = 1L,
text = paste(
'R is a statistical programming language.',
'It is widely used in data science and machine learning.',
'The tidyverse makes data manipulation easy.',
'Text mining with tidytext is elegant and powerful.'
)
)
sentences <- doc |>
unnest_tokens(sentence, text, token = 'sentences')
cat('Sentences found:', nrow(sentences), '\n')
print(sentences$sentence)Pemeriksaan Singkat
Anda telah melakukan tokenisasi korpus menjadi kata menggunakan unnest_tokens() dan ingin menghapus kata umum bahasa Inggris. Operasi apa yang dapat melakukannya menggunakan dataset bawaan stop_words?
Ringkasan: Tokenisasi dan Kata Umum
Hal-hal penting:
unnest_tokens(word, text)mengubah teks mentah menjadi format rapi dengan satu kata per baris- Bawaan: mengubah menjadi huruf kecil dan menghapus tanda baca; mendukung
'words','ngrams','sentences' stop_wordsadalah tibble bawaan berisi 1.149 kata umum bahasa Inggris dari 3 leksikonanti_join(tokens, stop_words, by = 'word')menghapus kata umum- Gabungkan dengan
bind_rows()untuk menambahkan kata umum kustom sesuai bidang count(word, sort = TRUE)menghitung frekuensi istilah dari token yang rapi- Bigram:
unnest_tokens(bigram, text, token = 'ngrams', n = 2)
library(tidytext)
library(dplyr)
tibble::tibble(text = 'The quick brown fox jumps over the lazy dog') |>
unnest_tokens(word, text) |>
anti_join(stop_words, by = 'word') |>
count(word, sort = TRUE) |>
print()Pertanyaan yang Sering Diajukan
Apakah pelajaran “Tokenisasi dan Penghapusan Kata Henti” gratis?
Ya — teks lengkap “Tokenisasi dan Penghapusan Kata Henti” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus R Academy, upgrade ke CoddyKit PRO. Kursus R Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Tokenisasi dan Penghapusan Kata Henti”?
Pecah teks menjadi token dan saring kata yang tidak informatif dengan anti_join(). Kamu berlatih R Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai R Academy?
Tidak diperlukan pengalaman sebelumnya. R Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Tokenisasi dan Penghapusan Kata Henti” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran R Academy ini?
Ya. Setiap pelajaran R Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Tokenisasi dan Penghapusan Kata Henti
- TF-IDF dan Analisis Frekuensi Istilah
- Analisis Sentimen di R
- Pemodelan Topik dengan LDA