首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R生成NA值。

R生成NA值。
EN

Stack Overflow用户
提问于 2013-09-13 09:08:16
回答 1查看 2.2K关注 0票数 2

当我试图将stemCompletion应用于一个语料库时,这个函数会生成NA值。

这是我的密码:

代码语言:javascript
复制
my.corpus <- tm_map(my.corpus, removePunctuation) 
my.corpus <- tm_map(my.corpus, removeWords, stopwords("english")) 

(结果之一是:[2584]分区计划)

下一步是盖印语料库,所以:

代码语言:javascript
复制
my.corpus <- tm_map(my.corpus, stemDocument, language="english")
my.corpus <- tm_map(my.corpus, stemCompletion, dictionary=my.corpus_copy, type="first")

但结果是

[2584] NA装置

下一步应该是创建带有事务的关联矩阵,然后是先验规则,但是如果我继续尝试获取规则,检查(规则)函数会给出以下错误:

代码语言:javascript
复制
> inspect(rules)
Errore in UseMethod("inspect", x) : 
no applicable method for 'inspect' applied to an object of class "c('rules','associations')"

有什么问题吗?我认为NA值不能正确地生成关联矩阵,然后生成好的规则。这就是问题所在吗?如果是这样的话,我该怎么解决呢?

这是问题的摘要:

代码语言:javascript
复制
this is an abstract:

my.words = c("β cell","zoning policy regional index brazil","zoning plan","zolpidem  adult","zizyphus spinosa hu")
my.corpus = Corpus(VectorSource(my.words))
my.corpus_copy = my.corpus
my.corpus = tm_map(my.corpus, removePunctuation)
my.corpus = tm_map(my.corpus, removeWords, c("the", stopwords("english"))) 
my.corpus = tm_map(my.corpus, stemDocument, language="english")
my.corpus <- tm_map(my.corpus, stemCompletion, dictionary=my.corpus_copy, type="first")
inspect(my.corpus)
EN

回答 1

Stack Overflow用户

发布于 2015-05-30 09:03:10

如果使用原始语料库作为stemCompletion()字典参数,此时的只是词干过程的近似反转。使用grep(),它在字典中搜索所有单词,其中包含当前词干词,然后使用其中一个单词根据‘类型’完成。

因此,如果词根处理返回的单词不是非词干词的子字符串,则它将失败。例如,stemDocument().中使用的wordStem()返回的“c”(“传递”、“分区”)的词干是c(“交付”、“区域”)。然而,在这两种情况下,词干词都不是非词干词的适当的子串。因此,stemCompletion()将找不到任何替代,并将返回NA。

有许多解决这个问题的方法,包括在从stemCompletion()返回后用词干词替换NAs,或者更好地修改stemCompletion()函数本身。一个简单的方法来修改它,使它保留词干词而不是NA,是有你自己的版本的它stemCompletion_modified():(替换.使用tm包中的stemCompletion()函数的原始代码)

代码语言:javascript
复制
stemCompletion_modified <- function (x, dictionary, type = ...) 
{
  ...
  #possibleCompletions <- lapply(x, function(w) grep(sprintf("^%s", w), dictionary, value = TRUE))
  possibleCompletions <- lapply(x, function(w) ifelse(identical(grep(sprintf("^%s", w), dictionary, value = TRUE),character(0)),w,grep(sprintf("^%s", w), dictionary, value = TRUE)))
  ...
} 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18782455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档