Weka строковые атрибуты для разреженного файла ARFF - PullRequest
1 голос
/ 16 мая 2011

Я пытаюсь использовать Weka для классификации текста. Для этой цели имеет смысл использовать разреженный формат файла данных ARFF. Используя Weka 3.7.2, я попробовал:

  1. Преобразование текстового каталога в объект Instances с использованием TextDirectoryLoader .
  2. Перевод строк, полученных на предыдущем этапе, в числа с использованием StringToWordVector .

Первый этап работал нормально. Второй этап вызвал проблему, описанную таким образом в Спецификация формата файла ARFF Weka :

Предупреждение. Известна проблема сохранения объектов SparseInstance из наборов данных, имеющих строковые атрибуты. В Weka строковые и номинальные значения данных хранятся в виде чисел; эти числа действуют как индексы в массиве возможных значений атрибута (это очень эффективно). Однако первому строковому значению присваивается индекс 0: это означает, что внутренне это значение сохраняется как 0. При записи SparseInstance строковые экземпляры с внутренним значением 0 не выводятся, поэтому их строковое значение теряется (и когда файл arff читается снова, значение по умолчанию 0 - это индекс другого строкового значения, поэтому значение атрибута меняется).

Формат ARFF предлагает это решение:

Чтобы обойти эту проблему, добавьте фиктивное строковое значение с индексом 0, которое никогда не используется всякий раз, когда вы объявляете строковые атрибуты, которые, вероятно, будут использоваться в объектах SparseInstance и сохраняться как файлы Sparse ARFF.

Я пытаюсь сделать это - добавить фиктивную строку. Мне не удалось сделать это вручную (путем редактирования файла ARFF). Может ли кто-нибудь, кто сделал это, уже опубликовать пример - или из сегмента программы, делающего это, правильно модифицированного файла ARFF, или каким-либо другим способом сделать это?

Спасибо.

1 Ответ

1 голос
/ 30 мая 2012

НЕ редактируйте файл arff напрямую.

Я только что ответил на похожий вопрос здесь: Weka печать редких arff-файлов

Используйте тот же пример кода.

...