Я пытаюсь построить классификатор, который сегментирует арабские предложения (транслитерируется в Баквальтере).У меня есть атрибуты, которые читают из файлов, и я применяю контекстное окно +/- 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.
Есть идеи, что я делаю не так?Буду очень признателен за любую помощь.