首页 文章

tm中stemCompletion的最大合理大小?

提问于
浏览
6

我有一个26个纯文本文件的语料库,每个文件在12 - 148kb之间,总共1.2Mb . 我在Windows 7笔记本电脑上使用R.

我做了所有正常的清理工作(停用词,自定义停用词,小写,数字),并希望完成词干 . 我使用原始语料库作为字典,如示例中所示 . 我尝试了几个简单的向量,以确保它可以工作(大约5个术语),它确实很快 .

exchanger <- function(x) stemCompletion(x, budget.orig)
budget <- tm_map(budget, exchanger)

它从昨天下午4点开始工作!在诊断中的R Studio中,请求日志显示具有不同请求编号的新请求 . 任务管理器使用一些内存显示它,但不是一个疯狂的数量 . 我不想阻止它,因为它几乎就在那里?关于如何检查进度的任何其他想法 - 不幸的是,这是一个不稳定的语料库?关于应该花多长时间的想法?我想过使用dtm名称向量作为字典,切断最频繁(或高tf-idf),但我不愿意杀死这个过程 .

这是一台普通的Windows 7笔记本电脑,还有很多其他东西在运行 .

这个语料库对于stemCompletion来说太大了吗?没有转向Python,有没有更好的方法来完成stemCompletion或lemaltize副词 - 我的网络搜索没有产生任何答案 .

2 回答

  • 1

    没有重现问题的数据,我无法给出明确的答案,但我猜测瓶颈来自 stemCompletion 源代码中的以下行:

    possibleCompletions <- lapply(x, function(w) grep(sprintf("^%s", w), dictionary, value = TRUE))
    

    在此之后,鉴于您保持完成启发式默认为“普遍”,这种情况会发生:

    possibleCompletions <- lapply(possibleCompletions, function(x) sort(table(x), decreasing = TRUE))
    structure(names(sapply(possibleCompletions, "[", 1)), names = x)
    

    第一行循环遍历语料库中的每个单词,并根据您的词典检查它是否可能完成 . 我猜你的语料库里有很多次出现的词 . 这意味着函数被多次调用只是为了给出相同的响应 . 可能更快的版本(取决于重复的单词数量和重复次数)看起来像这样:

    y <- unique(x)
    
    possibleCompletions <- lapply(y, function(w) grep(sprintf("^%s", w), dictionary, value = TRUE))
    
    possibleCompletions <- lapply(possibleCompletions, function(x) sort(table(x), decreasing = TRUE))
    
    z <- structure(names(sapply(possibleCompletions, "[", 1)), names = y)
    
    z[match(x, names(z))]
    

    所以它只循环 x 的唯一值而不是 x 的每个值 . 要创建此修订版本的代码,您需要从CRAN下载源并修改该函数(我在R文件夹中的completion.R中找到它) .

    或者您可能只想使用Python来实现这个目标 .

  • 0

    Cristina,跟随Schaun我建议你只使用一个独特的词来应用stemcompletion . 我的意思是,你的PC很容易用你独特的单词完成你的所有语料库中的完成(所有重复) .

    • 首先,从你的语料库中获取独特的单词 . 例如:

    唯一$ text < - 唯一(预算)

    • 他们,您可以从原始文本中获取唯一的单词

    unique_budget.orig < - unique(budget.orig)

    • 现在,您可以为您的unieque单词应用词干完成

    unique $ completition < - budget%>%stemCompletion(dictionary = unique_budget.orig)

    • 现在,您有一个包含语料库中所有单词及其完成的对象 . 您只需要在语料库和对象之间应用唯一的联接 . 确保两个对象在没有completition的情况下具有相同的变量名称:这个gonne是关键 .

    这将减少您的PC必须执行的操作次数 .

相关问题