为什么在达到200万个单词时将文档添加到Gensim词典中会很慢



我注意到,将文档添加到Gensim词典中时,执行时间从0.2s跳到6s以上到达200万个单词。

以下代码是一个快速示例。我循环循环int,并在每个iteraion时将数字添加到字典中。

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

有什么理由?有人知道如何绕过这个问题吗?我正在将这个词典用于我将其标记为Bigrams的大型语料库,所以我希望字典将是几百万行。

非常感谢

请查看Gensim文档:

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

prune_at (int,可选( - 唯一单词的总数。字典不仅保留prune_at单词。

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

最新更新