Разработка программы для запоминания иностранных слов с помощью мнемотехники

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 01.09.2017
Размер файла 1,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

АННОТАЦИЯ

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

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

Пояснительная записка содержит 1 диаграмму и 15 рисунков. Суммарный объем ВКР составляет 31 страницу.

ANNOTATION

The main goal of this work is the realization of the program which will allow its user to learn English using mnemotechnical methods of memorizing information. The explanatory memorandum has a brief review of the literature related to the topic of the work, an analysis of the existing solutions of the given task. Also the work provides a rationale for using the selected implementation methods and their description.

The results of this work will allow users who learn English to learn its words effectively, without the usual method of rote learning. In addition to a list of Russian analogues of the entered word given to the user, an example of the usage of a pair of words is also given. The further development is an enhancement of the functional part of the program, providing an opportunity to learn other languages using this program.

The explanatory memorandum contains 1 diagram and 15 pictures. The total number of pages is 31.

ОГЛАВЛЕНИЕ

  • Введение
  • 1. Основная часть
  • 1.1 Актуальность
  • 1.2 Поставленные задачи
  • 1.3 Результаты анализа существующих программных решении?
  • 1.4 Обзор применяемых методов решения поставленной задачи
  • 1.5 Обзор применяемых технических методов решения поставленнои? задачи
  • 2. Практическая часть
  • 2.1 Алгоритм
  • 2.2 Обоснование выбора методов поставленных задач и сравнение с методами других решений
  • 2.3 Обоснование выбора языков программирования и инструментальных средств для создания рабочей версии программы
  • 3. Результаты
  • Вывод
  • Литература

ВВЕДЕНИЕ

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

1. ОСНОВНАЯ ЧАСТЬ

1.1 Актуальность

На данном этапе человеческого развития появление и усовершенствование новых технологий происходит с небывалой скоростью, научные разработки становятся главным двигателем общественного прогресса. Появилась новая проблема, заключающаяся в том, что количество требований даже к среднему работнику в той или иной сфере деятельности возрастают. Чтобы быть конкурентоспособным в быстроизменяющемся современном мире, человеку необходимо запоминать большое количество информации и уметь оперировать ею. Однако способности людей не безграничны, и возможности человеческого мозга в том числе. Человеческая память делится на долговременную и кратковременную память, и если долговременная память может хранить огромное количество данных, то кратковременная нет - предположительно ее емкость составляет лишь 7±2 объекта. И для того, чтобы информация перешла из краткосрочной в долгосрочную память, требуется ее правильное запоминание и повторение.

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

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

1.2 Поставленные задачи

Основной целью данной работы является предоставление пользователю возможность изучать английские слова эффективно. Человеку свойственно быстро забывать пройденный материал, и во избежание этого необходимо установить прочные связи между словом на английском и его значением. Для этого в данной работе используются мнемотехнический метод, основанный на ассоциациях. Программа должна обеспечивать возможность выполнения перечисленных ниже функций:

1) Возможность ввода изучаемого иностранного слова;

2) Генерация ассоциаций к иностранному слову;

3) Предоставление возможности пользователю эффективно запоминать слова и изучать английский язык;

4) Удобный интерфейс, интуитивно понятный пользователю;

5) Вывод других возможных ассоциаций списком.

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

1.3 Результаты анализа существующих программных решении?

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

Среди приложений одними из самых популярных считаются LinguaLeo, Quizlet, Easy Ten, Duolingo. LinguaLeo - это онлайн-приложения для изучения английского языка. Lingualeo позволяет пользователям учить язык на интересных ему материалах: аудиокнигах, видеозаписях, текстах песен, книгах, размещённых в открытых источниках или загруженных другими участниками. Пользователь имеет возможность самостоятельно подбирать незнакомые слова для упражнений и использовать тематические подборки. Доступны тренировки грамматики и произношения, игры, личный словарь с ассоциациями и журнал, в котором отмечается прогресс обучения.

