为什么在gensim Dictionary中添加文档时达到200万字时会变慢?

时间:2018-02-09 11:47:28

标签: python dictionary nlp gensim

我注意到在向gensim Dictionary添加文档时,执行时间从达到200万字时会从0.2秒跳到6秒以上。

下面的代码是一个简单的例子。我遍历int并在每次迭代时将数字添加到字典中。

from gensim import corpora
import time



dict_transcript = corpora.Dictionary()


for i in range(1,10000000):

    start_time = time.time()

    doc = [str(i)]

    dict_transcript.add_documents([doc])

    print("Iter "+str(i)+" done in " + str(time.time() - start_time) + ' w/ '+str(len(doc)) + ' words and dico size ' +
          str(len(dict_transcript)))

当达到200万字时我得到以下输出:

Iter 1999999 done in 0.0 w/ 1 words and dico size 1999999
Iter 2000000 done in 0.0 w/ 1 words and dico size 2000000
Iter 2000001 done in 0.0 w/ 1 words and dico size 2000001
Iter 2000002 done in 7.940511226654053 w/ 1 words and dico size 2000001

有什么理由吗?有谁知道如何绕过这个问题? 我在一个大型语料库上使用这个字典,我将其标记为双字母组合,因此我希望字典可以是几百万行。

非常感谢

1 个答案:

答案 0 :(得分:4)

查看gensim documentation

  

class gensim.corpora.dictionary.Dictionary(documents=None, prune_at=2000000)

     

prune_at (int,optional) - 唯一字的总数。字典将保留不超过prune_at字。

为您的用例设置prune_at=None或适当的整数。