如何使用 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
我确信您可以通过外部程序传输数据,或者用它来预处理数据。
如果你无论如何都要做标签,德国项目树标记者 http://www.ims.uni-stuttgart.de/projekte/corplex/TreeTagger/同时在标记和词形还原方面做得很好。
编辑:tchrist 正确地提醒我,无论您的目的是什么,如果您实际上正在寻找复数名词的单数表面形式,那么寻求自制的解决方案根本不会解决它。
如果你不这样做,那么 Neo_Me(再次在评论中)似乎找到了一个在 R 中进行词干提取的包:该包snowball http://cran.r-project.org/web/packages/Snowball/index.html(RStem 似乎已停产。AFAICT,Snowball 取代了它。)
当然,这只是波特词干分析器的一个实现或包装。使用风险自负,它会阻止类似的事情wives into wif或类似的东西。
我突然想到,R 有CRAN http://cran.r-project.org/。在那里寻找“引理”让我意识到依赖于Java的包wordnet http://cran.r-project.org/web/packages/wordnet/index.html。似乎有一个getLemma
功能。整个包对你来说可能有点大材小用,但如果你找不到更好的东西,仍然可能让你有所收获。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)