2016-12-23 20 views
1

私はいくつかの文(ペルシア語)を含むarffファイルと@data部分のクラスを示す各文の前に単語を持っています。私は分類のためにsmoを使用する必要があります。質問:wekaのsvm(smo)に文字列データを使用する方法

1)文章をベクトルに変更する必要がありますか?

2)「文字列から単語へのベクトル」を選択しましたが、smoは非アクティブであり、それでも動作しません。 (もちろんnaive bayのような他のアルゴリズムもあります)。

このテキストデータをsmoでどのように使用できますか?

enter image description here

上の写真は、非常に小さなサンプルファイルです。

ファイルのサンプル: https://www.dropbox.com/s/ohpyortve8jbwhe/shoor.arff?dl=0

enter image description here

答えて

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

+0

役立つことを願って。今度は答えを返します。しかし、私が "文字列を単語ベクトル"にすると、文章はペルシア語なので、アルファベットは上の図の形に変わります。 wekaはこれらの形をペルシャ語の現実の言葉として認識していますか?私は答えに何らかの影響を与えているのでしょうか? – sara

+0

これらの図形をペルシア語で実際の言葉に変更するにはどうすればよいですか? – sara

+0

こんにちは、私の推測ははいです。しかし、wekaは "ブラックボックス"なので、テストするのは少し難しいです。単純なPythonとscipyを実装するのはどうでしょうか?私は自分のものにコードを入れることができます。もしあなたが望むなら、コードをあなたと共有することができます;) –

関連する問題