我有一个类似的数据集
**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...)