复数名词如何用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
Run Code Online (Sandbox Code Playgroud)
我确信您可以通过外部程序管理数据,或者使用它预处理数据.
如果您正在进行标记,那么德国项目TreeTagger可以同时完成标记和lemmatising.
编辑:tchrist是正确的提醒我,无论你的目的是什么,如果你真的在寻找复数名词的单一表面形式,那么寻找一个自制的解决方案根本不会削减它.
如果你没有,那么Neo_Me(再次,在评论中)似乎找到了一个源自R的包:包雪球(RStem似乎已经停止.AFAICT,Snowball取代它.)
当然,这只是Porter词干分析器的实现或包装.使用风险自负,它会像妻子一样闯入wif之类的东西.
我刚刚想到,R有CRAN.寻找"引理"让我意识到依赖于Java的包wordnet.它似乎有一个getLemma功能.整个包装对你来说可能有点过头了,但是如果你找不到更好的东西,可能还会让你到处找.
| 归档时间: |
|
| 查看次数: |
5590 次 |
| 最近记录: |