【问题标题】:lemmatization of german words (Capital letters and lower case letters)德语单词的词形还原(大写字母和小写字母)
【发布时间】:2021-01-11 09:20:35
【问题描述】:

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

lookup_list <- 
  data.frame(
  cbind(
  c("mache","tust","Tuns","Reisen","genaue","genauer","pflanze","Pflanzen","reise"),
                     c("machen","tuen","Tun","Reise","genau","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"

谁能帮我解决这个小问题?

提前致谢!

【问题讨论】:

    标签: r text-mining capitalization lemmatization tolower


    【解决方案1】:

    如果您想对德语单词或文本进行词形还原,我建议使用 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 markanten Gestalt und seiner Besteigungsgeschichte ist das Matterhorn einer der bekanntesten Berge der Welt。 Für die Schweiz ist es ein Wahrzeichen und eine der meistfotografierten Touristenattraktionen。"

    german_text
    
    x <- udpipe_annotate(ud_model, german_text)
    x <- as.data.frame(x)
    
    # show first 10 results
    head(x[, c("token", "lemma", "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"  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-18
      • 2015-12-10
      • 1970-01-01
      • 2014-11-28
      • 1970-01-01
      • 2016-10-31
      • 2020-08-30
      • 1970-01-01
      相关资源
      最近更新 更多