представление данных для svm

У меня есть миллион файлов, включая свободный текст. Каждому файлу присвоен код или количество кодов. Коды можно рассматривать как категории. Я нормализовал текст, удалив стоп-слова. Я использую scikit-learn libsvm для обучения модели прогнозированию файлов для правильного кода (категории).

Я много читал и искал, но я не мог понять, как представить мои текстовые данные в целые числа, поскольку SVM или большинство инструментов машинного обучения используют числовые значения для обучения.

Я думаю, мне нужно будет найти tf-idf для каждого термина во всем корпусе. Но все же я не уверен, как это поможет мне преобразовать мои текстовые данные в формат libsvm.

любая помощь будет принята с благодарностью, спасибо.


person Shaonline    schedule 10.07.2014    source источник


Ответы (1)


Вы не обязаны использовать tf-idf.

Для начала следуйте этому простому подходу:

  1. Выберите все отдельные слова во всех ваших документах. Это будет ваш словарный запас. Сохраните его в файл.
  2. Для каждого слова в конкретном документе замените его индексом слова в вашем словарном файле.
  3. а также добавить количество раз, когда слово появляется в документе

Пример:

У меня есть два документа (стоп-слово удалено, ограничено):

Привет мир

и

привет небо солнечный привет

Шаг 1. Я создаю следующий словарь

hello
sky
sunny
world

Шаг 2:

Я могу представить свои документы следующим образом:

1 4

(потому что слово привет находится в словаре на 1 позиции, а слово мир на 4 позиции) и

1 2 3 1


Шаг 3. Я добавляю частотность термина рядом с каждым термином и удаляю дубликаты.

1:1 4:1

(потому что слово hello встречается в документе 1 раз, а слово world встречается 1 раз)

и

1:2 2:1 3:1


Если вы добавите номер класса перед каждой строкой, у вас будет файл в формате libsvm:

1 1:1 4:1
2,3 1:2 2:1 3:1 

Здесь первый документ имеет класс 1, а второй документ имеет классы 2 и 3.

В этом примере каждое слово связано с частотой термина. Чтобы использовать tf-idf, вы делаете то же самое, но заменяете tf вычисленным tf-idf.

person alexandrekow    schedule 10.07.2014