1

我是 NLTK 和机器学习的新手。我将 Python 与 NLTK Naive Bayes Classifier 一起使用。我已经使用 NLTK 创建了一个用于文本分类的朴素贝叶斯分类器并将其保存在磁盘上。我还可以在需要使用此 python 代码对一些测试数据进行分类时加载它:

import pickle
f = open('classifier.pickle')
classifier = pickle.load(f)
f.close()

但我的问题是,每当有新的测试数据出现时,我必须一次又一次地将这个分类器加载到内存中,这需要大量时间(2-3 分钟)才能加载,因为它的大小很大。此外,如果我必须运行同一个情感分析程序的两个实例,这将占用双倍 RAM,因为这两个程序将分别加载此分类器。我的问题是:是否有任何技术可以将此分类器存储在内存中,以便在需要时情感分析程序可以直接从内存中读取它,或者是否有任何其他方法可以最小化分类器的加载时间。在此先感谢您的帮助。

4

1 回答 1

1

你不能两全其美。您可以一次保持酸洗/取消酸洗一个以使用更少的 RAM,或者您可以将两者都存储在内存中,使用两倍的内存,但减少加载时间和磁盘 i/o 等待时间。

这两个分类器是使用不同的训练数据训练的,还是并行使用相同的分类器?从您对“两个实例”的使用来看,这听起来像是后者,在这种情况下,您可能希望研究线程以允许同一个分类器处理两组数据(通过对一些数据进行分类可以实现一些并行性,然后做一些其他的事情,比如结果处理,以允许其他线程进行分类、重复)。

我在这方面的专长来自于启动了一个基于 NLTK 的开源情绪分析系统:https ://bitbucket.org/tommyjcarpenter/evopminer 。

于 2013-10-17T12:52:52.887 回答