Quizlet - это платформа для изучения иностранных слов с помощью карточек. Двухсторонние карточки со словами (flash cards) -- проверенный опытом и временем инструмент для заучивания слов. Сервис Quizlet реализует данный метод в электронном виде. Пользователь сам заполняет иностранные слова и их значения. Слова можно учить в нескольких режимах обучения: Flashcards - в этом режиме пользователь просматривает карточки, переворачивая их, Learn - появляется слово, нужно набрать его перевод, Speller - написание слов под диктовку, упражнение, помогающее развить понимание на слух и правописание, Test - автоматически создает тест с четырьмя видами заданий из слов, входящих в колоду, Scatter - игра, в которой нужно на время находить значение слова и с самим словом склеивать их вместе, Gravity - другая игра, в которой нужно «сбивать» летящие слова-метеориты, набирая из значение.

Easy Ten - приложение, с помощью которого пользователь, у которого нет возможности изучать активно иностранный язык, может выучить в день 10 слов без особых усилий. Особенность метода обучения Easy Ten заключается в том, что программа не нагружает пользователя сложными упражнениями, а позволяют ему заниматься понемногу, но регулярно. Каждый день Easy Ten предлагает выучить 10 новых слов (в соответствии со своим названием) -- то есть, 300 слов в месяц. Easy Ten придумано и построено так, чтобы приносить максимум пользы, не напрягая обучающегося.

Также существует приложение Duolingo, предоставляющее сервис для изучения иностранных языков прямо с мобильного устройства. Интерфейс приложения интуитивный, понятный для пользователя, все упражнения и тренинги проводятся в интерактивной форме. Преимущество данного приложения в том, что оно дает возможность изучающим учить выбранный язык с нуля, тогда как другие приложения предполагают наличие начального или продвинутого уровня от пользователя. Например, на LinguaLeo достаточное количество заданий существуют на перевод с английского на русский или наоборот. Упражнения такого рода невозможно выполнить без определенной начальной подготовки. Помимо вышеперечисленного, в Duolingo реализовано функция повторения пройденного материала, что повышает шансы пользователей на эффективное изучение иностранного языка.

1.4 Обзор применяемых методов решения поставленной задачи

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

В настоящий момент широко распространен механический метод запоминания информации. Данный метод основывается на создании внешних ассоциаций запоминаемой информации в результате многочисленных повторений материала. Такой подход к запоминанию характеризуется тем, что информация преимущественно сохраняется лишь в кратковременной памяти человека, установленные связи между единицами материалами непрочны, что влечет за собой быстрое забывание изученного. В ходе экспериментальных исследований немецкого ученого Германа Эббингауза, проводимых им в 1885 году, было обнаружено, что после первого безошибочного повторения материала забывание идёт вначале очень быстро. Уже в течение первого часа забывается до 60 % всей полученной информации, через 10 часов после заучивания в памяти остаётся 35 % от изученного. Далее процесс забывания идёт медленно, и через 6 дней в памяти остаётся около 20 % от общего числа первоначально выученного, столько же остаётся в памяти и через месяц. Составленная им кривая забывания приведена на рисунке 1:

Рис. 1. Кривая забывания

Для эффективного запоминания информации применяется мнемотехника - система запоминания, название которой происходит от греческого «mnemonikon» - искусство запоминания. Считается, что это слово придумал Пифагор Самосский в шестом веке до нашей эры. Данная техника основана на использовании нестандартных средств, предполагающих запоминание с помощью построения ассоциативных связей.

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

1) Создание словосочетаний из первых букв слов, составляющих запоминаемую информацию;

2) Запоминание иностранного слова с помощью нахождения к нему созвучных слов;

3) Рифмизация;

4) Поиск нестандартных ассоциаций;

5) Метод Цицерона;

6) Метод Джордано;

7) Метод путешествий, основанный на развитии пространственного изображения.

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

Так как основная задача программы - помощь пользователю с изучением английского языка, то в работе реализуется метод, нацеленный на запоминание английских слов. Данный метод заключается в том, чтобы составить пару из английского слова и его аналога в русском языке и придумать историю или предложение, описывающее ее. Поиск аналога осуществляется на основе разных параметров. Для небольших слов наилучшим аналогом слова будет слово, отличающееся от исходного на 1-2 буквы, при этом разница в согласных буквах существеннее разница в гласных. Также слово больше подходит к искомому, если их длины совпадают и начальные буквы тоже. Например, для английского слова «bread», означающего на русском языке «хлеб», лучшим аналогом будет «бред». Данные слова отличаются друг от друга лишь на одну гласную букву, соответственно расстояние Левенштейна между ними будет 1. Для слова «building», транслит которого - «билдинг», аналогом будет слово «биллинг», редакционное расстояние равно также 1. Однако существует еще один аналог с данным значением параметра - «шиллинг». Оба слова являются созвучными «building», однако у данного слова и слова «биллинг» одинаковая первая буква, поэтому разрабатываемый алгоритм должен также учитывать это. В случае же длинных слов допустимо большое значение расстояния Левенштейна, так как маловероятно нахождение аналога с отличием в 1-2 буквы. Однако если практически полного совпадения слов невозможно, необходимо брать в расчет параметр совпадения подстрок данных слов. Чем длиннее данная подстрока, тем больше подходит слово. Например, у слова «deliberate» с транслитом «дэлиберэйт» подходящий аналог - «либерал», значение длины совпадающей строки равно 5, хотя значение расстояния Левенштейна большое. Таким образом, на выбор аналога влияет много факторов, и в разных случаях необходимо выбрать самое подходящее русское слово.

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

