使用TFIDF的Python文本分类



我有一个类似的数据集

**ID**        **Text**                                     **Category**
1     jake loves me more than john loves me               Romance
2     july likes me more than robert loves me             Friendship
3     He likes videogames more than baseball              Interest

我需要使用以上数据作为文本分类的训练数据,稍后当我通过一个新句子时,该句子需要从上表中提供的上述类别中分类为一个类别。

首先,我对上面的数据集进行了TFIDF(术语频率逆文档频率),如下所示

mydoclist = []
#below im only taking my field 'Text' as input 
f = open('C:sample4.csv', "r")
reader = csv.reader(f) 
for row in reader:   
models.append(row)
f.close()
tf = TfidfVectorizer(tokenizer=lambda doc: doc,lowercase=False, analyzer='word',  min_df = 0, stop_words = 'english')
tfidf_matrix =  tf.fit_transform(mydoclist)
feature_names = tf.get_feature_names()
tfs = tf.fit_transform(mydoclist)
#storing my tfidf matrix
import pickle
with open("x_result.pkl", 'wb') as handle:
pickle.dump(tfidf_matrix, handle)

我想知道如何使用我计算的tfidf矩阵标记上述数据集中的类别?此外,稍后我如何使用上述数据对任何新数据进行分类?

您可以将libsvm与python一起使用。

1.首先要做的是通过尊重libsvm提供的文件格式来表示文档。

2.然后,您读取数据:

from libsvm import *
prob = svm_problem(your data…)

3.您设置了svm参数

param = svm_parameter(kernel_type …)

4.训练模型

m = svm_model(prob, param)

5.然后你测试新文档的模型

m.predict(your new data...)

最新更新