2011-11-29 17 views
7

Czy możesz dać mi znać, jak reprezentować atrybut lub klasę dla klasyfikacji tekstu w Weka. Za pomocą jakiego atrybutu mogę dokonać klasyfikacji? częstotliwość słów lub tylko słowo? Jaka byłaby możliwa struktura formatu ARFF? Czy możesz podać kilka linii tego przykładu?Jak reprezentować tekst do klasyfikacji weka?

Dziękuję bardzo z góry.

Odpowiedz

11

Jednym z najprostszych rozwiązań alternatywnych jest, aby rozpocząć z plikiem ARFF do problemu jak dwie klasy:

 
@relation corpus 

@attribute text string 
@attribute class {pos,neg} 

@data 
'long text with words ... ',pos 

Tekst jest reprezentowany jako typ String i klasa to nominalny z dwóch wartości.

Następnie można zastosować dwa filtry:

  1. StringToWordVector która przemienia teksty do reprezentowania słowo wektorowych. Filtr używa atrybutu dla każdego słowa. Możesz zmieniać parametry, aby wybrać reprezentację binarną/częstotliwościową, wynikową lub stopwords. Najlepsza reprezentacja zależy od problemu. Jeśli tekst nie jest długi, wystarczająca jest zazwyczaj reprezentacja binarna.
  2. Kolejność przenoszenia do przeniesienia atrybutu klasy do ostatniej pozycji, Weka zakłada, że ​​jest.

można znaleźć więcej informacji i inne podejścia do transformacji danych na tej stronie wiki Weka: http://weka.wikispaces.com/Text+categorization+with+WEKA

0

W WEKA, można wybrać swój własny atrybut. W tym przykładzie mamy tylko 2 klasy i wszystkie unikalne słowa są używane jako atrybuty. Jeśli wybierzesz częstotliwość słowa jako swój atrybut, przypisujesz "2", jeśli to słowo występuje dwa razy w tekście, a "0", jeśli nie, lub "1", jeśli to słowo występuje tylko raz.

Oto przykładowy format .arff.

@RELATION anyrelation 

@ATTRIBUTE word1 
@ATTRIBUTE word2 
... 
@ATTRIBUTE wordn 
@ATTRIBUTE class {class1, class2} 

@DATA 
1,2,....,0,class1 
0,3,....,1,class2