классифицировать массив ячеек в Matlab

Я хочу выполнить категоризацию текста в наборе данных новостей. У меня есть много функций, таких как subject, keyword, summary и т. д.... все эти функции хранятся в одном массиве ячеек структур, каждая структура выглядит так:

       label: 'misc.forsale'
        subj: ' Motorcycle wanted.'
     keyword: [1x190 char]
   reference: []
organization: ' Worcester Polytechnic Institute'
        from: ' [email protected] (John Kedziora)'
     summary: []
       lines: ' 11'
       vocab: [4x2 double]

Я хочу классифицировать их с помощью class = classify(test, train, target, 'diaglinear');
но эти функции получают на вход только массивы и не принимают ячейки или структуры.

Я не могу преобразовать этот массив ячеек в один многомерный массив, потому что количество признаков варьируется (например, у одного субъекта есть два слова, а у другого - три слова).

Что я могу сделать?




Ответы (1)


Сначала сделайте извлечение некоторых признаков. Например, токенизируйте строки, а затем используйте TF-IDF.

Вы можете включить ключ с токенами. Это обычная практика поиска информации. См. пример в руководстве по Xapian.

Обычно вы будете делать некоторые стемминги, например. Examples -> exampl. Теперь просто добавьте префикс, чтобы слова различались в зависимости от их появления. Например. Sexampl, если тема содержит example и Kexampl, если это ключевое слово.

Тогда у вас есть представление «мешка слов», которое используется повсюду. Они даже делают это для добычи изображений, тогда это называется «визуальные слова». Это тоже не английские слова.

person Has QUIT--Anony-Mousse    schedule 03.06.2012