Здравствуйте. У меня такая проблема. В связи скудностью информации по классификации текстовых сообщений на русском языке возникли некоторые вопросы и не до конца понятен четкий алгоритм действий.
Дано - csv файл с запросами (10000), которые надо распределить на категории. Я так понял такой алгоритм:
1) Берём файл и проводим нормализацию - удаляем стоп-слова и знаки препинания, приводим все слова к единой форме (или правильно сказать в начальную форму, т.е. выполняется стемминг). Потом делим всю выборку на тестовую и обучающую (30 к 70).
2) Получается вручную размечаем корпус по категориям? Или можно использовать TF-IDF для выделения часто встречающихся слов?
3) Переводим слова в векторную форму. Тут тоже вопрос - как лучше? Использовать Bag of Words? Получается для каждого запроса строить отдельно вектор с встречающимся в них словах или делать сразу для всей категории (или возможно для всей выборки)? То есть на выходе мы должны получить несколько векторов или один большой вектор (с часто входящими словами?) для целой категории?
4) Подаем полученный/ые вектор/а на вход какому-нибудь из алгоритмов классификации. Обучаем его.
5) Берем запрос из тестовой выборки, так же приводим его в нормальную форму и подаем на вход алгоритма и смотрим ответ.
Вроде как-то так. И сразу последний вопрос - чтобы по 10 раз не обучать классификатор и не хранить все в памяти можно как-нибудь (например, если мы возьмем нейронную сеть) записывать веса и при загрузке просто распределять уже их и готово или каждый раз придется проходить обучение? Заранее всем спасибо
Дмитрий, цель - распределить поисковые запросы на три группы. Принцип как и у остальных классификаторов - посмотреть, какие слова встречаются в данной группе чаще им и веса больше выдать. На выходе получается он классифицирует не слова, а словосочетания - конкретный поисковой запрос.
Дмитрий: а, вам конкретику дать. У меня выборка с одного сайта, где ищут налоговые данные. И задача такая, что по запросу понять, что ищет человек - организацию (ООО, ЗАО и т.д.), гос.предприятие (администрацию какого-то района или что-то типа "МЧС по такому-то району") или просто конкретного человека (запросы типа "ИП Иванов Иванов Иванович").
Олег: Имена решаются заранее определённым списком имён и их частями, например www.sonnik-online.net/imena/_mujskie.html а так же регуляркой \sИП\s preg_match ЗАО, ООО вам религия не позволяет сделать? Все ведомства типа МЧС, ФСС и т.п. тоже закатываются в массив названий как имена и по нему проверяются. Необходимости в стемминге по вашему описанию тут вообще не вижу.
Дмитрий: это все хорошо, пока массив данных не очень большой. Согласен, что словарный метод имеет право для жизни. Но я хочу попробовать алгоритмы машинного обучения для последующего расширения задачи (да и вообще просто попробовать машинное обучение на текстовых данных, не числах). Многие компании сейчас используют этот подход, тот же Яндекс.