2013-04-11 5 views
1

У меня есть свод N документов, классифицированных как спам /нет спама. Я следую стандартной процедуре предварительной обработки данных в R (code here). Предварительная обработка заканчивается DocumenTermMatrix с использованием весов как tfidf.Классификация/Прогнозирование в R

Теперь я хочу классифицировать новые документы с помощью моей модели.

Как я могу вычислить соответствующий DocumentVector (с использованием ТФ документа и idfs из корпуса) для одного нового документа? Я хотел бы избежать пересчета DocumentTermMatrix для всего корпуса.

ответ

1

У меня была аналогичная проблема в прошлом, и эта функциональность не включена в пакете tm. Инго Фейнерер предложил построить функцию для получения DocumentVector. Функция должна будет использовать ранее построенные tm или dtm из корпуса и нового документа. Сначала предварительно обработайте новый документ так же, как и для корпуса, и создайте список со словами и tf. Вы можете объединить слова из tm/dtm (например, tdm $ dimnames $ Terms) таким образом, чтобы ваш новый документ был преобразован, чтобы иметь те же условия вашего корпуса с значениями tf документа (простым слиянием). Затем разделите ТФ по idfs в корпусе стандартным образом:

cs<-row_sums(tm>0) 
lnrs<-log2(nDocs(tm)/cs) 
tf*lnrs # 

отделка возвращает DocumentVector. Вы можете использовать вектор как файл data.frame при прогнозировании с помощью SVM напрямую.

0

Я не знаю, какую библиотеку svm вы используете, но похоже, что ваша модель SVM хранится в Corpus.svm - правильно?

Для прогнозирования нового документа вы можете следовать процедуре, описанной в: http://planatscher.net/svmtut/svmtut.html Задача 2. Если вы используете какую-либо другую библиотеку, процедура будет аналогичной. Существует также практический пример с набором данных IRIS. Единственное различие заключается в том, что ваш новый документ должен обрабатываться так же, как и примеры обучения (например, удалить стоп-слова, tf-idf, ...)

+0

Вопрос на самом деле связан с последним предложением «Единственное различие заключается в том, что ваш новый документ должен обрабатываться так же, как и примеры обучения (например, удалить стоп-слова, tf-idf, ...)». Как получить этот DocumentVector? Используемая модель не имеет отношения к вопросу. – elyase

+0

во время тестирования - вы используете значения для idf из учебных корпусов, а tf зависит только от тестовой статьи. Практически: http: //bostondecision.com/2012/05/16/how-to-build-a-text-mining-machine-learning-document-classification-system-in-r/, http: // web. letras.up.pt/bhsmaia/EDV/apresentacoes/Bradzil_Classif_withTM.pdf или http://stats.stackexchange.com/questions/14219/how-well-does-r-scale-to-text-classification-tasks – xhudik

Смежные вопросы