如何正确使用stemDocument?
How is the correct use of stemDocument?
我已经看了this and 题,但是还是没看懂stemDocument
在tm_map
中的用法。让我们看这个例子:
q17 <- VCorpus(VectorSource(x = c("poder", "pode")),
readerControl = list(language = "pt",
load = TRUE))
lapply(q17, content)
$`character(0)`
[1] "poder"
$`character(0)`
[1] "pode"
如果我使用:
> stemDocument("poder", language = "portuguese")
[1] "pod"
> stemDocument("pode", language = "portuguese")
[1] "pod"
它确实有效!但是如果我使用:
> q17 <- tm_map(q17, FUN = stemDocument, language = "portuguese")
> lapply(q17, content)
$`character(0)`
[1] "poder"
$`character(0)`
[1] "pode"
没用。为什么会这样?
很遗憾,您遇到了错误。 stemDocument
如果您在传递语言时有效:
stemDocument(x = c("poder", "pode"), language = "pt")
[1] "pod" "pod"
但是在tm_map
中使用这个函数时,函数从stemDocument.PlainTextDocument
开始。在此函数中,将根据您在函数中提供的语言检查语料库的语言。这工作正常。但是在这个函数的最后,所有的东西都传递给了函数stemDocument.character
,但是没有语言部分。在 stemDocument.character
中,默认语言指定为英语。因此,在 tm_map
调用(或 DocumentTermMatrix
)中,您提供的语言将恢复为英语,并且词干提取无法正常工作。
解决方法是使用 quanteda 包:
library(quanteda)
my_dfm <- dfm(x = c("poder", "pode"))
my_dfm <- dfm_wordstem(my_dfm, language = "pt")
my_dfm
Document-feature matrix of: 2 documents, 1 feature (0.0% sparse).
2 x 1 sparse Matrix of class "dfm"
features
docs pod
text1 1
text2 1
由于您使用的是葡萄牙语,我建议您使用 quanteda 和/或 udpipe 包。这两个包在处理非英语语言方面都比 tm 好得多。
我已经看了this and stemDocument
在tm_map
中的用法。让我们看这个例子:
q17 <- VCorpus(VectorSource(x = c("poder", "pode")),
readerControl = list(language = "pt",
load = TRUE))
lapply(q17, content)
$`character(0)`
[1] "poder"
$`character(0)`
[1] "pode"
如果我使用:
> stemDocument("poder", language = "portuguese")
[1] "pod"
> stemDocument("pode", language = "portuguese")
[1] "pod"
它确实有效!但是如果我使用:
> q17 <- tm_map(q17, FUN = stemDocument, language = "portuguese")
> lapply(q17, content)
$`character(0)`
[1] "poder"
$`character(0)`
[1] "pode"
没用。为什么会这样?
很遗憾,您遇到了错误。 stemDocument
如果您在传递语言时有效:
stemDocument(x = c("poder", "pode"), language = "pt")
[1] "pod" "pod"
但是在tm_map
中使用这个函数时,函数从stemDocument.PlainTextDocument
开始。在此函数中,将根据您在函数中提供的语言检查语料库的语言。这工作正常。但是在这个函数的最后,所有的东西都传递给了函数stemDocument.character
,但是没有语言部分。在 stemDocument.character
中,默认语言指定为英语。因此,在 tm_map
调用(或 DocumentTermMatrix
)中,您提供的语言将恢复为英语,并且词干提取无法正常工作。
解决方法是使用 quanteda 包:
library(quanteda)
my_dfm <- dfm(x = c("poder", "pode"))
my_dfm <- dfm_wordstem(my_dfm, language = "pt")
my_dfm
Document-feature matrix of: 2 documents, 1 feature (0.0% sparse).
2 x 1 sparse Matrix of class "dfm"
features
docs pod
text1 1
text2 1
由于您使用的是葡萄牙语,我建议您使用 quanteda 和/或 udpipe 包。这两个包在处理非英语语言方面都比 tm 好得多。