Почему классификатор дает мне вход без каких-либо изменений - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь построить классификатор, который сегментирует арабские предложения (транслитерируется в Баквальтере).У меня есть атрибуты, которые читают из файлов, и я применяю контекстное окно +/- 10 (т.е. для каждого слова я проверяю 10 слов до и 10 слов после).Классы классификации:

BS для первого слова предложения, ES для последнего слова предложения, IS представляет слова в середине и S для предложений, которые содержат только одно слово.

FastVector fClasse = new FastVector();
fClasse.addElement( "I-S" );
fClasse.addElement( "B-S" );
fClasse.addElement( "E-S" );
fClasse.addElement( "S" );

if (str.length == 1) {
    element.setValue( attClasse , "S" );
} else {
    if (i == 0) {
        element.setValue( attClasse , "B-S" );
    } else {
        if (i == str.length - 1) {
            element.setValue( attClasse , "E-S" );
        } else {
            element.setValue( attClasse , "I-S" );
        }
    }
}

Сначала я использовал 10 атрибутов, которые проверяют предыдущие классы для каждого слова.Таким образом, результаты были почти 100%, особенно для классов BS и S.Но даже когда я тестирую модель с несегментированным файлом.Результат модели также одинаков.Буквально, модель дает мне входной абзац без каких-либо изменений.Когда я удалил эти атрибуты (которые проверяют предыдущие 10 классов), результаты оценки сильно снизились (BS 33%).

Ниже мой код:

https://drive.google.com/open?id=1-NiA_C-2YRkG19J-mZYg4BEdNnnVWbyG

он дает мне файл arff, который я использую с weka GUI для генерации модели.Я использую классификатор PART.

Есть идеи, что я делаю не так?Буду очень признателен за любую помощь.

...