Мешок слов и сентимент-анализ на R
5 мин
Эта статья подготовлена по мотивам (первой части) учебного задания Bag of Words Kaggle, но это не перевод. Оригинальное задание сделано на Python. Я же хотел оценить возможности языка R для обработки текстов на естественном языке и заодно попробовать реализацию Random Forest в обертке R-пакета caret.
Смысл задания – построить «машину», которая будет определенным образом обрабатывать обзоры фильмов на английском языке и определять тональность обзора, относя его к одному из двух классов: негативные/позитивные. В качестве обучающей выборки в задании используется набор данных с двадцатью пятью тысячами ревю из IMDB, размеченных неизвестными добровольцами.
Смысл задания – построить «машину», которая будет определенным образом обрабатывать обзоры фильмов на английском языке и определять тональность обзора, относя его к одному из двух классов: негативные/позитивные. В качестве обучающей выборки в задании используется набор данных с двадцатью пятью тысячами ревю из IMDB, размеченных неизвестными добровольцами.







Иногда так бывает: задачу можно решить чуть ли не арифметически, а на ум прежде всего приходят всякие интегралы Лебега и функции Бесселя. Вот начинаешь обучать нейронную сеть, потом добавляешь еще парочку скрытых слоев, экспериментируешь с количеством нейронов, функциями активации, потом вспоминаешь о SVM и Random Forest и начинаешь все сначала. И все же, несмотря на прямо таки изобилие занимательных статистических методов обучения, 
Иногда возникает необходимость ускорить вычисления, причем желательно сразу в разы. При этом приходится отказываться от удобных, но медленных инструментов и прибегать к чему-то более низкоуровневому и быстрому. R имеет довольно развитые возможности для работы с динамическими бибиотеками, написанными на С/С++, Fortran или даже Java. Я по привычке предпочитаю С/С++.

Однажды для презентации мне понадобились анимированные графики. С графиками, собственно, проблем не возникло, а для их анимации пришлось воспользоваться еще одним пакетом
Довольно часто встречаются неполные наборы данных, в которых некоторые переменные не определены. В языке R содержимое таких переменных задается как «Not Available» — или сокращенно NA. Соответственно, возникает вопрос, как поступать с неопределенными значениям: стоит ли их игнорировать или откорректировать каким-либо образом?