从 NLTK 中的大型令牌中删除垃圾词
Remove junk word from large sized token in NLTK
我无法处理大型文本文件..
场景:文本文件转换为token及其长度为250000的列表
而且我想从中删除垃圾词。为此,我正在使用 nltk 和列表理解。
但对于列表大小 100,其列表理解需要 10 秒。
from nltk.corpus import stopwords,words
strt_time = time.time()
no_junk = [x for x in vocab_temp if x in words.words()]
print(time.time() - strt_time)
9.56
所以对于完整的设置,需要几个小时。
如何优化这个?
这是因为在您的列表理解中,您每次迭代都会调用 words.words()
。由于每次比较都不会改变,因此您可以将其移出循环。
from nltk.corpus import stopwords,words
import nltk
nltk.download('words')
vocab_temp = ['hello world'] * 100
keep_words = words.words()
[x for x in vocab_temp if x in keep_words]
我无法处理大型文本文件..
场景:文本文件转换为token及其长度为250000的列表
而且我想从中删除垃圾词。为此,我正在使用 nltk 和列表理解。
但对于列表大小 100,其列表理解需要 10 秒。
from nltk.corpus import stopwords,words
strt_time = time.time()
no_junk = [x for x in vocab_temp if x in words.words()]
print(time.time() - strt_time)
9.56
所以对于完整的设置,需要几个小时。
如何优化这个?
这是因为在您的列表理解中,您每次迭代都会调用 words.words()
。由于每次比较都不会改变,因此您可以将其移出循环。
from nltk.corpus import stopwords,words
import nltk
nltk.download('words')
vocab_temp = ['hello world'] * 100
keep_words = words.words()
[x for x in vocab_temp if x in keep_words]