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