2

我正在尝试使用 python 和textblob构建文本分类模型,该脚本在我的服务器上运行,将来的想法是用户将能够提交他们的文本并将其分类。我正在从 csv 加载训练集:

# -*- coding: utf-8 -*-
import sys
import codecs
sys.stdout = open('yyyyyyyyy.txt',"w");
from nltk.tokenize import word_tokenize
from textblob.classifiers import NaiveBayesClassifier
with open('file.csv', 'r', encoding='latin-1') as fp:
    cl = NaiveBayesClassifier(fp, format="csv")  

print(cl.classify("some text"))

csv 大约有 500 行长(字符串在 10 到 100 个字符之间),NaiveBayesclassifier 需要大约 2 分钟的时间进行训练,然后才能对我的文本进行分类(不确定它需要这么多时间是否正常,也许是我的服务器很慢只有 512mb 内存)。

csv 行示例:

"Oggi alla Camera con la Fondazione Italia-Usa abbiamo consegnato a 140 studenti laureati con 110 e 110 lode i diplomi del Master in Marketing Comunicazione e Made in Italy.",FI-PDL

我不清楚,我无法在 textblob 文档上找到答案,是否有办法“保存”我训练有素的分类器(这样可以节省很多时间),因为现在每次我运行脚本时它都会训练再次分类器。我是文本分类和机器学习的新手,所以如果这是一个愚蠢的问题,我深表歉意。

提前致谢。

4

1 回答 1

6

好的发现泡菜模块是我需要的:)

训练:

# -*- coding: utf-8 -*-
import pickle
from nltk.tokenize import word_tokenize
from textblob.classifiers import NaiveBayesClassifier
with open('file.csv', 'r', encoding='latin-1') as fp:
    cl = NaiveBayesClassifier(fp, format="csv")  

object = cl
file = open('classifier.pickle','wb') 
pickle.dump(object,file)

提取:

import pickle
sys.stdout = open('demo.txt',"w");
from nltk.tokenize import word_tokenize
from textblob.classifiers import NaiveBayesClassifier
cl = pickle.load( open( "classifier.pickle", "rb" ) )
print(cl.classify("text to classify"))
于 2015-11-24T02:09:56.003 回答