我有一个包含一些句子(波斯语)的arff文件和每个句子前面的一个单词,它在@data部分显示了它的类。我需要使用smo进行分类。问题:
1)是否有必要将句子改为向量?
2)我选择了“字符串到字向量”,但是smo处于非活动状态但仍然不起作用。 (当然还有像朴素贝叶斯这样的其他算法)。
如何在smo中使用此文本数据?
上图是一个非常小的样本文件。
文件样本: https://www.dropbox.com/s/ohpyortve8jbwhe/shoor.arff?dl=0
答案 0 :(得分:0)
首先,您需要将“字符串转换为字向量”过滤器。之后,在分类选项卡上,您需要将目标类更改为“(Nom)类”。这应该是启用朴素贝叶斯和SVM算法。我下载了数据集,效果很好。
您可以按照本教程操作: https://www.youtube.com/watch?v=zlVJ2_N_Olo
希望它可以帮到你
from sklearn.feature_extraction.text import TfidfVectorizer
import arff
from sklearn import svm
import numpy as np
from sklearn.model_selection import train_test_split
data=list(arff.load('shoor.arff'))
text=[]
label=[]
for r in data:
if (len(r)>1):
text.append(r[0])
label.append(r[1])
tfidf = TfidfVectorizer().fit_transform(text)
features = (tfidf * tfidf.T).A
X_train, X_test, y_train, y_test = train_test_split(features, label, test_size=0.5, random_state=0)
clf = svm.SVC(kernel='linear', C=1).fit(X_train, y_train)
clf.score(X_test, y_test)
1.0