我有一个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 回答
没有重现问题的数据,我无法给出明确的答案,但我猜测瓶颈来自
stemCompletion
源代码中的以下行:在此之后,鉴于您保持完成启发式默认为“普遍”,这种情况会发生:
第一行循环遍历语料库中的每个单词,并根据您的词典检查它是否可能完成 . 我猜你的语料库里有很多次出现的词 . 这意味着函数被多次调用只是为了给出相同的响应 . 可能更快的版本(取决于重复的单词数量和重复次数)看起来像这样:
所以它只循环
x
的唯一值而不是x
的每个值 . 要创建此修订版本的代码,您需要从CRAN下载源并修改该函数(我在R文件夹中的completion.R中找到它) .或者您可能只想使用Python来实现这个目标 .
Cristina,跟随Schaun我建议你只使用一个独特的词来应用stemcompletion . 我的意思是,你的PC很容易用你独特的单词完成你的所有语料库中的完成(所有重复) .
唯一$ text < - 唯一(预算)
unique_budget.orig < - unique(budget.orig)
unique $ completition < - budget%>%stemCompletion(dictionary = unique_budget.orig)
这将减少您的PC必须执行的操作次数 .