Исследование нейросетевого подхода к стеммингу М.К. Савкин (Россия, Калуга, студент КФ МГТУ им. Н.Э. Баумана) Научный руководитель: Л. Г. Комарцова (Россия, Калуга, д.т.н., профессор кафедры ЭИУ2-КФ КФ МГТУ им. Н.Э. Баумана) Введение В настоящее время человечество накопило большой объем информации в неформализованном виде, т.е. в виде текстов, изображений, звука. Наибольший интерес представляет текстовая информация, ее объемы колоссальны: поисковая система Google содержит 850 Тб проиндексированных страниц, знаменитая библиотека конгресса США по разным оценкам содержит более 20 Тб данных. Помимо большого объема данная информация характеризуется неструктурированностью, избыточностью, неполнотой и разбросанностью. Для работы с имеющей такие свойства информацией нужны особые методики. Одна из этих методик заключается в использовании нейросетевого подхода, преимуществами которого является возможность работы с нечеткими, неполными и неточными данными; обучение на примерах, т.е. адаптация; работа в реальном времени. Постановка задачи Стемминг – процесс отсечения от слова всех суффиксов и окончаний. Данный процесс близок к лемматизации, однако для слов, имеющих разные основы для разных форм, работа этих методов различается. Стемминг может использоваться при индексации текста поисковыми машинами, при анализе текста с помощью латентно-семантического анализа. Задача состоит в исследовании возможности использования нейронных сетей для организации стемминга слов русского языка. Исходные данные В качестве источника слов для анализа использован морфологический словарь проекта AOT, основанный на словаре Зализняка. С помощью созданного программного обеспечения словарь был разбит на файлы, содержащие все доступные формы одной основы. Из порядка 150 тысяч таких файлов было выбрано 5 групп по 30 файлов, т.е. по 30 основ. Данные 5 групп были объединены в 6-ую группу, состоящую из 150 основ. Используемое программное обеспечение Для проведения анализа использовался разработанный автором эмулятор нейронных сетей. Данная программа предназначена для эмуляции сетей персептронного типа с обучением по модифицированному алгоритму обратного распространения ошибки (модифицированный алгоритм BP). Эмулятор имеет следующие возможности: o предварительная обработка данных (нормализация, кодирование выхода, разбиение на обучающую, подтверждающую и рабочую выборки); o связывание сети с файлами данных; o создание моделей нейроподобных элементов с настройкой параметров функции активации и последующим сохранением в библиотеке нейроподобных элементов; o автоматизированное и ручное создание сетей персептронного типа; o обучение по модифицированному алгоритму BP. В стандартный алгоритм обратного распространения ошибки был внесен ряд дополнений. Введено понятие периода проверки, который определяет, как часто в процессе обучения применяется подтверждающая выборка для оценки качества обучения. Это позволяет избежать эффекта «бабушкиного воспитания», связанного с переобучением сети. «Ранний останов» прекращает обучение сети, как только ошибка на подтверждающей выборке начнет расти; o запуск сети для обработки данных; o генерация исходного кода на языке C++, представляющего обученную сеть. o работа в операционных системах Windows ® и *nix. Главное окно эмулятора показано на рис. 1. Рис. 1. Главное окно эмулятора (редактор сетей) Подготовка экспериментов Исходными данными в проводимом исследовании являются слова русского языка, состоящие из букв, в то время как используемая модель нейронов с сигмоидальной функцией активации может работать только с числами в диапазоне [0; 1]. С учетом того, что исходные текстовые файлы имели кодировку UTF-8, была использована следующая формула для подготовки входных данных: числовое _ представление _ буквы код _ UTF 8 1039 , 64 где: o 1039 – код символа, предшествующего заглавной букве «А» в таблице UTF-8; o 64 – количество прописных и строчных букв русского языка. Для кодирования выхода использовался метод «победитель забирает все». Во всех экспериментах использовался двухслойный персептрон. В первом слое находилось 4 нейрона, число входов равнялось максимальному количеству букв в словах группы; во втором слое находилось 30 (или 150 для 6-ой группы) 4-х входовых нейронов. Все слова каждой группы были разбиты на обучающую, подтверждающую и рабочую выборки в соответствии с соотношением 30/20/50%. Сеть обучалась со следующими параметрами: o первоначальная инициализация весовых коэффициентов случайными числами в диапазоне [0,1…0,3]; o 2000 число итераций обучения; o период проверки – 10 итераций; o скорость обучения (стандартный параметр алгоритма BP) – 0,3. o среднеквадратическая ошибка на подтверждающей выборке, достижение которой останавливает обучение, – 0,2. Проведение экспериментов Данные о проводимых экспериментах сведены в таблицу: Группа/ показатель количество основ количество слов размер сети причина останова обучения размер рабочей выборки %/ количество верных ответов на рабочей выборке 1 2 3 4 5 6 (все слова) 30 30 30 30 30 150 883 761 1029 906 769 4339 4x224x21-30x4 4x21-30x4 4x22-150x4 30x4 рост рост ошибки исчерпание ошибки исчерпание исчерпание исчерпание после числа после числа числа числа 1865 итераций 1690 итераций итераций итераций итераций итераций 4x19-30-4 4x20-30x4 441 386 511 452 384 2169 72% 316 73% 277 71% 362 71% 320 61% 234 7% 156 Табл. 1. Результаты экспериментов Размер сети указан в формате <число нейронов слоя 1>x<количество входов нейрона> – <число нейронов слоя 2>x< количество входов нейрона >. На рис.2. представлен график, иллюстрирующий процесс обучения. 2,5 2 группа 1 группа 2 1,5 группа 3 группа 4 1 группа 5 все 0,5 0 1 192 383 574 765 956 1147 1338 1529 1720 1911 Рис. 2. Падение ошибки на обучающей выборке Выводы и заключение Видно, что на первых 4-х группах был получен устойчивый результат в 71-73% верно распознанных основ. При повторе опыта на 5-ой группе был получен результат 50%, что говорит о локальном характере оптимизации, которую осуществляет выбранный алгоритм обучения: при каждом запуске алгоритма при инициализации весов выбираются точки в пространстве весовых коэффициентов, приводящие к разным результатам. Крайне низкий результат, полученный на 6-ой группе, говорит о непригодности алгоритма с выбранными параметрами для обучения больших сетей, работающих с большими объемами данных. Увеличение количества итераций нецелесообразно, поскольку приведет к существенному росту времени обучения: сеть данной группы обучалась порядка 10 минут. Возможно, лучший результат даст использование двоичного или иного кодирования выхода вместо использованного «победитель забирает все». В целом нейросетевой подход можно признать пригодным для организации стемминга. Необходимо исследовать другие алгоритмы обучения и типы сетей, а также сравнить результаты с традиционными методами. Список литературы 1. Тарков М.С. Нейрокомпьютерные системы: – http://www.intuit.ru/department/expert/neuro/ 2. Яхъяева Г.Э. Основы теории нейронных сетей: – http://www.intuit.ru/department/ds/neuronnets/ 3. Николаев А.Б. Инструментальные средства разработки нейросетевых приложений: – http://www.madi.ru/study/kafedra/asu/metod/nero/5_2.shtml 4. Комарцова Л.Г., Максимов А.В. Нейрокомпьютеры: Учеб. пособие для вузов. – 2-е изд., перераб. и доп. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2004. – 400 с.: ил. 5. Бланшет Ж., Саммерфилд М. Разработка графического интерфейса с помощью библиотеки Qt3: – http://www.opennet.ru/docs/RUS/qt3_prog/ 6. http://aot.ru