1.5 Обзор применяемых технических методов решения поставленной задачи

В данной работе основная часть поставленной задачи была реализована с помощью машинного обучения (Gradient Boosting) и технологии Word2Vec, созданной для семантического анализа языков на основе векторного представления слов [1]. Алгоритм Gradient Boosting используется в программе при выявлении слова-ассоциации в русском языке для вводимого английского слова. В программе созданная модель Word2Vec используется для выявления отношений между определенными словами в выводимом после поиска ассоциаций предложении-примере для запоминания слов. В мире Word2Vec обычно используется для таких задач как поиск семантически близких слов, кластеризация запроса, выявление семантического отношения между словами, оценка важности определенных слов в запросе. Также существуют похожие технологии Doc2Vec, Word2Phrase, Sentence2Vec, работающие по схожему принципу.

Word2Vec был создан командой исследователей компании Google в 2013 году. Работа самой технологии заключается в следующем: программа получает большой корпус текста, создает словарь из полученных слов и обучается на входных данных, затем каждое слово представляется в качестве вектора, на выходе выдаются координаты слов [2]. Принцип векторного представления базируется на том, что слова, находящиеся рядом с одними и теми же словами в корпусе, имеют схожее значение [3]. При создании Word2Vec использовались 2 различных метода: Skip-gram и Continuous Bag of Words (CBOW). Skip-gram предполагает предсказание определенного слова на основе анализа рядом стоящих слов, у метода CBOW противоположное предназначение - он предсказывает окружающие слова на основе одного слова. Пользователь данной модели может выбирать то, какой из этих двух методов лучше использовать для поставленной задачи [4].

Машинное обучение (Machine Learning) - раздел искусственного интеллекта, изучающий методы и алгоритмы программного самообучения. Данная наука использует методы оптимизации, статистики, теории графов и других математических дисциплин. Ее целью является выявление закономерностей на основе существующих данных. Машинное обучение также тесно связано с интеллектуальным анализом данных (Data Mining) [5][10]. Алгоритмы машинного обучения подразделяются на 3 типа:

1) Обучение с учителем - в системе существуют некоторые описания объекта и возможные ответы, зависимость между объектом и ответом необходимо установить программой;

2) Обучение без учителя - существует только описание объекта без возможных ответов, необходимо самостоятельно выявить закономерности;

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

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

,

где начальное приближение, параметр, определяющий скорость обучения и влияние каждого дерева на общую модель, регрессионное дерево решений.

Алгоритм градиентного добавления основывается на том, что из нескольких деревьев принятия решений формируется комитет, в котором каждое дерево должно компенсировать недостатки предыдущих [6]. На первом этапе строится дерево решений, ограниченное по количество узлу. Затем вычисляется разность результата данного дерево, умноженного на его коэффициент слабости, и искомой переменной. После на основе данной разницы производится следующая итерация. Цикл работает, пока результат работы алгоритма не прекратит улучшаться. Преимуществами Gradient Boosting является то, что алгоритм отличается высоким качеством результатов, даже если работает с большим количеством данных, получившаяся модель небольшая из-за начальных ограничений на размеры, оптимальная модель может быть быстро достигнута. К недостаткам алгоритма можно отнести то, что алгоритм требует хорошую тренировочную выборку, параллелизация вычислений невозможна, возможно переобучение, получившееся решение сложно поддается интерпретации [7][8]. Схема работы алгоритма приведена на рисунке 2.

Рис. 2. Схема работы алгоритма Gradient Boosting

