Полная версия
Искусственный интеллект. Строки, контекст и волны на Паскале
«Мы не научили компьютер понимать, что означает фраза „физик сэр Исаак Ньютон“, даже если мы можем построить поисковую систему, которая возвращает правдоподобные результаты пользователям, вводящим туда эту фразу…»
Еще раз уточним: задачей-минимумом нашего сегодняшнего исследования остается реализация диалоговой системы, близкой к человеческой модели мышления. И есть надежда, что технология MSM является принципиально новым подходом, способным дать нам новую пищу, иной способ исследования; вдохнуть новую жизнь в парадигму искусственного интеллекта как символьной системы, (но – не системы на естественном символьном языке).22
Глава 1. Строковые процедуры и функции на практике
Подготовка к работе в TMT-Pascal
Все, что нам первоначально потребуется для работы – скачать и установить программу компилятора TMT-Pascal.
Это можно сделать бесплатно, например, отсюда: http://pascal.sources.ru/tmt/download.htm.
Здесь можно выбрать, например, версию TMT Pascal Lite v.3.90, которая подходит для реализации наших задач.
Далее, для работы с русским языком в DOS-приложениях, нам понадобится произвести некоторые предварительные настройки. На 32-битной Windows:
В Windows XP:
В командной строке меню «Пуск» набираем команду «Regedit». Далее, вносим изменения: HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> Control -> KeyboardLayout
Здесь нужно изменить значение ключа 00000409 в папке DosKeybCodes на «ru».
Также, в файле autoexec. nt, расположенном в Windows\system32, надо добавить строку «lh %SystemRoot%\system32\kb16.com ru». После перезагрузки переключение раскладки клавиатуры в DOS-приложениях будет производиться комбинациями Ctrl+Left Shift (английская) и Ctrl+Right Shift (русская). Упомянутый метод нормально работает в том случае, если Language settings for the system в качестве Default стоит Cyrilic.
В Windows 7:
В файле Windows/sistem32/autoexec. nt вписать строки:
«lh %SystemRoot%system32dosx
lh %SystemRoot%system32kb16.com ru
set clipper=F80»
В файле Windows/sistem32/config. nt вписать:
«files=80; buffers=99».
В командной строке в меню «Пуск» через команду «rehgedit» редактируем реестр:
HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> Control -> Keyboard Layout
DosKeybCodes изменить значение параметра 0000409 на ru
Раскладка будет переключаться сочетаниями клавиш:
русский – правые Shift+Alt; английский – левые Shift+Alt.
В Windows 10:
Не требует изменений в реестре. В файле Windows/sistem32/autoexec. nt добавляем строчку – "%SystemRoot%/system32/kb16 ru».
В случае если используется 64-разрядный Windows, требуется использование приложения-эмулятора для DOS-программ «DOS-box».
Строковые данные
Работе со строковыми данными всегда уделяют слишком мало внимания. Считается, что это нечто, само-собой разумеющееся и слишком понятное, чтобы делать на них акцент. В учебниках, самоучителях любой толщины и направленности нам сильно повезет, если им уделяется хотя бы 2 страницы.
Попробуем же восполнить известные пробелы, для чего начнем с самых азов работы со строками на Паскале.
Итак, строчные переменные и константы в Паскале описываются так же, как и любые другие, например строка S: String означает что переменная S будет хранить некий набор символов, строку (в количестве от 1 до 255).23
Соответственно, декларация S: String [100] в блоке переменных обозначает, что переменная может хранить в себе последовательность элементов до 100 символов включительно. Декларировать количество символов может быть удобно, когда мы работаем с формализованными данными, например, с серией и номером документа с определенным числом символов. Но при этом следует учесть следующее: при попытке присвоения такой переменной более длинного ряда символов, не вошедшие символы будут «обрублены».
Например, описав переменную: S: String [8] следующая операция
даст в результате S=«Мама мыл» и соответственно, потерю оставшихся символов.
Также, если в одной процедуре входные или выходные переменные отличались по своему числу символов от переменных в другой процедуре или функции, компилятор вернет ошибку и укажет на разность типов переменных. В таком случае нам потребуется, чтобы число декларированных в переменных символов совпадало и не превышало 255. Если последнее условие представляет затруднения, но представляет крайнюю необходимость, помогут методы обработки длинных строк.
Длинные строки
В Паскале возможна работа с длинными строками,24 длина которых определяется не числовым значением первого байта строки, а замыкающим символом «#0». Ограничение в них определяется лишь объемом оперативной памяти или ее схемой адресации. Максимально возможная строка в таком случае ограничена числом в 65 535 символов; еще такие строки называют ASCIIZ-строками.
Конец ознакомительного фрагмента.
Текст предоставлен ООО «ЛитРес».
Прочитайте эту книгу целиком, купив полную легальную версию на ЛитРес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.
Примечания
1
В данном случае рассматривались десятки русскоязычных учебных пособий, самоучителей, методических рекомендаций и задачников по Паскалю, C++, Java и PHP, изданных за последние 20—25 лет.
2
Хотя современные наборы процедур и функций для работы со строками, например в PHP, Object Pascal и C++ довольно похвальны, (а в Python, – интуитивно удобны и компактны), но на практике очень редки сколько-нибудь интересные алгоритмы, использующие их где-то, кроме баз данных и текстовых процессоров. Мастодонты странного программирования, как Lisp и Prolog автором не рассматривались принципиально, – они напугали его еще в ранней юности.
3
Разработчик системы на основе ИНС далеко не всегда может отвечать за определенные решения программы и ему также сложно утверждать, не является ли определенный ответ эффектом «переобучения», иначе говоря, случайным, «мусорным» ответом.
4
Символический (символьный) искусственный интеллект – это собирательное название для всех методов исследования искусственного интеллекта, основанных на высокоуровневом «символическом» (человекочитаемом) представлении задач, логики и поиска. Символический ИИ лёг в основу доминирующей парадигмы исследований ИИ с середины 1950-х до конца 1980-х. Наиболее успешная форма символического ИИ – это экспертные системы, использующие сеть продукционных правил. Продукционные правила объединяют символы в отношения, похожие на оператор «если-то». Экспертная система, обрабатывая эти правила, делает логические выводы и определяет, какая дополнительная информация ей необходима, то есть какие следует задать вопросы, используя человекочитаемые символы. Определение Wiki.
5
Сильный искусственный интеллект – гипотеза в философии искусственного интеллекта, согласно которой некоторые формы искусственного интеллекта могут действительно обосновывать и решать проблемы. Теория сильного искусственного интеллекта предполагает, что компьютеры могут приобрести способность мыслить и осознавать себя как отдельную личность (в частности, понимать собственные мысли), хотя и не обязательно, что их мыслительный процесс будет подобен человеческому. Определение Wiki.
6
«Наука о данных» (англ.) – раздел информатики, изучающий методы статистической обработки больших объемов данных в приложениях искусственного интеллекта и проблемы представления данных в цифровом формате для машинного обучения.
7
Blockchain (англ.) – технология распределенных баз данных для хранения информации на различных компьютерах в сети; преимущественно используется для хранения и передачи информации о финансовых транзакциях. Используется с 2008 года для работы с криптовалютами.
8
Перцептрон, или персептрон (англ. perceptron от лат. perceptio – восприятие; нем. Perzeptron) – кибернетическая модель мозга, предложенная Фрэнком Розенблаттом в 1957 году и впервые реализованная в виде электронной машины «Марк-1» в 1960 году. Перцептрон стал одной из первых моделей нейросетей, а «Марк-1» – первым в мире нейрокомпьютером.
9
Пример с огурцами – не выдумка. Японец Макото Коике в 2016 году создал систему, которая с помощью технологии машинного обучения TensorFlow от Google сортирует огурцы на ферме своих пожилых родителей. Для этого Макото использовал одноплатный компьютер Raspberry Pi 3, оснащенный камерой. Непосредственной сортировкой в его системе был занят микроконтроллер Arduino, получающий команды после обработки в сенсорной сети TensorFlow и отправляющий огурцы в разные ведра.
10
Соболенко С. В. «Искусственный интеллект: начала MSM: Сингулярность неизбежна: Издательские решения, 2018. – 272 с.
11
MS-DOS Edition Version 3.90 (Copyright © 1995, 2002 by TMT Development Corporation).
12
Для сравнения, популярный в России ABC Pascal – не позволяет производить данные операции; а поздние версии Delphi и Object Pascal используют более сложный операционный инструментарий, чтобы сосредоточиться на нем на страницах небольшой по объему книги.
13
Однако, что более интересно, – реакция зарубежного форума OpenAI, где демонстрация проекта произвела сильное впечатление, вызвала интерес и получила явное одобрение. Прим. автора.
14
Курт Фридрих Гедель (нем. Kurt Friedrich Gödel; 1906—1978) – австрийский логик, математик и философ математики. Наиболее известен сформулированными и доказанными им теоремами о неполноте, которые оказали огромное влияние на представление об основаниях математики. Считается одним из наиболее выдающихся мыслителей XX века.
15
Сэр Роджер Пенроуз (англ. Roger Penrose, род. 8.08.1931 года, г. Колчестер, Англия) – английский физик и математик, работающий в различных областях математики, общей теории относительности и квантовой теории.
16
Объектно-ориентированное программирование (ООП) – методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования. Определение Wiki.
17
«Роджер Пенроуз: Квантовая природа сознания», видео канала «2045 Initiative», 2013 г., на 3 мин. 19 сек.
18
Роджер Пенроуз «Тени разума – в поисках науки о сознании», М. 2005. с. 27—28.
19
См. там же.
20
Аврам Ноам (Наум) Хомски (также часто транскрибируется как Хомский или Чомски, англ. Avram Noam Chomsky; род. 7 декабря 1928, Филадельфия, штат Пенсильвания, США) – американский лингвист, политический публицист, философ и теоретик. Профессор лингвистики Массачусетского технологического института. Также он известен своей открытой позицией относительно связи мышления, языка и интеллекта.
21
Автор статьи – молодой ученый-когнитивист Ярден Кац. Ссылка на публикацию: https://habr.com/ru/post/432846/
22
Это очень важная деталь, ведь письменный естественный язык по существу является лишь системой письменного оформления звуков, а не классификатором смыслов. (Прим. авт).
23
По существу, строка является массивом символьных переменных типа Char, описываемого по умолчанию как содержимое [1..255], вызов к индексу которого аналогичен операции с традиционным массивом (array). При этом, нулевой индекс [0] содержит информацию о текущей длине массива символов.
24
Методы, процедуры и функции обработки длинных строк и обычных в TMT Pascal и в других языках программирования существенно отличаются, – с длинными строками объективно работать сложнее и они имеют ряд критических недостатков. В дальнейшем повествовании они не будут использоваться. Поэтому вы можете достаточно безболезненно пропустить этот раздел, или только бегло с ним ознакомиться.