【问题标题】:Lemmatizer in R or python (am, are, is -> be?) [closed]R或python中的Lemmatizer(am,are,is -> be?)[关闭]
【发布时间】:2014-05-24 11:59:27
【问题描述】:

我不是 [计算] 语言,所以请原谅我在这个话题上的愚蠢。

根据维基百科,词形还原定义为:

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

现在我的问题是,集合 {am, is, are} 的任何成员的词形还原版本是否应该是“be”?如果没有,为什么不呢?

第二个问题:我如何在 R 或 python 中得到它?我已经尝试过像this 链接这样的方法,但没有一个给出“be”给定“are”。我猜至少出于对文本文档进行分类的目的,这是有道理的。

对于任何给定的演示 here,我也无法做到这一点。

我在做什么/假设错了?

【问题讨论】:

  • 我不明白为什么你认为这个问题太笼统,而我问的问题很具体,而且这里给出的答案也让我满意。我不确定问题出在 R 中的 Wordnet 接口之类的工具上,还是我从词形还原的定义中推断出了一些错误。

标签: python r nlp nltk lemmatization


【解决方案1】:

因此,这是一种在 R 中使用 Northwestern University lemmatizer 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" 

我怀疑您知道,正确的词形还原需要了解词类(词性)、上下文正确的拼写,并且还取决于所使用的语料库。

【讨论】:

  • 这需要太长时间了
  • 这不再起作用 错误:1:开始和结束标签不匹配:HR 第 1 行和正文 2:开始和结束标签不匹配:HR 第 1 行和 html 3:标签正文中的数据过早结束第 1 4 行:标记 html 第 1 行中的数据过早结束
猜你喜欢
  • 1970-01-01
  • 2019-02-14
  • 2011-02-12
  • 2012-10-09
  • 2022-12-28
  • 1970-01-01
  • 2018-08-22
  • 2022-12-27
  • 2022-11-12
相关资源
最近更新 更多