Распознавание слов естественного языка с использованием нейросетей

Автор работы: Пользователь скрыл имя, 12 Мая 2012 в 21:54, курсовая работа

Краткое описание

В данном курсовом проекте была разработана программа-анализатор слов естественного языка с использованием нейросети.
В ходе выполнения данного курсового проекта была разработана библиотека, содержащая классы для лексического анализа слов естественного языка с использованием нейросети (для решения поставленной задачи была выбрана нейросеть обратного распространения ошибки), была написана тестирующая программа, подготовлены тесты. При тестировании, после соответствующей настройки, программа не допустила ни одной ошибки.

Содержание работы

Введение
1. Анализ нейронных сетей
1.1 Выбор разновидности сети
1.2 Модель многослойного персептрона с обучением по методу обратного распространения ошибки
1.3 Постановка задачи
2. Проектирование библиотеки классов для реализации нейросети и тестовой программы
2.1 Программная реализация нейросети обратного распространения ошибки
2.2 Класс перевода текста в двоичный вид
2.3 Класс хеш-таблицы и методов работы с ней
2.4 Класс разбиения текста на лексемы и распознавания
2.5 Описание тестирующей программы
2.6 Результаты тестирования
3. Руководство программисту
Заключение
Список используемой литературы
Приложения

Содержимое работы - 1 файл

ф1.docx

— 220.45 Кб (Скачать файл)

Государственное образовательное  учреждение

высшего профессионального  образования

Кубанский государственный  технологический университет

Армавирский механико-технологический  институт

Кафедра внутризаводского электрооборудования и автоматики

 

 

 

 

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовому  проекту

по дисциплине: Теория языков программирования

на тему:

«Распознавание слов естественного языка с использованием нейросетей»

 

ЗАДАНИЕ

на курсовой проект

Студенту 

специальности 230105(2204) «Программное обеспечение вычислительной техники и автоматизированных систем»

Тема  проекта: «Распознавание слов естественного  языка с использованием нейросетей»

Содержание задания:

1. Настройка и обучение нейросети.

  1. Лексический анализ текста, формирование таблицы лексем.

3. Распознавание типа слов.

Требования: язык программирования C#, объектный метод проектирования, класс выполняющий распознавание, оформить в виде библиотечного компонента, составить тесты и написать программу для тестирование своих библиотечных классов.

Объем работы:

Пояснительная записка 30 – 35 листов

Графическая часть 2-3 листа формата А3

Рекомендуемая литература:

  1. Комарцова Л.Г., Максимов А.В.. Нейрокомпьютеры Учебное пособие для вузов. – М.: Изд-во МГТУ им. Н.Э.Баумана,2002.

  1. Осовский С. Нейронные сети для обработки информации.-М.:Финансы и статистика, 2004.
  2. Уоссермен Ф. Нейрокомпьютерная техника: теория и практика. — М.: Мир, 1992.
  3. Ключко В.И., Ермоленко В.В. Нейрокомпьютерные системы. Базы знаний. Учеб. пособие Изд-во КубГТУ,1999.-100с.

ГОСТ  Р ИСО 9001-2001 Системы менеджмента  качества. Требования.

ГОСТ 7.1-2003 СИБИД. Библиографическая запись. Библиографическое  описание. Общие требования и правила  составления.

ГОСТ 19.101-77 ЕСПД. Виды программ и программных  документов.

ГОСТ 19.102-77 ЕСПД. Стадии разработки.

ГОСТ 19.103-77 ЕСПД. Обозначение программ и программных документов.

ГОСТ 19.105-78 ЕСПД. Общие требования к программным  документам

ГОСТ 19.202-78 ЕСПД. Спецификация. Требования к содержанию и оформлению.

ГОСТ 19.404-79 ЕСПД. Пояснительная записка Требования к содержанию и оформлению.

ГОСТ 19.701-90 ЕСПД. Схемы алгоритмов, программ, данных и систем. Обозначения условные и правила выполнения.

 

Реферат

 

Пояснительная записка к курсовому проекту содержит 17 рисунков, 4 литературных источников, 3 приложения. К пояснительной записке прилагается 1 диск с готовой программой и материалами к ней, а также графическая часть, состоящая из трех листов.

