R或python中的Lemmatizer(am,are,是 - >是?)

adr*_*rin 2 python nlp r nltk lemmatization

我不是一个[计算]语言学家,所以请原谅我在这个主题中的晚餐假设.

根据维基百科,lemmatisation定义为:

语言学中的Lemmatisation(或词形还原)是将单词的不同变形形式组合在一起的过程,以便将它们作为单个项目进行分析.

现在我的问题是,集合{am,is,是}的任何成员的lemmatised版本应该是"be"吗?如果没有,为什么不呢?

第二个问题:我如何在R或python中获得它?我已经尝试了像这个链接的方法,但是没有它们给出"被"给出"是".我想至少为了对文本文档进行分类,这是有道理的.

我也不能在这里使用任何给定的演示.

我在做什么/假设错了?

jlh*_*ard 6

所以这里有一种方法可以在R中使用西北大学的变形器MorphAdorner.

lemmatize <- function(wordlist) {
  get.lemma <- function(word, url) {
    response <- GET(url,query=list(spelling=word,standardize="",
                                   wordClass="",wordClass2="",
                                   corpusConfig="ncf",    # Nineteenth Century Fiction
                                   media="xml"))
    content <- content(response,type="text")
    xml     <- xmlInternalTreeParse(content)
    return(xmlValue(xml["//lemma"][[1]]))    
  }
  require(httr)
  require(XML)
  url <- "http://devadorner.northwestern.edu/maserver/lemmatizer"
  return(sapply(wordlist,get.lemma,url=url))
}

words <- c("is","am","was","are")
lemmatize(words)
#   is   am  was  are 
# "be" "be" "be" "be" 
Run Code Online (Sandbox Code Playgroud)

我怀疑你知道,正确的词形还原需要知道单词class(词性),语境正确的拼写,还取决于使用哪种语料库.