2. ПРАКТИЧЕСКАЯ ЧАСТЬ

2.1 Алгоритм

Алгоритм, реализованный в данной работе, следующий: на вход программа принимает английское слово, к которому надо найти слово-аналог в русском языке. На первом этапе программа посредством API онлайн англо-русских словарей получает транскрипцию слова и его значение в русском языке. Далее в программе используется алгоритм Левенштейна: он позволяет вычислить редакционное расстояние между словами - минимально необходимое число преобразований над словом для превращения его в другое слово. Допустимы операции удаления, замены и вставки букв. Цикл возрастания допустимого значения расстояния Левенштейна начинается с 0 до достижения минимального значения расстояния между транслитом английского слова и словом в имеющемся русском словаре. Вышеперечисленные действия реализованы в классе Translit. На рисунке 3 изображен код создания списка со словами-аналогами:

Рис. 3. Программный код создания списка аналогов

Затем в общем алгоритме для отбора среди полученного списка наиболее подходящих слов используется заранее созданная модель с использованием Gradient Boosting в классе Boosting программы. Задача определения слов-аналогов нетривиальная, так как на результат влияют многие нестандартные факторы. В качестве примера можно привести поиск аналога для английского слова «rabbit» - кролик. «Рэбит» - транслит данного слова. Одним из наиболее подходящих аналогов может быть слово «робот». В данном случае отличие траслита от аналога лишь один символ, однако в случае с английским словом «government» (говернмент) и его возможным аналогом «гувернантка» отличие в согласных в окончании слова значительное, но в начале они практически совпадают. Также отличаются методы подбора для длинных и коротких слов: если для длинных слов значение расстояния Левенштейна равное трем относительно незначительно, то для коротких слов такое значение не подходит. В данном алгоритме для обучающей выборки были вычислены следующие значения:

1) Расстояние Левенштейна между словами;

2) Расстояние между строками, содержащими только согласные этих слов;

3) Расстояние между строками, содержащими только гласные;

4) Длина совпадающей подстроки, если она есть;

5) Среднее арифметическое длин;

6) Совпадение первых букв слов (если слова начинаются с одних букв, то они легче запоминаются человеком).

Выбор данных параметров обусловлен ожидаемым результатом работы программы. Слова похожи по звучанию, если большинство согласных букв в них совпадают, если при этом совпадают большая часть гласных, то степень их созвучия выше. Также пару из двух слов гораздо легче запомнить, если у них совпадают определенные подстроки. Например, русское слово «раунд» полностью содержится в транслите английского слова surrounding - «сэраундинг». Такую пару легче запомнить пользователю.

После вычисления следующих параметров их значения передаются в функцию, создающую модель по алгоритму Gradient Boosting. Тренировочный сет создается для модели следующим образом (Рис. 4):

Рис. 4. Программный код создания файла с тренировочным сетом для модели алгоритма Gradient Boosting

Код создания самой модели в изображении приведен на рисунке 5:

Рис. 5. Программный код создания модели алгоритма Gradient Boosting

Параметры, указанные в коде на данном рисунке обозначают следующее:

1) Здесь n-estimators - число этапов выполнения алгоритма. Так как модель градиентного бустинга может быть склонна к переобучению, по этой причине данное число может быть большим, по умолчанию оно равно 100.

2) Параметр learning_rate обозначает коэффициент слабости каждого дерева: он уменьшает вклад дерева в общую модель.

3) max-depth - максимальная глубина каждой регрессионной оценки. Максимальная глубина ограничивает количество ветвей дерева принятия решений.

4) min_samples_leaf - минимальное количество объектов, расположенных на листьях дерева.

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

6) loss - функция потерь. Здесь выбрана функция потерь Хьюбера, использующаяся в устойчивой регрессии. Также можно выбрать Is - квадратичная регрессия, lad - метод наименьших модулей, quantile - квантильная регрессия.

Последняя строчка на рисунке 5 обозначает начало обучения модели с вышеперечисленными параметрами.

Данная модель применяется к полученному на предыдущем шаге списке слов. Каждому слову соответствует вычисленное значение от 0 до 1, характеризующее соответствие слов-аналогов исходному в зависимости от вышеперечисленных параметров. Слово с максимальным значением и является выбранным аналогом иностранного слова.

