Text Mining Basics
Term Frequency
Count Tokens
table counts repeated values. Text mining uses this idea to turn word tokens into term frequencies.
Program
Play the script to choose a term and watch its frequency come out of the token table.
term_frequency.R
Replay: real traced execution (multi-file project)
tokens <- c("r", "data", "r", "model", "data", "data")
terms <- c("r", "data", "model")
target_index <- 2
target <- terms[target_index]
counts <- table(tokens)
frequency <- as.integer(counts[[target]])
label <- paste(target, frequency, sep = "=")
cat(label, "\n", sep = "")
tokens <- c("r", "data", "r", "model", "data", "data")
terms <- c("r", "data", "model")
target_index <- 1
target <- terms[target_index]
counts <- table(tokens)
frequency <- as.integer(counts[[target]])
label <- paste(target, frequency, sep = "=")
cat(label, "\n", sep = "")
tokens <- c("r", "data", "r", "model", "data", "data")
terms <- c("r", "data", "model")
target_index <- 3
target <- terms[target_index]
counts <- table(tokens)
frequency <- as.integer(counts[[target]])
label <- paste(target, frequency, sep = "=")
cat(label, "\n", sep = "")
tokens ← r, data, r, model, data, data
1tokens <- c("r", "data", "r", "model", "data", "data")2terms <- c("r", "data", "model")values this stepr, data, r, model, data, datatokensterms ← r, data, model
1tokens <- c("r", "data", "r", "model", "data", "data")2terms <- c("r", "data", "model")3target_index <- 2values this stepr, data, modeltermstarget_index ← 2
2terms <- c("r", "data", "model")3target_index <- 24target <- terms[target_index]values this step2target_indextarget ← data
3target_index <- 24target <- terms[target_index]5counts <- table(tokens)values this stepdatatargetr, data, modelterms2target_indexcounts ← data=3, model=1, r=2
4target <- terms[target_index]5counts <- table(tokens)6frequency <- as.integer(counts[[target]])values this stepdata=3, model=1, r=2counts6 tokenstokensfrequency ← 3
5counts <- table(tokens)6frequency <- as.integer(counts[[target]])7label <- paste(target, frequency, sep = "=")values this step3frequency3counts[[target]]datatargetlabel ← data=3
6frequency <- as.integer(counts[[target]])7label <- paste(target, frequency, sep = "=")8cat(label, "\n", sep = "")values this stepdata=3labeldatatarget3frequencycat(label, " ", sep = "")
7label <- paste(target, frequency, sep = "=")8cat(label, "\n", sep = "")outputdata=3values this stepdata=3label
tokens ← r, data, r, model, data, data
1tokens <- c("r", "data", "r", "model", "data", "data")2terms <- c("r", "data", "model")values this stepr, data, r, model, data, datatokensterms ← r, data, model
1tokens <- c("r", "data", "r", "model", "data", "data")2terms <- c("r", "data", "model")3target_index <- 1values this stepr, data, modeltermstarget_index ← 1
2terms <- c("r", "data", "model")3target_index <- 14target <- terms[target_index]values this step1target_indextarget ← r
3target_index <- 14target <- terms[target_index]5counts <- table(tokens)values this steprtargetr, data, modelterms1target_indexcounts ← data=3, model=1, r=2
4target <- terms[target_index]5counts <- table(tokens)6frequency <- as.integer(counts[[target]])values this stepdata=3, model=1, r=2counts6 tokenstokensfrequency ← 2
5counts <- table(tokens)6frequency <- as.integer(counts[[target]])7label <- paste(target, frequency, sep = "=")values this step2frequency2counts[[target]]rtargetlabel ← r=2
6frequency <- as.integer(counts[[target]])7label <- paste(target, frequency, sep = "=")8cat(label, "\n", sep = "")values this stepr=2labelrtarget2frequencycat(label, " ", sep = "")
7label <- paste(target, frequency, sep = "=")8cat(label, "\n", sep = "")outputr=2values this stepr=2label
tokens ← r, data, r, model, data, data
1tokens <- c("r", "data", "r", "model", "data", "data")2terms <- c("r", "data", "model")values this stepr, data, r, model, data, datatokensterms ← r, data, model
1tokens <- c("r", "data", "r", "model", "data", "data")2terms <- c("r", "data", "model")3target_index <- 3values this stepr, data, modeltermstarget_index ← 3
2terms <- c("r", "data", "model")3target_index <- 34target <- terms[target_index]values this step3target_indextarget ← model
3target_index <- 34target <- terms[target_index]5counts <- table(tokens)values this stepmodeltargetr, data, modelterms3target_indexcounts ← data=3, model=1, r=2
4target <- terms[target_index]5counts <- table(tokens)6frequency <- as.integer(counts[[target]])values this stepdata=3, model=1, r=2counts6 tokenstokensfrequency ← 1
5counts <- table(tokens)6frequency <- as.integer(counts[[target]])7label <- paste(target, frequency, sep = "=")values this step1frequency1counts[[target]]modeltargetlabel ← model=1
6frequency <- as.integer(counts[[target]])7label <- paste(target, frequency, sep = "=")8cat(label, "\n", sep = "")values this stepmodel=1labelmodeltarget1frequencycat(label, " ", sep = "")
7label <- paste(target, frequency, sep = "=")8cat(label, "\n", sep = "")outputmodel=1values this stepmodel=1label
table
`table(tokens)` counts how often each token appears.
term
`target <- terms[target_index]` chooses which count to inspect.
frequency
`as.integer(counts[[target]])` extracts the chosen count as a number.