r quanteda 顶级特征提取返回修饰词
r quanteda top features extraction returning modified words
我曾尝试使用 quanteda 提取顶级特征,但结果是修改过的词,即 'faulti' 而不是 'faulty'。这应该是预期的结果吗?
我已经尝试在原始数据集中搜索最重要的特征关键字,但没有像预期的那样匹配。
编辑:如果我为函数 dfm() 设置选项 stem=FALSE,则关键字恢复为正常词。
library(quanteda)
corpus1 = corpus(as.character(training_data$Elec_rmk))
kwic(corpus1, 'faulty')
#[text25701, 4] Convertible roof sometime | faulty | . SD card missing.
#[text25701, 22] unavailable). Pilot lamp | faulty | .
dfm1 <- dfm(
corpus1,
ngrams = 1,
remove = stopwords("english"),
remove_punct = TRUE,
remove_numbers = TRUE,
stem = TRUE)
tf1 <- topfeatures(dfm1, n = 10)
tf1
# key words were modified/truncated words?
#faulti malfunct light damag miss cover rear loos lamp plate
# 562 523 454 337 331 325 295 259 250 238
library(stringr)
sum(str_detect(training_data$Elec_rmk, 'faulti')) # 0
sum(str_detect(training_data$Elec_rmk, 'faulty')) # 495
dfm
默认情况下不阻止。但是您将 stem 选项设置为 TRUE hency "faulti"。但是正如您在编辑备注中提到的那样,将此设置为 FALSE(或省略此设置)将 return 无词干。
但您似乎误解了 str_detect
return 和 topfeatures
return 的含义。 str_detect
只检测搜索字符串是否出现在句子中,但不检测出现了多少次。你的总和只计算句子中单词 (495) 的出现。 topfeatures
计算单词在文本中实际出现的次数 (562))。
查看以下示例以了解不同之处:
# 1 line of text (paragraph)
my_text <- "I have two examples of two words in this text. Isn't having two words fun?"
topfeatures(dfm(my_text, remove = stopwords("english"), remove_punct = TRUE), n = 2)
two words
3 2
sum(str_detect(my_text, "two"))
[1] 1
# 2 sentences.
my_text2 <- c("I have two examples of two words in this text.", "Isn't having two words fun?")
topfeatures(dfm(my_text2, remove = stopwords("english"), remove_punct = TRUE), n = 2)
two words
3 2
sum(str_detect(my_text2, "two"))
[1] 2
对于第一个例子,topfeatures
returns 3 for the word "two", str_detect
just returns 1.只有1个向量/ 供 str_detect
查看的一段文字。
对于第二个示例,topfeatures
再次 returns 3 表示单词 "two"。 str_detect
现在 returns 2,向量中有 2 个值,因此它在两个句子中都检测到单词 "two",但它仍然缺少实际的 3 个值。
我曾尝试使用 quanteda 提取顶级特征,但结果是修改过的词,即 'faulti' 而不是 'faulty'。这应该是预期的结果吗?
我已经尝试在原始数据集中搜索最重要的特征关键字,但没有像预期的那样匹配。
编辑:如果我为函数 dfm() 设置选项 stem=FALSE,则关键字恢复为正常词。
library(quanteda)
corpus1 = corpus(as.character(training_data$Elec_rmk))
kwic(corpus1, 'faulty')
#[text25701, 4] Convertible roof sometime | faulty | . SD card missing.
#[text25701, 22] unavailable). Pilot lamp | faulty | .
dfm1 <- dfm(
corpus1,
ngrams = 1,
remove = stopwords("english"),
remove_punct = TRUE,
remove_numbers = TRUE,
stem = TRUE)
tf1 <- topfeatures(dfm1, n = 10)
tf1
# key words were modified/truncated words?
#faulti malfunct light damag miss cover rear loos lamp plate
# 562 523 454 337 331 325 295 259 250 238
library(stringr)
sum(str_detect(training_data$Elec_rmk, 'faulti')) # 0
sum(str_detect(training_data$Elec_rmk, 'faulty')) # 495
dfm
默认情况下不阻止。但是您将 stem 选项设置为 TRUE hency "faulti"。但是正如您在编辑备注中提到的那样,将此设置为 FALSE(或省略此设置)将 return 无词干。
但您似乎误解了 str_detect
return 和 topfeatures
return 的含义。 str_detect
只检测搜索字符串是否出现在句子中,但不检测出现了多少次。你的总和只计算句子中单词 (495) 的出现。 topfeatures
计算单词在文本中实际出现的次数 (562))。
查看以下示例以了解不同之处:
# 1 line of text (paragraph)
my_text <- "I have two examples of two words in this text. Isn't having two words fun?"
topfeatures(dfm(my_text, remove = stopwords("english"), remove_punct = TRUE), n = 2)
two words
3 2
sum(str_detect(my_text, "two"))
[1] 1
# 2 sentences.
my_text2 <- c("I have two examples of two words in this text.", "Isn't having two words fun?")
topfeatures(dfm(my_text2, remove = stopwords("english"), remove_punct = TRUE), n = 2)
two words
3 2
sum(str_detect(my_text2, "two"))
[1] 2
对于第一个例子,topfeatures
returns 3 for the word "two", str_detect
just returns 1.只有1个向量/ 供 str_detect
查看的一段文字。
对于第二个示例,topfeatures
再次 returns 3 表示单词 "two"。 str_detect
现在 returns 2,向量中有 2 个值,因此它在两个句子中都检测到单词 "two",但它仍然缺少实际的 3 个值。