我是NLTK和机器学习的新手。我在NLTK Naive Bayes Classifier中使用Python。我已经使用NLTK创建了用于文本分类的朴素贝叶斯分类器,并将其保存在磁盘上。我还可以使用以下python代码在需要分类某些测试数据时加载它:
import pickle
f = open('classifier.pickle')
classifier = pickle.load(f)
f.close()
但是我的问题是,每当有新的测试数据出现时,我就必须一次又一次地将该分类器加载到内存中,因为它的大小很大,因此需要花费大量时间(2-3分钟)来加载。另外,如果我必须运行同一情感分析程序的两个实例,则将占用双倍的RAM,因为两个程序将分别加载此分类器。我的问题是:是否有任何技术可以将该分类器存储在内存中,以便在需要时,感性分析程序可以直接从内存中读取分类器,或者是否有其他方法可以最小化分类器的加载时间。
在此先感谢您的帮助。
最佳答案
您不能同时拥有这两种方式。您既可以一次酸洗/去酸洗以使用更少的RAM,也可以将两者都存储在内存中,使用的内存是内存的两倍,但可以减少加载时间和磁盘I / O等待时间。
这两个分类器是使用不同的训练数据进行训练的,还是同时使用同一分类器?从使用“两个实例”的角度来看,这听起来像是后者。在这种情况下,您可能需要研究线程以允许同一分类器处理两组数据(可以通过对某些数据进行分类来实现某些并行性,然后进行其他一些操作,例如结果处理,以允许其他线程进行分类,重复)。
我在这方面的专业知识来自于启动了一个基于NLTK的开源情感分析系统:https://bitbucket.org/tommyjcarpenter/evopminer。
关于python - 将朴素贝叶斯分类器保存在内存中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19425359/