我正在对包含大约 135k 文档(每个文档几页)和大约 800k 单词的词汇表的文本语料库进行分析。我注意到大约一半的词汇是频率为 1 或 2 的单词,所以我想删除它们。
所以我正在运行这样的东西:
remove_indices = np.array(index_df[index_df['frequency'] <= 2]['index']).astype(int)
for file_name in tqdm(corpus):
content = corpus[file_name].astype(int)
content = [index for index in content if index not in remove_indices]
corpus[file_name] = np.array(content).astype(np.uint32)
哪里corpus看起来像:
{
'filename1.txt': np.array([43, 177718, 3817, ...., 28181]).astype(np.uint32),
'filename2.txt': ....
}
并且每个单词之前都被编码为正整数索引。
问题在于每次迭代content = [index for index in content if index not in remove_indices]需要进行多少次检查。len(remove_indices) * len(content)这将花费很长时间(tqdm 告诉我 100h+)。关于如何加快速度的任何提示?
到目前为止我试过的
利用如果单词只有频率 1 或 2 的事实,我们可以在它remove_indices从语料库中删除后将其删除。仍然需要永远...
哈士奇WWW
相关分类