词干分析后无法获得正确的文本(瑞典语)

时间:2019-05-13 08:22:19

标签: r tm stemming snowball

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"

1 个答案:

答案 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"