如何在weka

时间:2016-12-23 17:25:49

标签: machine-learning nlp weka

我有一个包含一些句子(波斯语)的arff文件和每个句子前面的一个单词,它在@data部分显示了它的类。我需要使用smo进行分类。问题:

1)是否有必要将句子改为向量?

2)我选择了“字符串到字向量”,但是smo处于非活动状态但仍然不起作用。 (当然还有像朴素贝叶斯这样的其他算法)。

如何在smo中使用此文本数据?

enter image description here

上图是一个非常小的样本文件。

文件样本: https://www.dropbox.com/s/ohpyortve8jbwhe/shoor.arff?dl=0

enter image description here

1 个答案:

答案 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