Similar presentations:
Решение простой лингвистической задачи с помощью компьютера
1. Решение простой лингвистической задачи с помощью компьютера
Этапы решения задачи1.
2.
3.
4.
Постановка задачи
Разработка модели
Проведение компьютерного
эксперимента
Анализ результатов работы
компьютерной модели
2. Постановка задачи
Говоря о постановке задачи, выделяют следующиедействия:
описание решаемой задачи
формулирование цели процесса моделирования
анализ оригинала модели
При анализе оригинала модели (некоторого объекта,
процесса или явления) в нем прежде всего выделяются
формальные свойства оригинала, которые мог бы легко
опознать компьютер
2
3.
Постановка задачиС точки зрения современной психологии задача в
самом общем понимании - это некоторая цель,
поставленная в конкретных условиях и требующая
исполнения, решения.
Примерами интеллектуальных задач являются
следующие:
–
–
–
3
решить полное квадратное уравнение ах2 + bх + с - 0;
составить реферат научного текста;
перевести текст с английского языка на русский и т.д.
4. Постановка задачи
Чтобы решить задачу, необходимо знать ее начальныеусловия, а также метод или способ ее решения.
Так, чтобы решить полное квадратное уравнение необходимо
знать конкретные значения коэффициентов а, b, и с (начальные
условия). В качестве метода решения этого уравнения надо
использовать правило вычисления значений x1 и х2:
- b b2 - 4ac
x1,2 =
2a
Чтобы перевести текст на русский язык, необходимо иметь, как
минимум, англо-русский словарь и знать английскую и русскую
грамматики, лексикологию и еще многое другое. Все это начальные условия. В качестве метода решения этой задачи
выступают те правила перевода текстов, которым обучают в
вузе.
4
5.
Для решения лингвистической задачи введемнекоторые понятия.
Цепочка буквенных символов, находящаяся в тексте
между двумя знаками пробела, называется
словоупотреблением.
Словоупотребление, находящееся вне предложения
или текста, будем называть словоформой.
Несколько словоформ, имеющих одно и то же
лексическое значение, образуют слово или лексему.
Предложением, с компьютерной точки зрения,
называется цепочка словоупотреблений между
двумя знаками конца предложения
5
6.
Например, в тексте:СКОРО_ПРИДЕТ_ВЕСНА_._ВЕСНОЙ_ЛЕГЧЕ_ДЫШИТСЯ_._ПРИХОДИ
_ВЕСНА_!
8 словоупотреблений. Если бы из единиц этого текста составлялся алфавитночастотный словарь, то в нем оказалось бы 7 словоформ.
Словоформы
6
1. ВЕСНА
2
2. ВЕСНОЙ
3. ДЫШИТСЯ
4. ЛЕГЧЕ
5. ПРИДЕТ
6. ПРИХОДИ
7. СКОРО
1
1
1
1
1
1
Слова
1. ВЕСНА
3
2. ДЫШАТЬСЯ 1
3. ЛЕГКО
1
4. ПРИХОДИТЬ 2
5. СКОРО
1
7. 1. Постановка задачи
Описание решаемой задачи: необходимо найти в группе из 10русских глаголов глаголы в инфинитиве без частицы –ся или –сь
и напечатать их.
Цель процесса моделирования: создать модель опознавания
инфинитивной формы русского глагола.
Решению каждой лингвистической задачи должен предшествовать
анализ соответствующего лингвистического материала, для
данной задачи, конкретных слов.
Изучив большое число русских глаголов можно сделать вывод, что
глаголы (невозвратные) в инфинитивной форме заканчиваются
буквосочетаниями –ть, -чь, -ти. Это и есть те формальные
признаки, на которые будет опираться модель.
Выход в меню
7
8. Разработка модели
На этапе непосредственной разработки модели создаетсяалгоритм решения задачи.
Слово алгоритм происходит от слова algorithmi - латинской
формы написания имени великого математика IX века альХорезми. Он впервые четко сформулировал правила
выполнения арифметических действий.
Сейчас это понятие используется для обозначения
последовательности
любых
действий:
арифметических,
логических, взятия логарифмов, вычисления синуса и т.п.).
8
9. Общие понятия об алгоритме
Алгоритм - точное предписание о выполнениив
определенном
порядке
некоторой
последовательности действий (физических
или умственных), приводящее к решению
некоторой типовой задачи.
Например,
при
необходимости
сварить
кофе
последовательность физических действий будет такой:
вскипятить нужное количество воды, засыпать кофе в горячую
воду (одну-две чайные ложки на стакан воды), нагреть воду до
кипения (но не кипятить) и т.д.
9
10. Свойства алгоритма
10Свойства алгоритма
Дискретность - алгоритм разбивается на
конечное число действий-шагов, которые могут
быть пронумерованы. Причем только после
выполнения одного предписания можно перейти
к выполнению другого.
Результативность - при всех начальных
условиях число шагов алгоритма конечно, и он
приводит к решению задачи.
11. Свойства алгоритма
11Массовость - по данному алгоритму может быть
решен целый ряд типовых задач (они отличаются
лишь различными начальными условиями).
Детерминированность - при многократном
решении одной и той же задачи с одинаковыми
начальными условиями всегда получается один и
тот же результат.
Формализованность - тот, кто его выполняет
(человек, машина), может не вникать в смысл того,
что он делает согласно предписаниям алгоритма, и
все равно придет к верному результату.
12. Способы записи алгоритмов
12
Словесный способ сводится к тому, что
составляющие алгоритм шаги (предписания)
записываются в виде слов и предложений
естественного языка.
При графическом представлении алгоритма его
шаги изображаются разными геометрическими
фигурами (блоками), образующими блок-схему
алгоритма. Связи между блоками обозначены
стрелками, соединяющими соответствующие
фигуры.
Для лингвистических задач используется словеснографический способ записи алгоритма.
Далее
13. Способы записи алгоритмов Графическое представление алгоритма
13Способы записи алгоритмов
Графическое представление алгоритма
Параллелограмм
используется для обозначения действий ввода
информации в компьютер и вывода информации
из него
Прямоугольник
используется для записи вычислительных и
некоторых других действий
Ромб
используется для проверки различных условий
Овал
используется для обозначения начала и конца
алгоритма
Круг
служит для указания тех блоков алгоритма, на
которые передается управление от блоков
первых трех типов
Назад
14. Способы записи алгоритмов
При табличном задании алгоритма его шаги
записываются в графах специальных таблиц.
Чаще всего такой способ записи алгоритма
используется
для
выполнения
различных
вычислений по формулам.
Псевдокод – краткая система обозначений,
предназначенная
для
неформального
представления идей в процессе разработки
алгоритма. Такой подход обычно используется,
когда целевой язык программирования известен
заранее.
Выход в меню
14
15. 2. Разработка модели
Для решения нашей лингвистической задачи, очевидно, необходимовыполнить следующую цепочку "умственных" действий:
1.
Взять очередной анализируемый глагол
2.
Выделить у этого глагола две последние буквы
3.
Посмотреть, совпадают ли эти буквы с буквами ть, чь, ти. Если да,
то перейти к действию 4; если нет, то выполнить действие 6
4.
Сделать вывод: "Данный глагол употреблен в инфинитиве"
5.
Перейти к действию 7
6.
Сделать вывод: "Данный глагол употреблен в личной форме"
7.
Подсчитать число проанализированных глаголов
8.
Проверить, все ли 10 глаголов проанализированы. Если нет, то
перейти к выполнению действия 1; если да, то перейти к действию 9
9.
Закончить работу
Назад
15
16. Алгоритм решения задачи
12
Начало
Вводим очередной русский глагол
Алгоритм решения
задачи
Подсчитать число введенных глаголов
3
Введен 11
глагол?
да
Конец
нет
4
Отделяем у глагола 2 последние буквы
5
Это “ть”,
“чь” или
” ти”?
да
нет
6
7
Глагол употреблен в инфинитиве
Глагол употреблен в личной форме
Назад
1
1
17. 3. Проведение компьютерного эксперимента
На данном этапе должна быть написана компьютерная программа на языкепрограммирования.
Язык программирования –
искусственный язык, состоящий
из фиксированного словаря и совокупности правил, называемых
синтаксисом, которые используются для составления команд,
выполняемых впоследствии компьютером
Алфавит языка
Основные составляющие языка
1. Алфавит языка.
2. Типы исходных данных.
3. Операторы обработки исходных данных.
Все прописные и строчные буквы латинского и русского
алфавита
Десятичные цифры от 0 до 9
Знаки арифметических действий
Знаки логических действий
Знаки-разделители: "." , ",", ";" ," , " ' " , "(" , ")" ,"_"
Специальные знаки: "#", "$", "&" ,"!" , "%"
17
18. Типы исходных данных
Данные, представленные буквами (буквосочетаниями) называютсясимвольными или строковыми.
Данные, представленные числами называются вещественными .
Каждый тип информации может быть представлен в виде констант
(постоянных величин) и переменных.
Строковые константы - это обычные буквы, слова, предложения любого
естественного языка, заключаемые в одинарные или двойные кавычки.
Например: "ВЕСНА", “2002 г.", ‘ПЕТРОВ И.В.’ и т.п.
18
Каждая строковая переменная имеет имя – это некоторая область
оперативной памяти, где будет размещаться соответствующее данное
(например, буква, буквосочетание, слово, текст и …). Имя может состоять из
латинских букв и цифр. Например: Х, К2, S9, BUK.
Вещественные константы - это привычные для человека дробные и
целые числа.
Вещественная переменная, как и строковая, должна иметь свое имя. Оно
записывается точно так же, как и имя строковой переменной. Например: X,
К2, S9, BUK, STROKA и т.п.
19. Операторы обработки исходных данных
Оператор - это условная запись действия,выполняемого компьютером над некоторой
информацией (данными).
В самом общем виде оператор записывается так:
Имя оператора Содержание оператора
имя оператора - это одно из слов или частей слов английского
языка, обозначающее то действие, которое этот оператор
выполняет;
содержание оператора - это какая-то константа или
переменная, какое-то арифметическое или логическое
выражение.
19
20. Основные группы операторов
1. арифметических действий2. логических действий
3. управления программой
4. ввода и вывода информации
5. специальных
Простейшим из операторов является оператор присваивания,
который в общем виде записывается так: L=К
L - имя любой переменной, которой присваивается значение К (вместо К может быть число,
слово, предложение, какая-то другая переменная или арифметическое выражение).
Операторы арифметических действий выполняют
различные арифметические операции над переменными (+,,*,/,^). НапримерY = X^2-5*X + 3
В операторах логических действий выполняются
следующие логические операции (==,<,>,<=,>=,!=, OR, AND).
20
21. Операторы управления программой. IF ("если то"):
Операторы управленияпрограммой. IF ("если то"):
IF условие:
оператор
Если мы хотим присвоить переменной какое-либо значение,
то используем оператор назначения — '=' (знак равно):
переменная = значение
Но если мы хотим сравнить переменную и значение, то
используем оператор сравнения. Давайте проверим,
равна ли переменная определённому значению. Для этого
мы используем '==' (два знака равенства):
переменная == значение
Если у нас есть переменная под названием loop и мы хотим
проверить, равна ли она 12, то мы используем:
if loop == 12:
21
22. Операторы управления программой. IF ("если то"):
Операторы управленияпрограммой. IF ("если то"):
А если мы захотим сказать, что если переменная равна тому-то
делай то-то, в противном случае — что-то другое.
if x == y:
делай то-то
else:
делай что-то другое
Самое главное заключается в следующем:
1.
Завершайте операторы if и else двоеточием.
2.
Делайте ОТСТУПЫ в вашем коде для записи действия.
22
23. Операторы управления программой. IF ("если то"):
Операторы управленияпрограммой. IF ("если то"):
В более развернутом виде может иметь следующую форму :
Если у вас есть несколько проверяемых значений, можно
использовать формат if/elif/else. Например:
x=5
if x == 1:
print ('X is 1')
elif x < 6:
print ('X is less than 6')
elif x < 10:
print ('X is less than 10')
else:
print ('X is 10 or greater')
23
Обратите внимание: мы используем оператор '<' для проверки, что x МЕНЬШЕ, ЧЕМ
определенное значение — в этом случае 6 и 10. Другие часто используемые
операторы сравнения: больше чем '>', меньше, чем или равно '<=', больше чем или
равно '>=' и не равно '!='.
24. Операторы управления программой: операторы циклов FOR
Задача:Присвоить переменной «cntr» значение 0, выполнить печать
значения переменной «cntr», прибавить к переменной «cntr»
1 и повторить это 10 раз».
for cntr in range(0,10):
print (cntr)
# печатать значение переменной «cntr» начиная с 0,
до 10. По умолчанию шаг равен 1, поэтому
результатом будет ряд: 0 1 2 3 4 5 6 7 8 9
Напечатано 10 цифр: от 0 до 9. Это то, что мы запрограммировали:
напечатать значение переменной «cntr» 10 раз, каждый раз добавляя
единицу к переменной, и выйти, когда её значение будет равно 10. Если
вы измените команду «range» на «range(1,10)», она начнёт считать с 1, но
остановится на 9, так как при достижении верхнего порога (10) цикл
прерывается.
Как изменить команду, чтобы получить 1 2 3 4 5 6 7 8 9 10 ?
24
25. Операторы управления программой: операторы циклов FOR
Если мы изменим нашу программу такимобразом, то получим?
for cntr in range(1,11):
print (cntr)
или
Оператор FOR может записываться еще одним способом
(изучите форму записи и разницу):
print (for cntr in range(1,11))
25
26. Операторы управления программой: операторы циклов while
Этот оператор позволяет повторять цикл из действий несколькораз до достижения определенного порогового значения.
Рассмотрим простой пример: присвоим переменной «loop»
значение 1. Затем, пока значение переменной loop меньше или
равно 10, выводить значение переменной «loop», прибавлять к
нему 1 и продолжать до тех пор, пока переменная «loop» не
станет больше 10, и выйти:
loop = 1
while loop <= 10:
print (loop)
loop = loop + 1
сравните
loop +=1
1 2 3 4 5 6 7 8 9 10
26
27. Основные группы операторов
Операторы ввода и выводаинформации
Для ввода информации используется оператор ввода INPUT
name = input("What is your name?")
name - имена переменной, в которую с клавиатуры
передаются исходные данные. Введите глагол
Например, в компьютер необходимо ввести для последующего анализа
ХОДИТЬобразом:
глагол ХОДИТЬ. Это действие можно записать следующим
gl = input("Введите глагол ")
Как только компьютер встретит данный оператор, он будет ждать,
когда человек введет с клавиатуры слово ХОДИТЬ и нажмет
клавишу ENTER. Слово ХОДИТЬ попадет в область оперативной
памяти с именем gl.
27
28. Основные группы операторов
Для вывода информации на принтер используется оператор PRINT,который записывается так:
print ("Hello. I am a python program.")
просто печатает в окне терминала Hello. I am a python program.
ХОДИТЬ-ГЛАГОЛ УПОТРЕБЛЕН В НЕОПРЕДЕЛЕННОЙ
print ("Hello there, " + name
+ "!")
ФОРМЕ
для вывода текста на экран, в данном случае для вывода «Hello there, » и
того, что хранится в переменной «name» и восклицательного знака в
конце. В данной строке мы соединяем три куска текста:
«Hello there», информацию в переменной «name» и восклицательный
знак.
print (gl+ “-ГЛАГОЛ УПОТРЕБЛЕН В НЕОПРЕДЕЛЕННОЙ ФОРМЕ")
28
29. Специальные операторы языка
29Чтобы выделить у строковых какие-то отдельные символы, используются
срезы
strng = 'The time has come'
print (strng[1])
Результат будет символ 'h'. Запомните: счёт начинается с 0, поэтому первый
символ обозначается [0], второй — [1], третий — [2], и так далее. Если мы
хотим отобразить символы начиная с положения 4 и заканчивая положением
8, то набираем:
print (strng[4:8])
результат будет 'time'. Счет остановится на 8, но не возвращает восьмой
символ
Чтобы выделить справа 2 символа, можно записать:
print= (strng[-2:]) - результат будет 'me'
Чтобы найти длину строки используем функцию len():
print (len(strng))
Результатом будет 17.
30. 3. Проведение компьютерного эксперимента
Для написания программы для нашей задачи необходимо выполнить следующихдействий:
Выделяют основные переменные памяти компьютера. В данном случае ими будут:
место в памяти компьютера для размещения каждого анализируемого глагола;
место в памяти компьютера для размещения двух последних букв глагола ;
место в памяти компьютера (счетчик) для размещения числа проанализированных
глаголов.
Этим переменным присваивают определенные имена :
gl - строковая переменная для размещения анализируемого глагола;
sf - строковая переменная для размещения двух последних букв глагола;
I – числовая переменная (счетчик) для размещения числа проанализированных глаголов.
Написание компьютерной программы сводится к замене блоков операторами языка
PYTHON3 .
Отладка программы, т.е. устранение различных ошибок
30
31. Текст программы
НачалоВводим очередной русский глагол
1
Текст программы
2
Алгоритм решения
задачи
Подсчитать число введенных глаголов
3
Введен 11
глагол?
да
Конец
нет
4 Отделяем у глагола 2 последние буквы
Вы уже знаете, что написание компьютерной
5
программы сводится к замене блоков операторами
да
Это
“ть”,
языка PYTHON3
6
“чь” ” ти”?
нет
for i in range(1,11):
7
Глагол употреблен в инфинитиве
Глагол употреблен в личной форме
Выход в меню
gl = input("Введите глагол ")
sf = gl[-2:]
if sf == "ть" or sf == "ти" or sf == "чь":
print (gl, " инфинитив")
else:
print (gl, " личная форма")
31
Выход в меню
1
1
32. 4. Анализ результатов работы компьютерной программы
Для проверки на вход программы подают разноеколичество различных русских глаголов. Во всех случаях
программа должна давать правильный результат. В противном
случае вводятся изменения и исправляются ошибки
32
33.
Спасибо за внимание33