ЛЕКСЕМА, НЕЙРОННАЯ СЕТЬ, ВХОДНОЙ СЛОЙ, СКРЫТЫЙ  СЛОЙ, ВЫХОДНОЙ СЛОЙ, ОБУЧАЮЩАЯ ВЫБОРКА, ТЕСТОВАЯ ВЫБОРКА, ХЕШ-ТАБЛИЦА, ТАБЛИЦА ЛЕКСЕМ

Объект: лексический анализатор слов естественного языка с использованием нейросети.

Цель: закрепление теоретических знаний по дисциплине «Теория языков программирование и методов трансляции», получить практические навыки проектирования и разработки элементов транслятора.

Произведен  выбор нейросети, рассмотрен ее алгоритм, представлена программная реализация на языке C# в библиотеке классов и написана тестирующая программа.

 

Содержание

 

Введение

1. Анализ  нейронных сетей

1.1 Выбор  разновидности сети

1.2 Модель  многослойного персептрона с  обучением по методу обратного  распространения ошибки

1.3 Постановка  задачи

2. Проектирование  библиотеки классов для реализации  нейросети и тестовой программы

2.1 Программная  реализация нейросети обратного  распространения ошибки

2.2 Класс  перевода текста в двоичный  вид

2.3 Класс  хеш-таблицы и методов работы  с ней

2.4 Класс  разбиения текста на лексемы  и распознавания

2.5 Описание  тестирующей программы

2.6 Результаты  тестирования

3. Руководство  программисту

Заключение

Список  используемой литературы 

Приложения

 

 

Введение

 

Цель  данного проекта: применение нейронной сети в лексическом анализе слов естественного языка.

Задачи: смоделировать, программно реализовать, настроить и обучить нейросеть для лексического анализа слов естественного языка.

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

Выходной  информацией является таблица лексем.

Результатом курсового проекта должна быть программа-анализатор слов естественного языка с использованием нейросети.

 

1. Анализ нейронных сетей

 

1.1 Выбор  разновидности сети

 

Искусственные нейронные сети — математические модели, а также их программные или аппаратные реализации, построенные по принципу организации и функционирования биологических нейронных сетей — сетей нервных клеток живого организма. Это понятие возникло при изучении процессов, протекающих в мозге, и при попытке смоделировать эти процессы. Первой такой попыткой были нейронные сети Маккалока и Питтса. Впоследствии, после разработки алгоритмов обучения, получаемые модели стали использовать в практических целях: в задачах прогнозирования, для распознавания образов, в задачах управления и др.

Искусственные нейронные сети представляют собой систему соединённых и взаимодействующих между собой простых процессоров (искусственных нейронов). Такие процессоры обычно довольно просты, особенно в сравнении с процессорами, используемыми в персональных компьютерах. Каждый процессор подобной сети имеет дело только с сигналами, которые он периодически получает, и сигналами, которые он периодически посылает другим процессорам. И тем не менее, будучи соединёнными в достаточно большую сеть с управляемым взаимодействием, такие локально простые процессоры вместе способны выполнять довольно сложные задачи.

Существует много разновидностей нейронных сетей, но наиболее распространенными  являются сети Кохонена, Хопфилда, обратного распространения ошибки.

Недостатками сети Кохонена является ее сложность и проблемы при классификации похожих образов. Сеть Хопфилда также может стать нестабильной, если обучающие примеры являются слишком похожими. Данные недостатки являются существенными, т.к. сходные по написанию слова естественного могут относиться к разным частям речи. Соответственно, для реализации лексического анализатора наиболее подходящей является сеть обратного распространения ошибки. Обратное распространение - первый эффективный алгоритм обучения многослойных нейронных сетей. Один из самых популярных алгоритмов обучения, с его помощью были решены и решаются многочисленные практические задачи.

 

1.2 Модель многослойного персептрона с обучением по методу обратного распространения ошибки

Когда в сети только один слой, алгоритм ее обучения с учителем очевиден, так как правильные выходные состояния нейронов единственного слоя заведомо известны, и подстройка синаптических связей идет в направлении, минимизирующем ошибку на выходе сети. По этому принципу строится, например, алгоритм обучения однослойного персептрона. В многослойных же сетях оптимальные выходные значения нейронов всех слоев, кроме последнего, как правило, не известны, и двух или более слойный персептрон уже невозможно обучить, руководствуясь только величинами ошибок на выходах НС.

