文本挖掘——将文本拆分为单独的观察结果
Text Mining - Splitting Texts Into Individual Observations
我有一个唯一 ID 的数据集,每个 ID 对应一个句子。我想按词分解句子并删除停用词以清理数据以供进一步分析。
Example of dataset:
ID Sentence
1 The quick brown fox
2 Feel free to be
Breaking up sentence:
ID Word
1 The
1 quick
1 brown
1 fox
2 Feel
2 free
2 to
2 be
Removing the stopwords:
ID Word
1 quick
1 brown
1 fox
2 Feel
2 free
我已经在数据框中有了 ID 和句子。什么是分解文本的合适函数,包括删除每个单词后的标点符号(如果有),然后删除带有停用词的行。
A=read.table(text="ID Sentence
1 'The quick brown fox'
2 'Feel free to be'",h=T,stringsAsFactors=F)
(dat=rev(stack(setNames(strsplit(A$Sentence," "),1:2))))
ind values
1 1 The
2 1 quick
3 1 brown
4 1 fox
5 2 Feel
6 2 free
7 2 to
8 2 be
dat[-grep("The|to|be",dat$values),]
ind values
2 1 quick
3 1 brown
4 1 fox
5 2 Feel
6 2 free
或者你可以这样做:
dat[!dat$values%in%stop_words$word,TRUE),]
使用 tidytext
包,您可以执行以下操作。该包有停用词。您需要调用数据。然后,将 unnest_tokens()
应用于文本列。您需要指定两个名称。一个用于目标列,另一个用于输出中的新列。一旦你梳理了句子,你就可以对数据进行子集化。这里我使用了dplyr
包中的filter()
。
library(dplyr)
library(tidytext)
foo <- data.frame(ID = c(1, 2),
Sentence = c("The quick brown fox", "Feel free to be"),
stringsAsFactors = FALSE)
data(stop_words)
unnest_tokens(foo, input = Sentence, output = word) %>%
filter(!word %in% stop_words$word)
ID word
1 1 quick
2 1 brown
3 1 fox
4 2 feel
5 2 free
我有一个唯一 ID 的数据集,每个 ID 对应一个句子。我想按词分解句子并删除停用词以清理数据以供进一步分析。
Example of dataset:
ID Sentence
1 The quick brown fox
2 Feel free to be
Breaking up sentence:
ID Word
1 The
1 quick
1 brown
1 fox
2 Feel
2 free
2 to
2 be
Removing the stopwords:
ID Word
1 quick
1 brown
1 fox
2 Feel
2 free
我已经在数据框中有了 ID 和句子。什么是分解文本的合适函数,包括删除每个单词后的标点符号(如果有),然后删除带有停用词的行。
A=read.table(text="ID Sentence
1 'The quick brown fox'
2 'Feel free to be'",h=T,stringsAsFactors=F)
(dat=rev(stack(setNames(strsplit(A$Sentence," "),1:2))))
ind values
1 1 The
2 1 quick
3 1 brown
4 1 fox
5 2 Feel
6 2 free
7 2 to
8 2 be
dat[-grep("The|to|be",dat$values),]
ind values
2 1 quick
3 1 brown
4 1 fox
5 2 Feel
6 2 free
或者你可以这样做:
dat[!dat$values%in%stop_words$word,TRUE),]
使用 tidytext
包,您可以执行以下操作。该包有停用词。您需要调用数据。然后,将 unnest_tokens()
应用于文本列。您需要指定两个名称。一个用于目标列,另一个用于输出中的新列。一旦你梳理了句子,你就可以对数据进行子集化。这里我使用了dplyr
包中的filter()
。
library(dplyr)
library(tidytext)
foo <- data.frame(ID = c(1, 2),
Sentence = c("The quick brown fox", "Feel free to be"),
stringsAsFactors = FALSE)
data(stop_words)
unnest_tokens(foo, input = Sentence, output = word) %>%
filter(!word %in% stop_words$word)
ID word
1 1 quick
2 1 brown
3 1 fox
4 2 feel
5 2 free