将复数名词转换为单数名词

时间:2011-08-12 07:29:59

标签: r nlp

如何使用R将复数名词转换为单数名词?我使用tagPOS函数标记每个文本,然后提取所有标记为“NNS”的复数名词。但是,如果我想将这些复数名词转换为单数名词,该怎么办。


library("openNLP")
library("tm")
acq_o <- "Gulf Applied Technologies Inc said it sold its subsidiaries engaged in pipelines and terminal operations for 12.2 mln dlrs. The company said the sale is subject to certain post closing adjustments, which it did not explain. Reuter."

acq = tm_map(Corpus(DataframeSource(data.frame(acq_o))), removePunctuation)
acqTag <- tagPOS(acq)
acqTagSplit = strsplit(acqTag," ")
qq = 0
tag = 0
for (i in 1:length(acqTagSplit[[1]])){
        qq[i] <-strsplit(acqTagSplit[[1]][i],'/')
        tag[i] = qq[i][[1]][2]
}

index = 0
k = 0
for (i in 1:(length(acqTagSplit[[1]]))) { 
    if (tag[i] == "NNS"){
        k = k +1             
        index[k] = i     
    } 
}
index

1 个答案:

答案 0 :(得分:6)

我确信您可以通过外部程序传输数据,或者使用它预处理数据。

如果您正在进行标记,德国项目TreeTagger可以同时进行标记和排版。

编辑:tchrist是正确的提醒我,无论你的目的是什么,如果你真的在寻找复数名词的单一表面形式,那么寻找一个自制的解决方案根本不会削减它。

如果你没有,那么Neo_Me(再次,在评论中)似乎找到了一个源自R的包:snowball包(RStem似乎已经停止.AFAICT,Snowball取代它。)

当然,这只是Porter词干分析器的实现或包装。使用风险自负,它会阻止 wives wif 之类的东西。

我刚刚想到,R有CRAN。寻找“引理”让我意识到依赖于Java的包wordnet。它似乎有一个getLemma函数。整个套餐对你来说可能有点过头了,如果找不到更好的东西,可能还会让你到处找。