После для лучшего запоминания аналога и перевода необходимо составить из них фразу или предложение. Для данной цели также предварительно создается и тренируется модель Word2Vec в классе Word2VecRU. Из имеющегося корпуса текста берутся все слова определенной части речи, стоящие рядом с текущим словом в предложении, и каждое сравнивается с данным словом, в итоге в предложение добавляется наиболее подходящее, вычисленное Word2Vec. Создание самой модели происходит в несколько этапов. На первом этапе корпус разбивается на отдельные предложения с помощью NLTK [9]. Результат разбиения записывается в массив. Данный этап реализован функцией to_sentences() на рисунке 6:

Рис. 6. Программный код создания функции to_sentences() модели Word2Vec

В этой функции используется функция to_wordlist(). В ней удаляются ненужные символы кроме символов русского алфавита (Рис. 7).

Рис. 7. Программный код создания функции to_wordlist() модели Word2Vec

Непосредственное создание модели Word2Vec изображено на рисунке 8:

Рис. 8. Программный код создания модели Word2Vec

Здесь в функции инициализации модели установлены следующие параметры:

1) sentences - сформированный массив из предложений;

2) workers - количество потоков, используемых для обучения модели;

3) size - размерность векторов слов;

4) min_count - минимальное количество значимых слов. Это означает, что если слово встречается реже указанного количества в корпусе, то оно не будет записано в модель;

5) window - сколько слов в данном контексте программа берет в расчет;

6) sample - граница частоты определенного слова в корпусе, рекомендуемый диапазон от .0001 до .01;

7) seed - параметр для случайной генерации.

Формирование самого предложения/фразы происходит в классе Sentence. Создается определенное количество шаблонов, по которым уже строится фраза или предложение. Постановка в нужную форму осуществляется с помощью библиотеки Pymorphy2.

Таким образом, структура проекта приведена на рисунке 9:

Рис. 9. Диаграмма структуры классов программы

2.2 Обоснование выбора методов поставленных задач и сравнение с методами других решений

Для задачи выявления фонетического сходства применяются также фонетические алгоритмы, такие как Soundex, Metaphone, NYSIIS и другие. Принцип этих алгоритмов заключается в том, что слова кодируются определенным образом в зависимости от самого алгоритма, и затем результаты кодирования сравниваются между собой. Фонетические алгоритмы эффективны в поисковых системах, программах для исправления опечаток и грамматических ошибок. Однако зачастую они ошибочно считают разные слова одинаковыми из-за того, что данные слова получили один и тот же код в результате преобразований. Поэтому в этой работе используется модель Gradient Boosting, так как она позволяет создавать гибкие решения с возможностью добавления собственных параметров, и данный алгоритм является одним из наиболее эффективных в машинном обучении. Выбор создания модели отбора слов с помощью алгоритма машинного обучения обусловлен тем, что модель позволяет его производить в зависимости от различных параметров, каждый из которых по-разному влияет на итоговый результат.

В качестве примера программа составляет предложение или фразу для запоминания слов. Задачи данного типа часто реализуются с помощью нейросетей или цепей Маркова. Нейросеть - это математическая модель, реализующая биологическую сеть нейронов живых организмов. Нейросети используются в различных задачах - компьютерное зрение, распознавание образов, методы кластеризации и в других, в том числе и для генерации текста. Нейросети не являются алгоритмом в обычном смысле, они могут обучаться. Несмотря на то, что искусственные нейронные сети перспективны для решения задач наподобие генерации, на данный момент результаты их работы далеки от идеала, так как зачастую при формировании предложения не учитываются сложные правила грамматики языка и правильного употребления слов, если только это не действительный алгоритм. Цепи Маркова с математической точки зрения - это цепочка с конечным количеством случайных событий, где вероятность каждого зависит лишь от состояния на настоящий момент. Следующее слово в предложении выбирается случайно из списка связанных с данной n-граммой слов. Соответственно сгенерированные предложения Марковской цепью маловероятно могут быть грамматически правильными и иметь реальный смысл. Несмотря на то, что задача генерации осмысленного текста является одной из самых сложных задач программирования, для того чтобы получившееся предложение было правильно построено, программа содержит определенные шаблоны, слова в словосочетаниях сравниваются посредством Word2Vec для того, чтобы сгенерированный текст имел больший смысл.

2.3 Обоснование выбора языков программирования и инструментальных средств для создания рабочей версии программы

