R词根提取后,我无法获得正确的文本。 例如。 “ papper”应显示为“ papper”,而应显示为“ papp”,而“ projekt”则变为“ projek”。
由此产生的频率云显示了这些缩短的版本,这些版本失去了实际含义或变得难以理解。
我该怎么做才能摆脱这个问题?我正在使用最新版本的snowball(0.6.0)。
R代码:
library(tm)
library(SnowballC)
text_example <- c("projekt", "papper", "arbete")
stem_doc <- stemDocument(text_example, language="sv")
stem_doc
Expected:
stem_doc
[1] "projekt" "papper" "arbete"
Actual:
stem_doc
[1] "projek" "papp" "arbet"
答案 0 :(得分:0)
您在此处描述的内容实际上不是词干提取,而是称为lemmatization(有关差异,请参见@Newl的链接)。
要获取正确的引理,可以使用R
软件包UDPipe
,该软件包是UDPipe C++ library的包装。
以下是您如何做自己想做的一个简单示例:
# install.packages("udpipe")
library(udpipe)
dl <- udpipe_download_model(language = "swedish-lines")
#> Downloading udpipe model from https://raw.githubusercontent.com/jwijffels/udpipe.models.ud.2.3/master/inst/udpipe-ud-2.3-181115/swedish-lines-ud-2.3-181115.udpipe to C:/Users/Johannes Gruber/AppData/Local/Temp/RtmpMhaF8L/reprex8e40d80ef3/swedish-lines-ud-2.3-181115.udpipe
udmodel_swed <- udpipe_load_model(file = dl$file_model)
text_example <- c("projekt", "papper", "arbete")
x <- udpipe_annotate(udmodel_swed, x = text_example)
x <- as.data.frame(x)
x$lemma
#> [1] "projekt" "papper" "arbete"