2016-12-23 249 views
1

我有一個arff文件,其中包含一些句子(波斯語)和每個句子前的一個單詞,它顯示了它在@data部分的類。我需要使用smo進行分類。問題:如何在weka中使用svm(smo)的字符串數據

1)是否有必要將句子更改爲向量?

2)我選擇了「字符串到單詞向量」,但smo無效並且仍然不起作用。 (當然還有像樸素貝葉斯這樣的其他算法)。

如何將這些文本數據與smo一起使用?

enter image description here

上面的照片是一個非常小的樣本文件。

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

enter image description here

回答

0

首先,您需要申請 「串詞矢量」 過濾器。之後,在分類選項卡上,您需要將目標類更改爲「(Nom)class」。這足以支持樸素貝葉斯和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

+0

我解決了這個問題。現在它返回答案。但是當我使用「字符串到單詞向量」時,由於句子是波斯語,因此字母變成上圖中的形狀。 Weka認識到這些形狀在波斯語中是真實的詞彙嗎?我的意思是它對答案有任何影響嗎? – sara

+0

如何將這些形狀更改爲波斯語中的真實單詞? – sara

+0

嗨,我的猜測是肯定的。但是weka是一個「黑盒子」,所以測試它有點困難。如何實現一個簡單的Python和scipy來做到這一點?我可以在我的東西有一個代碼。如果你願意,我可以與你分享代碼;) –

相關問題