Программный код работы реализован на Python. Язык программирования был выбран на основании того, что Python является удобным инструментом для реализации проектов, связанных с машинным обучением, для данного языка существует большое количество библиотек с подробной документацией, помимо этого синтаксис языка удобен и интуитивно понятен разработчику.

Для реализации интерфейса программы были выбраны следующие технологии - HTML5, CSS3, Bootstrap, Bottle, jQuery. HTML - это язык текстовой разметки в Интернете. Он используется практически во всех сайтах на данный момент и необходим для задания структуры веб-страницы. Язык HTML интерпретируют браузеры, страницы на HTML передаются по протоколу HTTP. Последней версией языка является HTML5, указанная версия удобна в использовании и имеет некоторые другие особенности, упрощающие верстку сайта. CSS3 - это также последняя версия CSS, языка создания стилей для элементов веб-страниц. Без данной технологии современные сайты не были бы так удобны для пользователей, как сейчас. CSS3 позволяет создавать анимацию без использования JavaScript, поэтому в программе используется для удобства эта версия. Первоначально в качестве фреймворка Python использовался Django - один из самых распространенных фреймворков для создания приложений на Python. Однако в качестве фреймворка в данной программе был выбран микрофреймворк Bottle по той причине, что он прост в программировании и большинство операций реализуются несколькими строчками кода. Помимо вышеперечисленного, он быстр и легок в использовании. Для тех видов анимаций, которые пока недоступны для создания только на CSS, применяется библиотека jQuery.

В программе также использовались следующие Python-библиотеки:

1) Pandas;

2) Numpy;

3) Sklearn;

4) Gensim;

5) Re;

6) NLTK;

7) Pymorphy2;

8) Requests.

Пакет Pandas используется в Python-программах для анализа и обработки данных. Данная библиотека позволяет работать с табличными данными, на их основе строить сводную таблицу, делать группировки и так далее.

В классе Boosting она задействована при создании ансамбля деревьев для переведения категориальных переменных в индикаторные с помощью функции get_dummies() и в функции read_csv() из pandas для чтения файла в формате csv, в котором находится сет для тренировки модели.

Модель GradientBoostingRegressor непосредственно создается средствами библиотеки Sklearn. Sklearn содержит реализации немалой части алгоритмов машинного обучения - алгоритмов обучения без учителя или обучения с учителем на базе языка Python [8]. Библиотека также удобна в использовании и подробно задокументирована, сама работа Sklearn хорошо оптимизирована разработчиками. В программе она используется непосредственно для создания модели алгоритма градиентного бустинга в классе Boosting, ее тренировки, а также для вычисления доли ошибок в тренировочном и тестовом сетах. Ансамбль создается с помощью метода Sklearn ensemble.GradientBoostingRegressor() и обучается с помощью метода fit(). Сохраняется модель для возможного дальнейшего использования и обучения разработчиком.

Библиотека Numpy предназначена для работы с многомерными массивами, также она предоставляет удобные инструменты для работы с ними. В Numpy позволяет производить высокоуровневые математические операции с матрицами и массивами, преобразовывать их различными способами программно. В данной работе она используется для ввода данных пользователя и преобразования их относительно заданных границ - np.array(mas).reshape((1, -1)).

Gensim - это Python-библиотека для тематического моделирования документов. Она была специально создана для обработки больших корпусов текста. В ней реализованы такие популярные алгоритмы как Word2Vec, Doc2Vec, Locality-sensitive hashing и другие. В данной работе применяется для создания модели Word2Vec. Непосредственное использование функций данной библиотеки в программном коде проиллюстрировано на рисунке 10:

Рис. 10. Использование библиотеки Gensim при создании модели Word2Vec

Pymorphy2 - библиотека для морфологического анализа на Python. Методы в Pymorphy2 позволяют определять часть речи, род, падеж, число и другие категории слов, используя данную библиотеку, можно привести слово в начальную или произвольную форму, выбрать правильный вариант разбора, согласовывать слова с числительными и так далее. В основном в программе Pymorphy2 задействована для постановки в форму в соответствии с шаблонами предложений в классе Sentence. На рисунке 11 показано употребление метода parse() [0].inflect() из Pymorphy2.

Рис. 11. Пример использования библиотеки Pymorphy2

