set.seed(1234)
n <- 100
x <- runif(n)+5
T1 <- 1
(ML <- nlm(f, p=c(0.01,0.17)))
我一直在讨论这部分程序最后一行的主要问题。文本文件可能长约7,000,000字。目前,字数/长度约为200,000。当我将文本文件剪切到单词长度变为40,000左右时,程序可以正常工作。反正有没有解决这个内存限制?谢谢你的帮助。如果我只是继续删除部分文本直到内存错误消失,那么我在程序后面部分得到的结果似乎真的很糟糕。
$minimum
[1] 227.3527
$estimate
[1] 2.420050e-07 1.768907e-01
$gradient
[1] 259.0327 -308.4809
$code
[1] 2
$iterations
[1] 12
答案 0 :(得分:2)
我假设引发异常的行:
Bigram = np.zeros([len(words),len(words)])
如果len(words)
为200,000,则矩阵的大小为200,000 ^ 2个整数。假设int64
,这需要320 GB的内存。
假设大多数条目将保持为零,稀疏矩阵可能会有所帮助。例如,scipy's sparse matrices。在计算关节对的情况下,这个片段可能会有所帮助:
from scipy.sparse.dok import dok_matrix
Bigrams = dok_matrix((len(words), len(words)))
# Bigrams[i, j] += 1
关于代码本身,第一部分可能在scikit-learn text vectorizers处具有相对类似的实现。