Не получается получить правильный текст после анализа текста (шведский) - PullRequest
0 голосов
/ 13 мая 2019

У меня возникли проблемы с получением правильного текста после того, как я остановился на R. Например. «papper» должен отображаться как «papper», но вместо этого отображается как «papp», «projekt» становится «projek».

Созданное таким образом частотное облако показывает эти сокращенные версии, которые теряют фактическое значение или становятся непонятными.

Что я могу сделать, чтобы избавиться от этой проблемы? Я использую последнюю версию снежного кома (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 голосов
/ 13 мая 2019

То, что вы здесь описываете, на самом деле не является основанием, а называется лемматизацией (разницу см. В ссылке @ Newl).

Чтобы получить правильные леммы, вы можете использовать пакет R UDPipe, который является оберткой для библиотеки UDPipe C ++ .

Вот краткий пример того, как вы будете делать то, что вы хотите:

# 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"
...