我熟悉使用BOW功能进行文本分类,其中我们首先找到语料库词汇表的大小,这些词汇表的大小就是我们的特征向量.对于每个句子/文件及其所有组成单词,我们然后根据该单词/文档中该单词的缺席/存在而放置0/1.
但是,既然我正在尝试使用每个单词的向量表示,那么创建全局词汇是必不可少的吗?
我特别需要使用with open语句来打开文件,因为我需要一起打开几百个文件并使用 K-way merge 来合并它们。我明白,理想情况下我应该将 K 保持在低水平,但我没有预见到这个问题。
现在从头开始不是一个选择,因为我有最后期限。因此,此时,我需要非常快速的 I/O,不会将文件的整个/很大一部分存储在内存中(因为有数百个文件,每个文件约 10MB)。我只需要一次读取一行即可进行 K 路合并。减少内存使用是我现在的主要关注点。
我了解到这with open是最有效的技术,但我无法理解如何将open所有文件放在一个with open语句中。原谅我初学者的无知!
更新:这个问题已经解决了。事实证明,问题根本不在于我如何打开文件。我发现内存使用过多是由于垃圾收集效率低下造成的。with open我根本没用过。我用的是常规的f=open()和f.close(). 垃圾收集挽救了局面。
我们从搜索引擎查询日志数据中提取了特征,并且特征文件(根据Vowpal Wabbit的输入格式)达到90.5 GB.这种巨大尺寸的原因是我们的功能构造中必要的冗余.Vowpal Wabbit声称能够在几个小时内处理数据TB.除此之外,VW使用哈希函数,几乎不需要RAM.但是当我们使用VW对我们的数据进行逻辑回归时,在几分钟内,它会耗尽所有RAM然后停止.这是我们使用的命令 -
vw -d train_output --power_t 1 --cache_file train.cache -f data.model
--compressed --loss_function logistic --adaptive --invariant
--l2 0.8e-8 --invert_hash train.model
Run Code Online (Sandbox Code Playgroud)
train_output是我们想要训练VW的输入文件,train.model是训练后获得的预期模型
欢迎任何帮助!
scalability machine-learning bigdata vowpalwabbit logistic-regression
bigdata ×1
file ×1
merge ×1
nlp ×1
python ×1
python-2.7 ×1
scalability ×1
text ×1
vector ×1
vowpalwabbit ×1
word2vec ×1