Ф. Розенблаттом использовал  в своем персептроне не дифференцируемую ступенчатую функцию активации. Возможно, именно это помешало ему найти эффективный алгоритм обучения, хотя сам термин Back Propagation восходит к его попыткам обобщить свое правило обучения одного нейрона на многослойную сеть.

Разберем этот ключевой для  нейрокомпьютинга метод несколько  подробнее.

Алгоритм  обратного распространения - это  итеративный градиентный алгоритм, который используется с целью  минимизации среднеквадратичного отклонения текущего выхода многослойного персептрона и желаемого выхода.

Алгоритм  обратного распространения используется для обучения многослойных нейронных сетей с последовательными связями. Нейроны в таких сетях делятся на группы с общим входным сигналом - слои. На каждый нейрон первого слоя подаются все элементы внешнего входного сигнала. Все выходы нейронов m-го слоя подаются на каждый нейрон слоя m+1. Нейроны выполняют взвешенное суммирование элементов входных сигналов. К сумме элементов входных сигналов, помноженных на соответствующие синаптические веса, прибавляется смещение (порог) нейрона. Над результатом суммирования выполняется нелинейное преобразование - функция активации (передаточная функция). Значение функции активации есть выход нейрона.

На рисунке  1 показана укрупненная схема многослойной сети (многослойного персептрона). Нейроны представлены кружками, связи между нейронами - линиями со стрелками.

 


Рисунок 1 - Многослойный персептрон

 

Обозначим входы n-го слоя нейронов , весовые коэффициенты wij. Нейроны этого слоя вычисляют соответствующие линейные комбинации ai:

 

    (1)

 

и передают их на следующий слой, пропуская  через нелинейную функцию активации:

 

.    (2)

 

Нелинейная  функция f называется активационной и может иметь различный вид, как показано на рисунке 2. Одной из наиболее распространенных является нелинейная функция с насыщением, так называемая логистическая функция или сигмоид (т.е. функция S-образного вида):

 

     (3)

 

При уменьшении a сигмоид становится более пологим, в пределе при a=0 вырождаясь в горизонтальную линию на уровне 0.5, при увеличении a сигмоид приближается по внешнему виду к функции единичного скачка с порогом T в точке x=0. Из выражения для сигмоида очевидно, что выходное значение нейрона лежит в диапазоне [0,1]. Одно из ценных свойств сигмоидной функции – простое выражение для ее производной.

 

 

 

Рисунок 2 - а) функция единичного скачка; б) линейный порог (гистерезис); в) гиперболический тангенс; г) сигмоид

 

Следует отметить, что сигмоидная функция  дифференцируема на всей оси абсцисс, что используется в некоторых алгоритмах обучения. Кроме того она обладает свойством усиливать слабые сигналы лучше, чем большие, и предотвращает насыщение от больших сигналов, так как они соответствуют областям аргументов, где сигмоид имеет пологий наклон.

Для построения алгоритма обучения необходимо знать производную ошибки по каждому из весов сети:

 

.   (4)

 

Таким образом, вклад в общую  ошибку каждого веса вычисляется локально, простым умножением невязки нейрона на значение соответствующего входа. (Из-за этого, в случае, когда веса изменяют по направлению скорейшего спуска , такое правило обучения называют дельта-правилом.)

Входы каждого слоя вычисляются  последовательно от первого слоя к последнему во время прямого распространения сигнала:

 

,   (5)

 

а невязки каждого слоя вычисляются  во время обратного распространения  ошибки от последнего слоя (где они  определяются по выходам сети) к первому:

 

.  (6)

Области применения многослойных персептронов, с обучением по методу обратного распространения:

  • распознавание образов;
  • классификация;
  • прогнозирование;
  • экспертные системы.

Рассмотрим  алгоритм сети обратного распространения  ошибки подробнее.

Входной набор данных, на котором сеть должна быть обучена, подается на входной слой сети (рисунок3), и сеть функционирует в нормальном режиме (т.е. вычисляет выходные данные).


 


 


 



 

Рисунок 3 - Прямое распространение сигнала

 

Полученные  данные сравниваются с известными выходными  данными для рассматриваемого входного набора. Разница между полученными  и известными (опытными) данными - вектор ошибки.

Вектор  ошибки используется для модифицирования  весовых коэффициентов выходного слоя с тем, чтобы при повторной подаче (рисунок 4) того же набора входных данных вектор ошибки уменьшался.

Информация о работе Распознавание слов естественного языка с использованием нейросетей