Requests - это библиотека для работы HTTP. Существует достаточное количество библиотек для HTTP на Python, однако Requests была выбрана в этой работе из-за ее удобства и легкости в использовании. Применение Requests посредством вызова метода get() показан на рисунке 12:

Рис. 12. Пример использования библиотеки Requests

Библиотека NLTK используется при парсинге сайтов, адреса которых получены при запросе в поисковой системе. C помощью re в программе осуществляется работа с регулярными выражениями.

3. РЕЗУЛЬТАТЫ

Разрабатываемая программа позволяет помочь пользователю в изучении английского языка. Пользователь вводит в программу изучаемые слова и их значения, и на их основе программа подбирает подходящие ассоциации на русском языке и формирует из них словосочетание/предложение. Слова подбираются на основе определенного количества параметров, выбранное программой слово является наиболее близким по звучанию к исходному слову на английском языке. Пример списка, выведенного программой к слову «building»:

билдинг филин 0.7654327

билдинг шиллинг 0.7588764

билдинг бидон 0.6123480

билдинг биллинг 0.8123480

Соответственно правильным ответом будет слово «биллинг» в списке, показанным программой. Текст вывода программы на слово «cat»:

Введенное слово - cat

Перевод - кошка

кит 0.405527193454

кот 0.405527193454

Слово-аналог - кот

Кошка сидела около кота спиной к двери

Ее интерфейс реализован с помощью HTML, CSS и библиотеками Bootstrap и библиотекой JavaScript - jQuery. Он представляет собой интернет-приложение, где пользователь вводит слово, а затем получает найденные варианты слов-аналогов и составленное предложение в качестве примера. На следующих рисунках (Рис. 13, 14, 15) показан внешний вид интерфейса:

Рис. 13. Интерфейс ввода слова

Рис. 14. Стартовая страница приложения

Рис. 15. Описание проекта в приложении

ВЫВОД

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

1) Программа, в который пользователь может ввести английские слова;

2) Поиск аналогов к английскому слову;

3) Возможность пользователя эффективно учить английский язык, легко запоминая трудные слова;

4) Удобный интерфейс, понятный пользователю;

5) Вывод других возможных аналогов списком.

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

ЛИТЕРАТУРА

1. Raschka S. Python Machine Learning. Birmingham: Packt Publishing, 2015.

2. Jurafsky D., Martin J. Speech and Language Processing. New Jersey: Prentice Hall, 2000.

3. Daelemans W, van den Bosch A. Memory-Based Language Processing. Cambridge: Cambridge University Press, 2005.

4. Liddy E. Natural Language Processing. New York: Pergamon Press, 2001.

5. Hastie T. The Elements of Statistical Learning: Data Mining, Inference, and Prediction.

Stanford: Springer, 2007.

6. Anderson T.W. An Introduction to Multivariate Statistical Analysis. Boca Raton: CRC Press, 2009.

7. Anderson T.W. Greedy Function Approximation: A Gradient Boosting Machine. Stanford: John Wiley & Sons, 2003.

8. Geron A. Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems. Sebastopol: O'Reilly, 2017.

9. Mьller A.C., Guido S. Introduction to Machine Learning with Python. New York: O'Reilly, 2016.

10. James Pustejovsky J., Stubbs A. Natural Language Annotation for Machine Learning. Boston: O'Reilly, 2012.

Размещено на Allbest.ru

...

