德语单词的词形还原大写字母和小写字母

问题描述

我想对德语单词列表进行词形还原,包括名词和动词。这里的问题在于,这意味着单词以大写字母开头,而其他单词以小写字母开头。到目前为止,我一直在使用查找列表。在这里,样本

lookup_list <- 
  data.frame(
  cbind(
  c("mache","tust","Tuns","Reisen","genaue","genauer","pflanze","Pflanzen","reise"),c("machen","tuen","Tun","Reise","genau","pflanzen","Pflanze","reisen")
)
)
names(lookup_list) <- c("word","lemma")

Text2Lemmatize <- "mache tust Tuns Reisen genaue genauer pflanze Pflanzen reise"

问题是 '''lemmatize()''' 忽略了列表中以大写字母开头的单词。

lemmatize_strings(Text2Lemmatize,lookup_list)

> lemmatize_strings(Text2Lemmatize,lookup_list)
[1] "machen tuen Tuns Reisen genau genau pflanzen Pflanzen reisen"

有人能帮我解决这个小问题吗?

提前致谢!

解决方法

如果您想对德语单词或文本进行词形还原,我建议您使用 udpipe。

library(udpipe)

# download german ud model
ud_model <- udpipe_download_model("german")
ud_model <- udpipe_load_model(ud_model)

Text2Lemmatize <- "mache tust Tuns Reisen genaue genauer pflanze Pflanzen reise"

x <- udpipe_annotate(ud_model,Text2Lemmatize)
x <- as.data.frame(x)

x[,c("token","lemma","upos")]

     token            lemma upos
1    mache             mach PRON
2     tust            tusen VERB
3     Tuns             Twir PRON
4   Reisen     Reise|Reisen NOUN
5   genaue            genau VERB
6  genauer            genau  ADJ
7  pflanze           pflanz  ADJ
8 Pflanzen Pflanze|Pflanzen NOUN
9    reise           reisen VERB

当它是来自维基百科的实际文本时效果更好:

“Das Matterhorn ist einer der höchsten Berge der Alpen。Wegen seiner 马特宏峰格式塔与围网 世界上的一切。 Für die Schweizist es ein Wahrzeichen 和 eine der meistfotografierten Touristenattraktionen。"

german_text

x <- udpipe_annotate(ud_model,german_text)
x <- as.data.frame(x)

# show first 10 results
head(x[,"upos")],10)
                   token                 lemma  upos
1                    Das                   der   DET
2             Matterhorn            Matterhorn PROPN
3                    ist                  sein   AUX
4                  einer                   ein  PRON
5                    der                   der   DET
6               höchsten                  hoch   ADJ
7                  Berge                  Berg  NOUN
8                    der                   der   DET
9                  Alpen                   Alp  NOUN
10                     .                     . PUNCT

如果您需要词干,请使用 quanteda。对于非英语语言,它的效果要好得多。

library(quanteda)

my_toks <- tokens(Text2Lemmatize)
my_toks_stemmed <- tokens_wordstem(my_toks,language = "de")
my_toks_stemmed
Tokens consisting of 1 document.
text1 :
[1] "mach"   "tust"   "Tun"    "Reis"   "genau"  "genau"  "pflanz" "Pflanz" "reis"