Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Python. Алгоритмизация и программирование. Решение лингвистических задач

Покупка
Новинка
Артикул: 829682.01.99
Доступ онлайн
130 ₽
В корзину
Основная цель пособия - выработать умения и навыки разработки алгоритмов и создания программ на языке Python для решения лингвистических задач. Представленный в пособии материал позволяет - как самостоятельно, так и с помощью преподавателя - получить представление о принципах, методике и возможностях реализации интердисциплинарной компетенции. В данном пособии сбалансированно представлены как компактные теоретические основы, так и практические рекомендации по решению ряда типичных задач. Пособие предназначено для студентов технического и гуманитарного профилей, изучающих учебные дисциплины, связанные с проблематикой информационного обслуживания и компьютерно-опосредованной коммуникации.
Баркович, А. А. Python. Алгоритмизация и программирование. Решение лингвистических задач : учебное пособие / А. А. Баркович, Н. В. Зыгмантович, А. Е. Жданович. - 2-е изд., стер. - Москва : ФЛИНТА, 2024. - 100 с. - ISBN 978-5-9765-5447-4. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2145560 (дата обращения: 27.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
А.А. Баркович

Н.В. Зыгмантович

А.Е. Жданович

Учебное пособие

2-е издание, стереотипное

Москва

Издательство «ФЛИНТА»

2024

PYTHON

АЛГОРИТМИЗАЦИЯ 

И ПРОГРАММИРОВАНИЕ

РЕШЕНИЕ 

ЛИНГВИСТИЧЕСКИХ ЗАДАЧ
УДК 81'322(075.8)
ББК 81.1я73
         Б25

ISBN 978-5-9765-5447-4
© Баркович А.А., Зыгмантович Н.В., 
    Жданович А.Е., 2024
© Издательство «ФЛИНТА», 2024

Баркович А.А.

Б25         Python. Алгоритмизация и программирование. Решение лингвистических

задач : учеб. пособие / А.А. Баркович, Н.В. Зыгмантович, А.Е. Ждано-
вич. — 2-е изд., стер. — Москва : ФЛИНТА, 2024. — 100 с. : ил. — ISBN
978-5-9765-5447-4. — Текст : электронный.

Основная цель пособия – выработать умения и навыки разработки

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

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


УДК 81'322(075.8)
ББК 81.1я73
СОДЕРЖАНИЕ 

РАЗДЕЛ 1. ТЕОРЕТИЧЕСКАЯ СПЕЦИФИКА РЕШЕНИЯ  
ЛИНГВИСТИЧЕСКИХ ЗАДАЧ. ЛИНГВОИНФОРМАЦИОННАЯ
ТЕРМИНОСИСТЕМА .............................................................................................. 5 
1.1. Специфика употребления терминов в компьютерной лингвистике ............. 5 
1.2. Этапы решения лингвистической задачи ......................................................... 8 

РАЗДЕЛ 2. СУЩНОСТЬ И ФУНКЦИОНАЛЬНОСТЬ АЛГОРИТМИЗАЦИИ. 
МЕТАЯЗЫКОВАЯ ХАРАКТЕРИСТИКА АЛГОРИТМА .................................. 10
2.1. Понятие алгоритма ........................................................................................... 10
2.2. Структура и свойства алгоритма .................................................................... 10
2.3. Способы записи алгоритма ............................................................................. 11
2.4. Типы алгоритмов .............................................................................................. 12

РАЗДЕЛ 3. ПРОГРАММИРОВАНИЕ КАК ДЕЯТЕЛЬНОСТЬ ......................... 20 
3.1. Программа и программирование .................................................................... 20 
3.2. Система программирования ............................................................................ 21 

РАЗДЕЛ 4. ОСНОВЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ PYTHON ................ 23 
4.1. Язык программирования Python ..................................................................... 23 
4.2. Основные правила синтаксиса в языке Python .............................................. 24 
4.3. Системы программирования для языка Python ............................................. 24 
РАЗДЕЛ 5. РЕАЛИЗАЦИЯ ОСНОВНЫХ АЛГОРИТМИЧЕСКИХ
КОНСТРУКЦИЙ НА ЯЗЫКЕ PYTHON ............................................................... 27 
5.1. Системы программирования для языка Python ............................................. 27 
5.2. Операторы управления программой. Условные операторы ........................ 28 
5.3. Операторы управления программой. Оператор цикла FOR ........................ 29 
5.4. Операторы управления программой. Оператор цикла WHILE ................... 30 
5.5. Функции и модули ........................................................................................... 31 

РАЗДЕЛ 6. СТРУКТУРЫ ДАННЫХ ЯЗЫКА PYTHON .................................... 36 
6.1. Типы и структуры данных ............................................................................... 36 
6.2. Работа со строками ........................................................................................... 38 
6.3. Работа со списками ........................................................................................... 49 
6.4. Кортежи ............................................................................................................. 54 
6.5. Словари ............................................................................................................. 55 
6.6. Множества ......................................................................................................... 62 

РАЗДЕЛ 7. ИСПОЛЬЗОВАНИЕ РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ  
В ЯЗЫКЕ PYTHON ................................................................................................. 65 
7.1 Функции модуля re ............................................................................................ 65 
7.2 Примеры использования регулярных выражений ......................................... 69 

35
РАЗДЕЛ 8. РАБОТА С ФАЙЛАМИ НА ЯЗЫКЕ PYTHON ............................... 71 
8.1. Методы работы с файлами .............................................................................. 72 
8.2. Работа с файлами в среде Google Colab ......................................................... 74 

РАЗДЕЛ 9. ПРАКТИКУМ. ПРИМЕРЫ РЕШЕНИЯ ЛИНГВИСТИЧЕСКИХ
ЗАДАЧ НА ЯЗЫКЕ PYTHON ................................................................................ 76 
9.1. Пример поэтапного решения лингвистической задачи ................................ 76 
9.2. Технология проектирования алгоритмов и создания скриптов анализа  и
синтеза слов . ............................................................................................................ 78 
9.3. Технология проектирования алгоритмов  и создания скриптов анализа
предложений . ........................................................................................................... 88 
9.4. Технология проектирования алгоритмов и создания скриптов  анализа
текста . ....................................................................................................................... 94 

СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ ................................................. 99 
РАЗДЕЛ 1. ТЕОРЕТИЧЕСКАЯ СПЕЦИФИКА РЕШЕНИЯ ЗАДАЧ. 

ЛИНГВОИНФОРМАЦИОННАЯ ТЕРМИНОСИСТЕМА 

1.1 Специфика употребления терминов в компьютерной лингвистике 

Важнейшими типичными задачами компьютерной лингвистики являются 

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

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

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

метаописаний.  Метаописание, в свою очередь, – репрезентация объекта в контексте 
и средствами вторичной семиотической, абстрактной системы; обобщенное 
описание какого-либо объекта, высшее по отношению к предыдущему описанию; 
описание описания. 

С точки зрения теории задача в самом общем понимании – это проблема, цель, 

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

Такими задачами в лингвистике могут быть, например, цели: 

получить статистические данные из текста; 

перевести текст с одного языка на другой; 

выделить смысловые единицы текста и т. д. 

Чтобы решить задачу, необходимо: 

сформулировать начальные условия;  

определиться с  методикой ее решения; 

выбрать путь решения.  

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

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

5
Важно учитывать специфику использования ряда лингвистических терминов в 
среде компьютерной лингвистики. Такой спецификой обладают как самые общие 
термины, например, семантика и синтаксис, так и достаточно узкие термины, 
например, словоупотребление и лемма. Рассмотрим особенности использования 
ряда лингвистических терминов, активно используемых в процессе алгоритмизации 
и программирования.  
Семантика – содержательная, смысловая сторона языковых единиц. 
Семантика в компьютерной лингвистике – это правила, определяющие 
последовательность действий компьютера, которую он должен выполнить, работая 
по той или иной программе. Семантика приписывает значения (действия) 
различным синтаксическим конструкциям языка программирования. В частности, 
семантика языка высокого уровня может быть представлена описанием правил 
выполнения соответствующей виртуальной машины.  
Синтаксис – часть грамматики, изучающая сочетания слов и более сложных 
языковых единиц. 
Синтаксис в компьютерной лингвистике – это правила, описывающие 
комбинации знаков кода, соответствующие параметрам языка программирования и 
обеспечивающие корректную работу программы. В частности, программы, 
обладающие 
синтаксисом, 
считаются 
правильно 
написанными 
и 
структурированными. 
Код в компьютерной лингвистике – текст программы или ее фрагмент. 
Традиционно код – это система условных знаков для отображения других знаков или 
объектов обозначения. Общеизвестный пример кода – язык. Код является 
стабильной системой, но из него каждый раз набирается новая комбинация – из 
имеющихся знаков – для конструирования сообщения. Конечно, код, т. е. тот или 
иной язык программирования, не создается заново при написании программы – 
«текст» программы пишется с помощью известного заранее кода. Однако в 
компьютерном сленге устойчиво закрепилось речевое клише «писать код», что 
означает ‘писать текст программы’. 
Также, при решении лингвистических задач с помощью компьютера 
необходимо учесть сложившуюся значимость следующих ключевых терминов. 
Словоупотребление в компьютерной лингвистике – употребление слова как в 
разных значениях, так и в разных формах. Словоформа – словоизменительный 
вариант слова. Лемма – совокупность словоформ, являющихся флективными 
вариантами одного и того же базового слова. Для сравнения: в теоретической 
лингвистике лемма – неизмененная, исходная форма слова, например, для 
существительных это форма именительного падежа единственного числа. 
В теоретической лингвистике ключевым является термин лексема, или слово. В 
компьютерной 
лингвистике 
лексема 
(слово) 
– 
единица, 
обладающая 
содержательной самостоятельностью и реализующая уникальную оппозиционную 
значимость в соответствующем лексическом континууме; совокупность  вариантов 

6
слова, объединённых общим значением. Еще более специфичным является  так 
называемое орфографическое слово – типичная последовательность знаков, 
разделенных пробелом. К орфографическим словам относятся и сами пробелы, а 
также знаки препинания (пунктуационные знаки). 
Например, рассмотрим следующий текст: 

Солнце, осень. Осень золотая. Лучи осеннего солнца «играют» в золоте 
листвы. Осень – золотая пора!  

В нем насчитывается 36 орфографических слов. Однако для получения 
дополнительных статистических данных лексического характера программными 
средствами знаки препинания из текста потребуется удалить. В результате текст 
будет иметь вид: 

Солнце осень Осень золотая Лучи осеннего солнца играют в золоте листвы 
Осень золотая пора  

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

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

СОЛНЦЕ ОСЕНЬ ОСЕНЬ ЗОЛОТАЯ ЛУЧИ ОСЕННЕГО СОЛНЦА ИГРАЮТ 
В ЗОЛОТЕ ЛИСТВЫ ОСЕНЬ ЗОЛОТАЯ ПОРА  

Таблица 1 – Список словоформ анализируемого текста (в алфавитном 
порядке) 

№ п/п 
Словоформы 
Частота 

1 
В 
1 

2 
ЗОЛОТАЯ  
2 

3 
ЗОЛОТЕ 
1 

4 
ИГРАЮТ 
1 

5 
ЛИСТВЫ 
1 

6 
ЛУЧИ 
1 

7 
ОСЕННЕГО 
1 

8 
ОСЕНЬ 
3 

7
 
 
 
 
 
Итого в тексте находится 11 словоформ (таблица 1). 
Чтобы подсчитать, сколько разных лемм встретилось в этом тексте, нужно 
проанализировать их базовую значимость и словоизменительную вариативность.  
Таблица 2 – Список лемм анализируемого текста (в алфавитном порядке) 

 

 

 

 

\ 

 

 

 

 

 

Итого в тексте находится 10 лемм (таблица 2). 

 

1.2 Этапы решения лингвистической задачи 
 

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

описание решаемой задачи; 
формулирование предполагаемого результата. 

9 
ПОРА 
1 

10 
СОЛНЦА 
1 

11 
СОЛНЦЕ 
1 

№ п/п 
Слова 
Частота 

1 
В 
1 

2 
ЗОЛОТО 
1 

3 
ЗОЛОТОЙ 
2 

4 
ИГРАТЬ 
1 

5 
ЛИСТВА 
1 

6 
ЛУЧ 
1 

7 
ОСЕНЬ 
3 

8 
ОСЕННИЙ 
1 

9 
ПОРА 
1 

10 
СОЛНЦЕ 
2 

8
Постановка задачи является первым шагом в дальнейшей последовательности 

действий. Целесообразно выделить следующие этапы алгоритма соответствующего 
процесса.  

постановка задачи; 

разработка алгоритма (модели); 

проведение компьютерных вычислений; 

анализ результатов работы компьютерной программы. 

При разработке модели некоторого объекта, процесса или явления, в нем, 

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

Вопросы для самоконтроля: 
1. Приведите примеры лингвистических задач, решаемых с помощью 

компьютера. 

2. Что необходимо для решения лингвистической задачи? 
3. Что такое словоупотребление, словоформа, слово? 
4. Что такое орфографическое слово? 
5. Перечислите назначение каждого этапа решения лингвистической задачи. 

  
 

РАЗДЕЛ 2. СУЩНОСТЬ И ФУНКЦИОНАЛЬНОСТЬ АЛГОРИТМИЗАЦИИ. 
МЕТАЯЗЫКОВАЯ ХАРАКТЕРИСТИКА АЛГОРИТМА 

 

2.1 Понятие алгоритма 
 

Алгоритмизация 
– 
процесс 
составления 
алгоритмов 
для 
решения 
прикладных задач. Алгоритмизация является обязательным этапом в процессе 
разработки программ и в решении задач посредством компьютера. 

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

Задача – проблемная ситуация, на разрешение которой нацелен алгоритм.  

В широком смысле слова алгоритм может подразумевать выполнение разного 
рода последовательностей физических или умственных действий.  

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

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

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

 

2.2 Структура и свойства алгоритма 
 

Алгоритм состоит из определенной последовательности так называемых 
«шагов». Шаг – этап выполнения алгоритма. 

10
Дискретность – алгоритм является точным и однозначным, состоит из 
определенных предварительно шагов, которые могут быть пронумерованы. 

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

Результативность – алгоритм создается для решения какой-либо задачи. 

Завершенность – число шагов алгоритма конечно и ограничено. 

Массовость – по заданному алгоритмом шаблону может быть решен целый 
ряд типовых задач (они отличаются лишь значениями переменных). 

Детерминированность – при многократном решении с помощью 
алгоритма задачи с одинаковыми условиями всегда получается один и тот 
же результат. 

Формализованность – представленность структуры алгоритма с помощью 
определенного набора знаков (т. е. кода, языка). 

 

2.3 Способы записи алгоритма 
 

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

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

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

Таблица 3 – Примеры фигур, используемых для графической записи алгоритма 

Параллелограмм 
Используется 
для 
обозначения 
действий 
ввода 
информации 
в 
компьютер и вывода информации из 
него

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

11
Для решения лингвистических задач часто используется вербально-
графический способ записи алгоритма. 

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

Псевдоалгоритмический 
способ 
записи 
алгоритма 
подразумевает 

использование так называемого псевдокода – компактного (зачастую 
неформального) языка описания алгоритмов, использующего ключевые 
слова языков 
программирования, 
но 
опускающего 
несущественные 

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

2.4 Типы алгоритмов 

По структуре выполнения алгоритмы и программы делятся на три вида: 

линейные; 
с ветвлением (ветвящиеся); 
с повторением (циклические). 

Линейные вычислительные алгоритмы 

Линейный алгоритм – это такой алгоритм, в котором все действия 

выполняются 
последовательно 
и 
однократно. 
Схема 
представляет 
собой 

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

Служит для указания тех блоков 
алгоритма, на которые передается 
управление от блоков первых трех 
типов

Ромб 
Используется 
для 
проверки 

различных условий

Овал 
Используется 
для 
обозначения 

начала и конца алгоритма

12

Круг 
Доступ онлайн
130 ₽
В корзину