gpt4 book ai didi

r - 在 R 中使用 tm 的语料库功能处理大数据

转载 作者:行者123 更新时间:2023-12-04 11:14:09 28 4
gpt4 key购买 nike

我正在尝试使用 tm 对 R 中的大数据进行文本挖掘.

我经常遇到内存问题(例如 can not allocation vector of size.... )并使用已建立的方法来解决这些问题,例如

  • 使用 64 位 R
  • 尝试不同的操作系统(Windows、Linux、Solaris 等)
  • 设置 memory.limit()达到最大值
  • 确保服务器(有)上有足够的 RAM 和计算可用
  • 自由使用 gc()
  • 分析瓶颈的代码
  • 将大型操作分解为多个较小的操作

  • 但是,当尝试运行 Corpus 时在包含一百万个左右文本字段的向量上,我遇到了与平常略有不同的内存错误,我不确定如何解决该问题。错误是:
    > ds <- Corpus(DataframeSource(dfs))
    Error: memory exhausted (limit reached?)

    我可以(也应该)运行 Corpus在来自该源数据帧的行块上递增,然后组合结果?有没有更有效的方法来运行它?

    会产生这个错误的数据大小取决于运行它的计算机,但是如果你拿内置的 crude数据集并复制文档直到它足够大,然后您可以复制错误。

    更新

    我一直在尝试合并较小的语料库,即
    test1 <- dfs[1:10000,]
    test2 <- dfs[10001:20000,]

    ds.1 <- Corpus(DataframeSource(test1))
    ds.2 <- Corpus(DataframeSource(test2))

    虽然我没有成功,但我确实发现了 tm_combine这是 supposed to solve this exact problem .唯一的问题是,出于某种原因,我的 R 3.1.1 的 64 位版本带有最新版本的 tm找不到函数 tm_combine .也许它出于某种原因从包中删除了?我正在调查...
    > require(tm)
    > ds.12 <- tm_combine(ds.1,ds.2)
    Error: could not find function "tm_combine"

    最佳答案

    不知道是不是tm_combine已被弃用或为什么在 tm 中找不到它命名空间,但我确实通过使用 Corpus 找到了解决方案在较小的数据帧块上然后组合它们。

    This StackOverflow 帖子有一个简单的方法来做到这一点,而无需 tm_combine :

    test1 <- dfs[1:100000,]
    test2 <- dfs[100001:200000,]

    ds.1 <- Corpus(DataframeSource(test1))
    ds.2 <- Corpus(DataframeSource(test2))

    #ds.12 <- tm_combine(ds.1,ds.2) ##Error: could not find function "tm_combine"
    ds.12 <- c(ds.1,ds.2)

    这给了你:

    ds.12


    <<VCorpus (documents: 200000, metadata (corpus/indexed): 0/0)>>

    很抱歉在问之前没有自己弄清楚这一点。我尝试了其他组合对象的方法,但失败了。

    关于r - 在 R 中使用 tm 的语料库功能处理大数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25533594/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com