Подобные документы

  • Разработка программы, реализующей построение объемной гистограммы с использованием свойств языка программирования Java. Возможность графически отобразить статистические данные урожайности как основное требование к программе. Реализация кода программы.

    курсовая работа [333,5 K], добавлен 21.01.2013

  • Особенности разработки приложений для операционной системы с помощью императивного, структурированного, объектно-ориентированного языка программирования Delphi. Формальное начало программы. Выделение конца программного блока. Листинг и описание программы.

    курсовая работа [1,2 M], добавлен 04.08.2014

  • Программный комплекс для разработки программы транслирующей программу с языка Pascal на язык С++. Построение логической и арифметической модели решения. Разработка компилятора для программы. Методы отладки программы и создание для нее документации.

    курсовая работа [742,6 K], добавлен 03.07.2011

  • Программное обеспечение - важный компонент функционирования компьютерной деятельности. Изучение принципа работы резидентных программ. Разработка программы по удалению слов из текстового файла без учета регистра. Требования к программе, разработка проекта.

    курсовая работа [404,5 K], добавлен 03.02.2011

  • История появления и развития методов шифрования, используемые в данном процессе приемы и инструменты. Принципы вскрытия одноалфавитных систем, обзор существующих программ. Требования к программному продукту и разработка руководства пользователя.

    курсовая работа [755,9 K], добавлен 08.07.2014

  • Описание языка программирования Java: общие характеристики, главные свойства, краткий обзор. Надежность и безопасность, производительность и базовая система программы. Разработка программы поиска по словарю, алгоритм её работы. Общий вид кода программы.

    курсовая работа [20,3 K], добавлен 28.10.2012

  • Основной метод языка С# Main (), его роль в работе программы, варианты написания и ключевые слова. Особенности перегрузки методов, их рекурсивный вызов. Понятие модификаторов доступа, их ключевые функции. Разработка алгоритмов для тематических программ.

    курсовая работа [1,3 M], добавлен 30.05.2015

  • Изучение принципов построения линейных алгоритмов и простых расчетных программ на языке программирования C. Разработка программы расчета математических выражений на основе вводимых данных. Создание консольных приложений в среде Microsoft Visual Studio.

    лабораторная работа [254,4 K], добавлен 23.11.2014

  • Методы работы с файлами на языке Си. Принципы модульного программирования. Реализация программы с дружелюбным интерфейсом для комфорта пользователя и организацией высокоэффективной работы по изучению лексики английского языка. Подпрограммы, их функции.

    курсовая работа [1,6 M], добавлен 27.02.2015

  • Разработка программы автоматизации процесса проверки знаний учащихся. Использование языка программирования Borland Delphi 7.0, его свойства, компоненты для работы со строками. Создание обучающих тестов на знание лексики и грамматики английского языка.

    курсовая работа [521,0 K], добавлен 06.03.2016

  • Особенности исследования методик объектно-ориентированного проектирования программ с помощью языка UML по формализации, решению поставленной задачи, технологических приемов разработки объектно-ориентированных программ на языке Си++. Разработка программы.

    контрольная работа [188,9 K], добавлен 22.10.2014

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

    дипломная работа [5,6 M], добавлен 29.06.2011

  • Основы программирования на 32-битном Ассемблере, разработка с его помощью программы, демонстрирующей работу одного из разделов ОС Windоws. Описание используемых АРI-функций как интерфейса программирования приложений. Листинг программы, результаты работы.

    курсовая работа [164,5 K], добавлен 18.05.2014

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

    курсовая работа [305,9 K], добавлен 03.07.2011

  • Разработка программы обработки типизированных файлов с кодом на языке Object Pascal, с использованием компонентов Delphi для ввода и вывода данных. Разработка экранных форм и алгоритма программы. Описание программных модулей и инструкция оператору.

    курсовая работа [1,5 M], добавлен 08.02.2011

  • Разработка игры "Экзамен" с применением объектно-ориентированного программирования и языка Java (в среде Eclipse Helios). Структура программы и алгоритм решения задачи. Описание методов и переменных. Экспериментальное тестирование и оценка программы.

    курсовая работа [122,5 K], добавлен 19.05.2011

  • Разработка гипотетической машины при помощи макросредств ассемблера. Разработка алгоритма для реализации обязательных команд: сравнения двух символьных строк; их обмена; определения длины слова. Основные функции обработки строки, листинг программы.

    курсовая работа [59,6 K], добавлен 14.07.2012

  • Разработка программы проверки знаний для тестирования студентов по программированию с кодом на языке Delphi. Проектирование визуального интерфейса и словесный алгоритм работы программы. Алгоритмы разработанных процедур и функций, инструкция пользователя.

    курсовая работа [506,5 K], добавлен 21.02.2011

  • Основные компоненты среды Delphi, используемые в программе для сжатия и восстановления файлов. Код программы, разбивка массива на промежутки. Проверка определенных элементов кодовых слов. Поиск кодовых слов в остатке. Результаты тестирования приложения.

    курсовая работа [94,1 K], добавлен 19.12.2010

  • Принципы разработки алгоритмов и программ на основе процедурного подхода и на основе объектно-ориентированного подхода. Реализация программы Borland Pascal 7.0, ее интерфейс. Разработка простой программы в среде визуального программирования Delphi.

    отчет по практике [934,7 K], добавлен 25.03.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.