R或Python中的词形还原器(am, are, is -> be?)

2 投票
1 回答
3928 浏览
提问于 2025-04-18 02:13

我不是计算语言学方面的专家,所以请原谅我在这个话题上的无知。

根据维基百科的解释,词形还原(lemmatisation)是指:

在语言学中,词形还原是将一个词的不同变化形式归为一类,以便可以作为一个整体进行分析的过程。

现在我的问题是,{am, is, are}这个集合中的任何一个词的还原形式应该是“be”吗?如果不是,为什么呢?

第二个问题是:我该如何在R或Python中实现这个功能?我尝试过像这个链接中的方法,但没有一个能把“are”还原成“be”。我想至少在分类文本文件的目的上,这应该是正确的。

我也无法在这里提供的任何演示中做到这一点。

我哪里做错了或者假设错了呢?

1 个回答

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" 

我想你可能知道,正确的词形还原需要了解单词的类别(词性)、上下文中正确的拼写,而且还要看使用的是哪个语料库。

撰写回答