【发布时间】:2020-05-18 17:19:32
【问题描述】:
我正在尝试使用 quanteda 包在 R 中进行一些字典分析,
toks_label <- tokens_lookup(toks,
dict,
valuetype = "regex",
levels = 1,
nested_scope = "dictionary")
但是当我运行此代码时,R 返回以下错误消息:
Error: impossible to allocate a vector of size 58.8GB
我发现这是 R 可用内存的问题。我在 Windows 10 上使用 Rstudio(版本 1.2.5042)和 R 4.0.0,我的电脑上有 12GB RAM,硬盘驱动器为 1To几乎是空的(740Gb 可用)。如何强制 R 将硬盘驱动器上的一些空间用作虚拟内存?
我已经尝试了几件事:
1)我已经编辑了项目 .Rprofile ,使其以 memory.limit() 开始,设置为 512000(对于 500Gb,对吗?),并且;
2) 我编辑了我的 .Renviron 文件以包含参数R_MAX_VSIZE=500Gb。
这些都没有奏效...
我还尝试通过字典分析降低我的野心: 1)我尝试在语料库的一个子集上运行完整的字典(34 个键和大约 300 个条目)。没用。 2)我尝试在完整的语料库上运行部分词典并且它有效。 我由此得出结论,我的字典太大了。有没有办法可以分块或迭代它?
【问题讨论】:
-
我怀疑您的字典中有短语模式会产生大量组合。喜欢
* *。您可以使用quanteda:::pattern2list()进行检查。 -
@KoheiWatanabe,感谢您的回答。我试图用整个字典运行
quanteda:::pattern2list(),但它也达到了我的内存限制。然后,我尝试在字典的第一部分运行它,如下所示:quanteda:::pattern2list(dict_topicsSimpler[["LIQUIDITY"]], types = typ, valuetype = "regex", concatenator = " ", levels = 2, case_insensitive = TRUE)但返回了“0 列表”。 -
"List of 0" 表示该部分中没有匹配的模式。您可以检查所有部分以找出问题所在。