Tokenisierung und Entfernen von Stoppwörtern
Zerlegen Sie Text in Tokens und filtern Sie uninformative Wörter mit anti_join() heraus
Tokenisierung und Entfernen von Stoppwörtern ist eine kostenlose R Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des R Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der R Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist Text Mining?
Text Mining (oder Textanalyse) wandelt unstrukturierten Text in strukturierte Daten um, die statistisch analysiert werden können. Das Paket tidytext ermöglicht einen tidy-Ansatz: Jede Zeile enthält ein Token (Wort, Bigramm, Satz), wodurch die Daten mit dplyr und ggplot2 kompatibel sind.
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: Tokenisierung nach Wörtern
unnest_tokens(output, input) zerlegt Text in ein Format mit einer Zeile pro Token. Standardmäßig erfolgt die Tokenisierung nach Wörtern; dabei wird der Text in Kleinbuchstaben umgewandelt und die Zeichensetzung entfernt. Das Argument token unterstützt unter anderem 'words', 'ngrams' und 'sentences'.
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)Der Datensatz stop_words
tidytext enthält die integrierte Tibble stop_words mit 1.149 häufigen englischen Stoppwörtern aus drei Lexika: SMART, Snowball und onix. Diese Wörter („the“, „is“, „and“ …) tragen wenig semantische Bedeutung und werden vor der Analyse üblicherweise entfernt.
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: Stoppwörter entfernen
anti_join(tokens, stop_words, by = 'word') entfernt alle Zeilen, deren word-Wert mit einem Eintrag in stop_words übereinstimmt. Dies ist das Standardmuster von tidytext zum Entfernen von Stoppwörtern – übersichtlich, gut lesbar und leicht erweiterbar.
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)count: Termhäufigkeit
Verwenden Sie nach der Tokenisierung und dem Entfernen der Stoppwörter count(word, sort = TRUE), um die Termhäufigkeit zu berechnen. Dies bildet die Grundlage vieler Text-Mining-Analysen: Die häufigsten aussagekräftigen Wörter charakterisieren die Themen des Dokuments.
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))Benutzerdefinierte Stoppwörter
Domänenspezifische Korpora enthalten häufig hochfrequente Wörter, die irrelevant sind (z. B. „patient“, „doctor“ in medizinischen Notizen). Erstellen Sie eine benutzerdefinierte Stoppwort-Tibble und fügen Sie sie mithilfe von bind_rows() an das integrierte Lexikon an.
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)Bigramm-Tokenisierung
Setzen Sie token = 'ngrams', n = 2, um aufeinanderfolgende Wortpaare (Bigramme) zu erzeugen. Bigramme erfassen Ausdrücke wie „machine learning“ oder „data science“, die bei einer Betrachtung einzelner Wörter nicht erkannt werden, und liefern dadurch einen reichhaltigeren Kontext.
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))Bigramme auf Qualität prüfen
Unter den häufigsten Bigrammen finden sich oft Stoppwortpaare wie „of the“. Trennen Sie das Bigramm mit tidyr::separate() in zwei Spalten, filtern Sie Zeilen heraus, bei denen eines der beiden Wörter ein Stoppwort ist, und fügen Sie die Wörter anschließend wieder zusammen, um aussagekräftige Ausdruckspaare zu erhalten.
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)Wortfrequenzen visualisieren
Stellen Sie Worthäufigkeiten mit ggplot2 als Balkendiagramm dar. Sortieren Sie die Balken mit reorder(word, n) und verwenden Sie coord_flip() für horizontale Beschriftungen. Dies ist eine der aussagekräftigsten Darstellungen im Text Mining.
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()Wortanzahl pro Dokument
Wenn Ihr Korpus mehrere Dokumente enthält, fügen Sie eine Spalte mit der Dokumentkennung hinzu und gruppieren Sie nach doc_id, word, um die Termhäufigkeiten pro Dokument zu berechnen. Dies dient direkt als Grundlage für TF-IDF- und Topic-Model-Analysen.
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))Satz-Tokenisierung
Setzen Sie token = 'sentences', um den Text an Satzgrenzen zu teilen. Token auf Satzebene eignen sich für die Sentimentanalyse (jeden Satz bewerten), die Zusammenfassung (repräsentative Sätze auswählen) und Aufgaben zur Beantwortung von Fragen.
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)Kurze Wissensprüfung
Sie haben ein Korpus mit unnest_tokens() in Wörter tokenisiert und möchten häufige englische Wörter entfernen. Welche Operation erreicht dies mithilfe des integrierten Datensatzes stop_words?
Zusammenfassung: Tokenisierung und Stoppwörter
Wichtigste Erkenntnisse:
unnest_tokens(word, text)wandelt Rohtext in ein Tidy-Format mit einer Zeile pro Wort um- Standard: Kleinbuchstaben, Entfernung der Zeichensetzung; unterstützt
'words','ngrams'und'sentences' stop_wordsist eine integrierte Tibble mit 1.149 häufigen englischen Wörtern aus 3 Lexikaanti_join(tokens, stop_words, by = 'word')entfernt Stoppwörter- Kombinieren Sie dies mit
bind_rows(), um benutzerdefinierte domänenspezifische Stoppwörter hinzuzufügen count(word, sort = TRUE)berechnet die Termhäufigkeit aus Tidy-Tokens- Bigramme:
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()Lerne R mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 43
- Lektionen
- 159
Häufig gestellte Fragen
Ist die Lektion „Tokenisierung und Entfernen von Stoppwörtern“ kostenlos?
Ja — der vollständige Text von „Tokenisierung und Entfernen von Stoppwörtern“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des R Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der R Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Tokenisierung und Entfernen von Stoppwörtern“?
Zerlegen Sie Text in Tokens und filtern Sie uninformative Wörter mit anti_join() heraus Du übst R Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um R Academy zu starten?
Keine Vorkenntnisse erforderlich. R Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Tokenisierung und Entfernen von Stoppwörtern“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser R Academy-Lektion Code schreiben und ausführen?
Ja. Jede R Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Tokenisierung und Entfernen von Stoppwörtern
- TF-IDF- und Termfrequenzanalyse
- Sentimentanalyse in R
- Topic Modeling mit LDA