我注意到,将文档添加到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
或适合您用例的整数。