我是NLTK和机器学习的新手。我正在使用Python和NLTK朴素贝叶斯分类器。我使用NLTK创建了一个朴素贝叶斯分类器进行文本分类,并将其保存在磁盘上。我还可以在需要时使用此python代码对某些测试数据进行加载:
import pickle
f = open('classifier.pickle')
classifier = pickle.load(f)
f.close()
但我的问题是,无论何时出现新的测试数据,我都必须在内存中反复加载此分类器,因为它具有较大的大小,需要花费大量时间(2-3分钟)才能加载。此外,如果我必须运行相同情感分析程序的两个实例,那将需要双RAM,因为两个程序将分别加载此分类器。我的问题是:是否有任何技术将此分类器存储在内存中,以便在需要时,感性分析程序可以直接从内存中读取它,或者是否有任何其他方法可以使分类器的加载时间最小化。 在此先感谢您的帮助。
答案 0 :(得分:1)
你无法双管齐下。您可以一次保持一个酸洗/去除一个使用较少的RAM,或者您可以使用两倍的RAM存储在内存中,但减少加载时间和磁盘i / o等待时间。
是否使用不同的训练数据训练了两个分类器,或者您是否并行使用相同的分类器?从你使用“两个实例”听起来就像后者,在这种情况下你可能想要查看线程以允许相同的分类器使用两组数据(某些并行性可以通过对某些数据进行分类来实现,然后做一些其他的事情,如结果处理,以允许其他线程分类,重复)。
我的专长来自于开始使用基于NLTK的开源情绪分析系统:https://bitbucket.org/tommyjcarpenter/evopminer。