Weka commandline и строки - PullRequest
       5

Weka commandline и строки

1 голос
/ 23 февраля 2012

Я хотел бы сделать некоторую классификацию текста (наивный байесовский) с Weka, используя простую cli (командную строку), но у меня есть одна проблема. Weka не может обрабатывать строки, они должны быть преобразованы. Но как я могу преобразовать строки в моем файле arff через cli?

предложений.арфф пример

@relation data set

@attribute text string
@attribute class {swedish,'?',english}

@data
'detta är en svensk text',swedish
'this is an english text',english
'what is the name of this book?',english
'vilken färg är en liten stuga?',swedish
'you are the best',english
'en enstaka fjäder i hatten fördröjer livet ett tag',swedish
'detta är en annan svensk text',swedish

Я использую следующую команду для создания модели

java weka.classifiers.bayes.NaiveBayes -t data.arff -d data.model

1 Ответ

2 голосов
/ 24 февраля 2012

Используйте StringToWordVector , чтобы изменить текстовые атрибуты на числовые значения.Большинство классификаторов в weka не могут работать с текстовыми значениями, см. Работа с текстовыми данными .После этого вы можете использовать NaiveBayes в обычном режиме.

java weka.filters.unsupervised.attribute.StringToWordVector -i datasets\sentences.arff > datasets\sentencesWordVector.arff
java weka.classifiers.bayes.NaiveBayes -t datasets\sentencesWordVector.arff -c 1 -x 3

Обратите внимание, что мне нужно использовать 3 раза ( -x 3 ), поскольку номер вашего примера короче значения по умолчанию 10. Я также использовал индекс класса 1 (-c 1 ).

На моем компьютере появляется следующая Матрица замешательства.Вполне нормально, поскольку в ваших примерах нет экземпляра с '?'.

=== Confusion Matrix ===

a b c   <-- classified as
4 0 0 | a = swedish
0 0 0 | b = ?
0 0 3 | c = english
...