如何在 R 中使用带有 tm 包的自定义词干提取算法?
Ho to use a custom stemming algorithm with tm package in R?
如何将 R 包 tm 中基于搬运工的词干分析器替换为更适合我需要的词干分析器?在这种情况下,它是 cistem (https://github.com/FlorianSchwendinger/cistem/)。
然而,Cistem 将单个单词(或向量)作为参数:
install_github("FlorianSchwendinger/cistem")
library("cistem")
> cistem("arbeiten")
[1] "arbei"
> cistem(c("arbeiten", "Arbeit"))
[1] "arbei" "arbeit"
而内置词干提取器需要整个文档
corpus <- tm_map(corpus, stemDocument, language = "german")
如何将 CISTEM 词干提取器集成到 tm 包中?
感谢任何帮助。
您可以将其他功能与 content_transformer
集成,然后可以在 tm_map
调用中使用。你只需要知道接收函数需要什么。在这种情况下 cistem
需要单词,因此您可以使用 NLP 包中的 words
函数到达那里(加载 tm 库时自动加载)。还需要 unlist
和 lapply
。
* 注:*
cistem
returns 小写的单词,请注意这一点。
library(cistem)
library(tm)
# Some text
txt <- c("Dies ist ein deutscher Text.",
"Dies ist ein anderer deutscher Text.")
# the stemmer based on cistem
my_stemmer <- content_transformer(function(x) {
unlist(lapply(x, function(line) { # unlist the corpus and lapply over the list
paste(cistem(words(line)), collapse = " ")) # paste the words back together.
}
)
})
my_corpus <- VCorpus(VectorSource(txt))
# stem the corpus
my_stemmed_corpus <- tm_map(my_corpus, my_stemmer)
# check output
inspect(my_stemmed_corpus[[1]])
<<PlainTextDocument>>
Metadata: 7
Content: chars: 26
dies ist ein deutsch text.
inspect(my_stemmed_corpus[[2]])
<<PlainTextDocument>>
Metadata: 7
Content: chars: 32
dies ist ein ander deutsch text.
如何将 R 包 tm 中基于搬运工的词干分析器替换为更适合我需要的词干分析器?在这种情况下,它是 cistem (https://github.com/FlorianSchwendinger/cistem/)。 然而,Cistem 将单个单词(或向量)作为参数:
install_github("FlorianSchwendinger/cistem")
library("cistem")
> cistem("arbeiten")
[1] "arbei"
> cistem(c("arbeiten", "Arbeit"))
[1] "arbei" "arbeit"
而内置词干提取器需要整个文档
corpus <- tm_map(corpus, stemDocument, language = "german")
如何将 CISTEM 词干提取器集成到 tm 包中?
感谢任何帮助。
您可以将其他功能与 content_transformer
集成,然后可以在 tm_map
调用中使用。你只需要知道接收函数需要什么。在这种情况下 cistem
需要单词,因此您可以使用 NLP 包中的 words
函数到达那里(加载 tm 库时自动加载)。还需要 unlist
和 lapply
。
* 注:*
cistem
returns 小写的单词,请注意这一点。
library(cistem)
library(tm)
# Some text
txt <- c("Dies ist ein deutscher Text.",
"Dies ist ein anderer deutscher Text.")
# the stemmer based on cistem
my_stemmer <- content_transformer(function(x) {
unlist(lapply(x, function(line) { # unlist the corpus and lapply over the list
paste(cistem(words(line)), collapse = " ")) # paste the words back together.
}
)
})
my_corpus <- VCorpus(VectorSource(txt))
# stem the corpus
my_stemmed_corpus <- tm_map(my_corpus, my_stemmer)
# check output
inspect(my_stemmed_corpus[[1]])
<<PlainTextDocument>>
Metadata: 7
Content: chars: 26
dies ist ein deutsch text.
inspect(my_stemmed_corpus[[2]])
<<PlainTextDocument>>
Metadata: 7
Content: chars: 32
dies ist ein ander deutsch text.