Допомога у написанні освітніх робіт...
Допоможемо швидко та з гарантією якості!

Зв'язок нейронних мереж з штучним інтелектом

КурсоваДопомога в написанніДізнатися вартістьмоєї роботи

Для людей спілкування за допомогою звичайної розмовної мови є, очевидно, нескладним завданням, а ось всі комп’ютерні системи, що моделюють цей процес, до цих пір мають можливості, істотно поступливі можливостям звичайного першокласника. Створені системи (тобто машинні моделі) розуміння мови, що довели свою виняткову практичну користь. Наприклад, можна побудувати комп’ютеризовану систему… Читати ще >

Зв'язок нейронних мереж з штучним інтелектом (реферат, курсова, диплом, контрольна)

Кафедра комп’ютерних технологій

Індивідуальне завдання з дисципліни: «Нейронні мережі та еволюційні технології»

Тема: «Зв’язок нейронних мереж з штучним інтелектом»

Коломия 2009

Зміст

  • Вступ
    • 1. Природа інтелекту
    • 1.1 Знання і уявлення
    • 1.2 Міркування
    • 1.3 Навчання
    • 2. Гіпотеза символьних систем
    • 2.1 Пошук
    • 2.2 Продукційні системи
    • 3. Представлення за допомогою символів
    • 3.1 Числення висловів
    • 3.2 Числення предикатів
    • 3.3 Інші символьні мови
    • 3.4 Мова Ргоlog
    • 4. Розуміння мови
    • 4.1. Синтаксичний аналіз
    • 4.2. Семантичний аналіз
    • 5. Символьні зв’язки нейронних мереж
    • Висновок
    • Вправи

Вступ

Нейронні мережі можуть застосовуватися при вирішенні різних технічних проблем. Архітектура штучних нейронних мереж не може порівнятися з людським мозком по складності і розмірах, але саме такі мережі складають абстрактні моделі мозку. Тому відразу ж виникає питання: чи можна за допомогою штучних мереж реалізувати «штучний інтелект»? Штучний інтелект є однією з найважливіших дисциплін в області інформатики, що має глибокі зв’язки з математикою, психологією і навіть філософією. Ця дисципліна була визнана самостійною в 1950;х, і з тих пір на дослідження побудови інтелектуальних машин було витрачено немало часу і грошей. Мета вивчення штучного інтелекту в широкому сенсі може бути описана як створення машин, що виконують завдання, з якими добре справляється людина, але які нелегко запрограмувати з використанням традиційного підходу до обчислень. Завдання, які добре виконують люди, але які важко для запрограмувати, часто виявляються цілком поєднаними. Наприклад, ходіння по кімнаті або підтримка розмови не вимагає таких розумових зусиль, як складання чисел. Але створення машин, що виконують подібні завдання, виявилося для інженерів проблемою великої складності. Той факт, що відносно просто побудувати машину, здатну скласти університетський іспит, але не машину, здатну виконати прибирання будинку, робить виклик нашим традиційним уявленням про те, що означає бути інтелектуалом.

Дослідники штучного інтелекту зосередилися головним чином на тому, що зазвичай називають символьною парадигмою, а також «традиційним штучним інтелектом» або «класичним штучним інтелектом» (а іноді і «старомодним штучним інтелектом»). Тепер існує нова форма штучного інтелекту, заснована на коннекціях (тобто нейронних мережах) і еволюційних моделях (тобто системах, що існують в деякому середовищі і адаптуються до неї на основі природного відбору). Новий штучний інтелект не заперечує традиційний штучний інтелект, і вчені вважають, що не заперечуватиме ніколи. Насправді для створення справді інтелектуальних машин може бути потрібний радикальний переворот в наших уявленнях про них. Можна заперечити, що новий штучний інтелект є тільки новою формою традиційного штучного інтелекту, і підставою для такого заперечення є той факт, що до цих пір на нижчому рівні ми використовуємо все ті ж обчислювальні пристрої (символьні системи насправді реалізуються на послідовних машинах, так як і більшість моделей нейронних мереж). Штучний інтелект все ще обіцяє те, що обіцялося ще в початку його розвитку, але поки що про важливість штучного інтелекту ми повинні говорити з оптимізмом. Врешті-решт, наші запити до якості роботи технічних пристроїв весь час ростуть, тому на будь-якому етапі розробки таких пристроїв завжди ставиться завдання створення машини з вищим рівнем інтелекту. Поза сумнівом, створюватимуться більш інтелектуальні машини, але ми завжди цікавитимемося можливістю створення андроїда, здатного вести з нами справжній діалог. І навіть коли такий андроїд буде побудований, філософи все одно не перестануть сперечатися про те, чи володіє цей андроїд інтелектом, який можна порівняти з нашим. Щоб розвивати новий штучний інтелект, нам потрібно зрозуміти дещо з традиційного штучного інтелекту і, можливо, звести обидві ці парадигми разом «під прапором» загального штучного інтелекту. У цій роботі ми обговоримо природу інтелекту і розробки в області традиційного штучного інтелекту.

1. Природа інтелекту

Інтелект є концепцією, яка не піддається строгому визначенню. Людський інтелект складається з безлічі компонентів, серед яких здібність до навчання, органи чуття (наприклад, зір і дотик), що дозволяють взаємодіяти із зовнішнім середовищем, і об'єм знань, який взагалі не піддається оцінці. Навіть наші домашні тварини можуть вважатися інтелектуальними: вони мають складні системи обробки інформації, які дають їм можливість розпізнавати людей і виконувати завдання, що вимагають чималої майстерності.

Інтелектуальна поведінка не є винятковою прерогативою центрального процесора (людського мозку), що діє в ізоляції, — робота центрального процесора залежить від додаткових приладів, що сприймають, заздалегідь оброблюючи і таких, які структурують дані, що поступають. Інтелектуальні агенти можуть бути побудовані таким чином, що їм доведеться діяти на повністю віртуальному світі, але цим агентам необхідно буде вказувати і розвивати бажання і цілі, щоб проявляти себе інтелектуально. Дослідження зазвичай концентруються на якомусь окремому і вузькому аспекті інтелекту, і з практичних міркувань сенсорні канали і первинна обробка даних часто замінюються припущенням про наявність відповідної структури даних. Традиційний штучний інтелект примушував нас вірити, що теоретично можливо (але практично все ще немає) створити мозок — втілення штучного інтелекту — слід лише створити правильний алгоритм, і мозок тут як тут. В рамках традиційного штучного інтелекту вивчення інтелектуальних, систем концентрувалося навколо декількох ключових питань — це представлення даних, здатність міркувати і здатність системи автоматично адаптуватися до зміни умов (іншими словами, здатність навчатися).

1.1 Знання і уявлення

Інтелектуальна система втілює знання. Коли ми говоримо про знання, це можуть бути фактичні знання, необхідні наприклад, для участі у вікторині, або практичні знання, потрібні при заміні автомобільного колеса. Це можуть бути знання, названі навиками, необхідні, наприклад, при їзді на велосипеді, або ж це можуть бути мільйони бітів інформації, яку ми називаємо здоровим глуздом, що дозволяє, наприклад, не пролити воду з чашки при питті. Представлення знання може бути явним або неявним.

Явне знання може бути встановлене і інспектоване, наприклад, у формі фактів.

Яблуко є плід. Кіт є тварина.

Це можуть бути також і правила.

Якщо акумулятор розрядився, то автомобіль не заведеться.

Якщо процентні ставки ростуть, то ціна кредиту піднімається.

Неявне знання передати непросто. Наприклад, дитині можна роз’яснити загальні принципи їзди на велосипеді, включаючи необхідність обертати педалі і направляти переднє колесо у бік руху, але процедура не може бути записана так, щоб дитина могла її прочитати, а потім використовувати для того, щоб поїхати на велосипеді. Насправді знання того, як їхати на велосипеді, отримується в результаті проб і помилок.

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

Ось приклади уявлень: знання, виражені у вигляді правил; графік зміни зростання дитини; карта лондонського метро. Рівень уявлення залежить від рівня деталізації інформації, яку необхідно передати. Наприклад, карта лондонського метро є абстрактним зображенням дійсної мережі зв’язаних станцій. Для цілей планування переїздів між станціями карта виявляється цілком відповідною, оскільки показує всі з'єднання і взаємне розташування станцій. Зображені на карті лінії не відображають реальної відстані і кривизни дійсних ліній, що зв’язують станції, оскільки ця інформація до справи не відноситься, а тільки заважає зоровому сприйняттю.

Дослідники штучного інтелекту використовують знання про мозок як керівництво для того, щоб будувати штучний інтелект, але теорію того, як людина представляє знання, формалізувати дуже важко. Як люди сприймають торці книг — як канцелярське приладдя, прикраси або елементи обстановки? Як можна представити любов, якщо машина не випробовує таких емоцій? Чи можна змусити машину випробувати любов і, якщо це можливо, то чи буде її розуміння любові відрізнятися від нашого? Існують когнітивні теорії того, як представляє знання мозок людини, і саме такі теорії служать основою для символьних уявлень.

1.2 Міркування

Людина знає, як поводитися в нових ситуаціях, оскільки вона може аналізувати свої знання і ухвалювати адекватні рішення, засновані на минулому досвіді і на прогнозуванні можливих наслідків таких рішень. Символьна парадигма намагається частково імітувати таку поведінку за допомогою програм, що включають набір правил представлення відповідних висновків.

Правило. Якщо акумулятор розрядився, то автомобіль не заведеться.

Конкретні дані.

Акумулятор в автомобілі Сюзен розрядився.

Нове виведене знання. Автомобіль Сюзен не заведеться.

Зовсім не складно запрограмувати систему, що працює відповідно до основних правил логічних висновків, але перш, ніж машина зможе демонструвати щось подібне реальному інтелекту, доведеться знайти відповіді на деякі важливі питання. Правила утілюють знання, а тому і питання виявляються пов’язаними із знаннями. Які правила потрібні і є достатніми для того, щоб виконати завдання інтелектуально? Розглянемо спеціальне завдання, що вимагає тільки знання пристрою автомобіля. Експертна система (система, заснована на використанні знань, необхідних для виведення висновків у вузькій області) залучається в наступному діалозі:

Клієнт: Навіщо на автомобілях встановлюються ручні гальма?

Експертна система: Щоб зупинити рух автомобіля.

Клієнт: Адже автомобіль не завжди рухається, коли ручне гальмо вимкнене?

Експертна система: Це залежить від горизонтальності поверхні.

Клієнт: Що дає енергію, що примушує колеса автомобіля обертатися?

Експертна система: Двигун.

Клієнт: Таким чином, якщо двигун працює, то колеса обертатимуться?

Експертна система: Якщо зчеплення включене.

Клієнт: Що трапиться, якщо двигун працюватиме з включеним ручним гальмом і включеним зчепленням?

Експертна система: Передбачається, що ви спочатку повинні відключити ручне гальмо"

Клієнт: Так, але припустимо, що я цього не зробив.

Експертна система:???

Відповідь «Не знаю» на останнє питання є прийнятним, якщо ви не експерт по автомобілях, але виглядає смішним, якщо уявити, що ви експерт. Той, хто ніколи не водив автомобіль, але маючи добре знання фізики і механічних пристроїв, може дати цілком розумну відповідь. Але знання фізики вимагає виходу експертної системи з вузької області автомобілів і веде до необхідності об'єднання ширшої області знань. Розуміння того, скільки потрібно знань для адекватного виконання відповідного завдання, являється проблемою розробника експертної системи: достатньо важко гарантувати правильну роботу комп’ютерної програми, що допускає обмежене число типів введення, але тяжкість перевірки правильності роботи зростає багато разів, коли на етапі проектування потенційне введення не може бути передбачене взагалі. Існують вражаючі експертні системи, що виконують величезну роботу і, як повідомляється, значно зменшують витрати компаній. Але зажадайте від експертної системи дуже багато — і вона незабаром виявиться слабкою, оскільки знання її обмежені.

У фахівців, що створюють експертні системи, виникають і інші труднощі. Розглянемо твердження, подібне наступному:

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

Чи є розповідач жінкою? Чи знаходилася вона в літаку?

Я не сумніваюся, що вони покладуть всю провину на жінку-пілота.

Тепер здається розумним припущення, що розповідачем є жінка-пілот і що вона була єдиною жінкою на борту літака, який попав в аварію.

Ми зіткнулися на підході до аеродрому. Я була в одномісному літаку, і я катапультувалася.

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

1.3 Навчання

Виживання будь-якої тварини залежить від здатності адаптуватися до зміни ситуації на основі наявного досвіду. Ми покладаємося на те, що наші домашні тварини здібні до навчання такою мірою, що ми зможемо навчити їх поводитися соціально прийнятним чином.

Більшість комп’ютерів програмуються для виконання певних завдань. Інженер-програміст представляє опис проблеми у вигляді алгоритму, а потім реалізує цей алгоритм на якій-небудь мові програмування високого рівня. Зв’язок проблеми з реалізацією опирається на знання і уявлення.

Наприклад, можна заявити, що площа круга рівна рrІ де р є числовою константою, а r — радіусом. Розуміння цього опису спирається на знання того, що радіусом є довжина відрізка прямої, що сполучає центр круга з крапкою на колі, що таке коло і так далі. Запропонована вище формула виражає знання, але використання цієї формули теж вимагає знань: наприклад, користувач повинен знати, що площа виражатиметься в одиницях, що є квадратом одиниць, що використовуються для вимірювання радіусу.

Ось приклад програми на мові С для обчислення площі круга за вказаною формулою:

float areaOfCircle (float radius)

{

float pi = 3.1415 927;

return (pi*radius*radius);

}

Внутрішньо комп’ютер представляє число р в двійковому форматі, але це не має ніякого значення для програміста, так само як і реалізація саме на мові С не має ніякого значення для користувача програми, оскільки розуміння даного алгоритму залежить тільки від достатньо хорошого знання англійської мови і деяких математичних результатів.

Ключем до програмування є здатність виразити проблему у вигляді алгоритму і вибрати відповідне уявлення. Але що можна сказати про знання, яке не може бути виражене явно? Неможливість явно виразити рішення означає, що програма не може бути отримана традиційними методами. Але можна створити програму автоматично в результаті процесу навчання. Машини можуть програмуватися так само, як відбувається навчання собаки виконанню команди. Команда служить введенням, правильна відповідь винагороджується, і сигнал повторюється до тих пір, поки собака не адаптує свою поведінку відповідно до виконання необхідного завдання.

2. Гіпотеза символьних систем

Традиційний штучний інтелект спирається на гіпотезу символьних систем. Ця гіпотеза в спрощеному формулюванні стверджує, що реалізувавши величезну структуру взаємозв'язаних символів, що представляють реальні знання, і складний набір символьних процесів, які дозволяють оперувати структурами з метою створення нових структур, можна створити машину, що працюватиме так само добре, як людина. Коротко кажучи, гіпотеза стверджує, що комп’ютер можна запрограмувати так, що він буде думати.

Ми розглянемо декілька простих модельних завдань, що дозволяють зрозуміти, що таке символьна обробка. Ми не обговорюватимемо тут правильність вказаної гіпотези, оскільки хотіли б тільки з’ясувати, що таке символьні процеси. Необхідно також мати на увазі, що якщо на базі цієї гіпотези може бути побудована мисляча машина, то така машина повинна концентрувати колосальні об'єми знань, об'єднаних у величезний масив складних процесів. В цьому розділі ми розглянемо природу обчислень. По практичних навиках майже всі експерименти з штучним інтелектом мали малі масштаби, але якщо створення машини, подібної до людини, можливо, масштаби цих експериментів повинні істотно змінитися. Рух в цьому напрямі вже почався.

2.1 Пошук

Вирішення головоломок, побудова планів, діагностика захворювань і так далі - все це проблеми, які можна вирішити в результаті процесу пошуку. Розглянемо планування автобусної подорожі по Англії з півдня на північ. У вашому розпорядженні є розклад руху автобусів, а завданням є знаходження послідовності стикуючих маршрутів, які дозволять вам добратися з Саутгемптона до Ноттінгема (передбачається, що прямого сполучення між цими містами немає). Можна почати з Саутгемптона, як пункту відправлення, проглянути список пунктів призначення маршрутів, вибрати деякий пункт призначення і перейти на ту сторінку розкладу руху, яка відповідає вибраному пункту призначення. Пункт призначення тепер стає вашим уявним пунктом відправлення, і ви вибираєте інший пункт призначення. Ви продовжуєте цю процедуру доти, поки не побачите назва пункту відправлення, для якого пунктом призначення буде вказаний Ноттінгем. Немає нічого простішого! На практиці, проте, ви скористаєтеся знаннями географії, і розглядатимете тільки ті проміжні пункти призначення, які лежать в напрямі, що наближає вас до кінцевого пункту призначення, Ноттінгему. Ви можете також використовувати декілька закладок, щоб, знайшовши деякий маршрут з Саутгемптона в пункт А, перейти до відповідної сторінки розкладу Ноттінгему і подивитися, чи є маршрут з Ноттінгема в пункт А. І ви продовжуватимете перескакувати так з однієї сторінки на іншу в надії знайти пункт, де ваш маршрут вперед і зворотний маршрут перетнуться.

Були розроблені комп’ютерні алгоритми, що імітують такий тип пошуку. Давайте розглянемо одну просту головоломку, подібну до «гри в п’ятнадцять», але з восьми елементів. Головоломка є ґратами з дев’ятьма осередками, де вісім осередків зайнято пронумерованими плитками. Незайнятий осередок можна інтерпретувати як порожню плитку: відповідної плитки немає, але це виявляється корисною ідеєю, що дозволяє спростити опис проблеми. Плитки розміщуються випадковим чином, а метою є розміщення плиток в порядку номерів зліва направо і зверху вниз. Завдання ставиться нудне і трохи трудомістке: ви зав’язуєте другу очі і даєте йому головоломку для того, щоб він пересував плитки. Ваш друг пересуває одну плитку, а ви перевіряєте результат. Плитки не розміщуються в потрібному порядку, тому ви просите друга пересунути ще одну плитку. Яку плитку рухати, вирішує ваш друг, а не ви. Після чергового пересування ви виконуєте чергову перевірку, і цей процес продовжується до тих пір, поки плитки не будуть розміщені в належному порядку.

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

На кожній стадії пошуку для переміщення існує певне число можливостей. Щоб спростити опис, уявимо собі, що пересувається порожня плитка і що вона може рухатися вгору, вниз, управо або вліво, залежно від того, в якому місці ґрат вона знаходиться. Єдиною формою допомоги, яку вам дозволяється надати вашому другу, є сигнал завершення виконання завдання і недопущення повторення послідовності переміщень. Кожна комбінація плиток називається станом, так що завданням є знаходження цільового стану — того, в якому всі плитки виявляються в потрібному порядку. Можна розглянути випадковий початковий стан і з’ясувати, які нові багатства можуть бути з нього отримані за допомогою переміщення тієї плитки. З кожного нового стану процес можна продовжувати далі. Відповідна ідея представлена на мал.1. Показані не всі, а тільки деякі стани. Від кожного стану відходить декілька ліній, кожна з яких відповідає певному переміщенню порожньої плитки. В результаті такого переміщення виникає новий стан ґрат. Якщо продовжити побудову ілюстрації далі, ми побачимо, що в декількох місцях ілюстрації будуть розміщені стани, відповідні кінцевій меті. В результаті руху по маршруту переміщень від початкового стану (кореня) до будь-якого з цільових станів виявляється послідовність переміщень, що дає рішення. Одні послідовності можуть при цьому бути коротшими за інші.

Мал.1. Деякі із станів пошуку, що генеруються при спробах вирішити головоломку з восьми плиток. Цільовий стан знаходиться в нижньому ряду зліва. Для початкового стану переміщення порожнього квадрата вгору еквівалентно переміщенню " двійки" вниз, але опис головоломки в термінах руху порожнього квадрата виявляється зручнішим

Алгоритми пошуку усліпу легко реалізуються на комп’ютері. Труднощі зазвичай полягають в з’ясуванні того, від чого залежать стани і як краще ці стани представити. Для головоломки з восьми плиток представлення станів виявляється простим, але для реальних завдань знайти відповідне уявлення буває досить непросто.

Якщо ви самі вирішуєте головоломку з восьми плиток, то, ймовірно, знайдете рішення швидше, ніж це зробив би ваш друг із зав’язаними очима. Ви робитимете для себе виводи про те, чи наближає кожне конкретне переміщення вас до кінцевої цілі. Цей інформований варіант гри називається евристичним пошуком. Пошук відповідного маршруту за розкладом з використанням знання географії є евристичним: для напряму пошуку використовуються відповідні знання. Розробка алгоритмів для здійснення евристичного пошуку є не складнішим ніж програмування пошуку усліпу. Найскладнішим моментом тут є визначення евристик, тобто правил пошуку.

Пошук є основою штучного інтелекту. Як зразок пошуку може бути представлена діагностика стану здоров’я пацієнта за допомогою застосування правил, і деякі аспекти проблеми розуміння мови.

2.2 Продукційні системи

Продукційна система несе в собі фундаментальні ідеї, на яких «виросли» експертні системи і мови типу Рrоlog. «Серцем» продукційної системи є процедура управління, що залишається незмінною у всіх застосуваннях. Обчислення, які виконує продукційна система, управляються набором продукційних правил і конкретними даними. Продукційні правила утворюють безліч пар «умова-дія», що визначають умови, які повинні бути виконані для того, щоб правило виявилося дозволеним до застосування, і дію, яка повинна бути виконана, якщо це правило застосувати. Робоча пам’ять зберігає поточний стан, і саме від поточного стану залежить, чи виконуватиметься умова конкретного правила. Продукційний цикл виключно простий: за станом робочої пам’яті слід спочатку перевірити, які правила можуть бути задоволені, зробити дозволеними до застосування всі задоволені правила, з більшості дозволених до застосування правив вибрати правило, яке слід застосувати, і відновити стан робочої пам’яті відповідно до дії застосованого правила.

Більшість дозволених до застосування правил називається безліччю суперечностей, а стратегія вибору з цієї множини правила, яке слід застосувати, називається стратегією вирішення протиріч.

Весь процес вибору правила для застосування повторюється до тих пір, поки не буде задоволено деяку умову зупинки. Простий приклад такого процесу показаний на мал.2. В даному прикладі, стратегія вирішення протиріч є стратегією новизни, що означає простий вибір правила, умова якого раніше ще не була задоволена, а у разі декількох таких правил — довільний вибір будь-якого з них. Визначення стратегії вирішення протиріч виявляється завданням розробника. Існує декілька стандартних стратегій, наприклад вже згадувана стратегія новизни або стратегія конкретності (коли перевагу має правило, що має більше число умов), але читач повинен зрозуміти, що деталі конструкції будь-якої системи створюються на розсуд її розробника: продукційна система являється загальною обчислювальною процедурою, яку можна налаштовувати так, як цього вимагає конкретне завдання. Приклад послідовності дій продукційної системи, показаний в таблиці.

Продукційна множина:

Цикл

Робоча пам’ять

Множина суперечностей

Вибране правило

Т, W, Р

3,4

Т, W, Р, Q

3,4

Т, W, Р, Q, S

2, 3,4

Т, W, Р, Q, S, R

1,2,3,4

Т, W, Р, Q, S, R мета

1,2,3,4

Зупинка

3. Представлення за допомогою символів

Щоб будувати інтелектуальні системи, мова представлень повинна відповідати наступним вимогам.

Бути досить виразною, щоб дозволяти представлення всіх реальних станів.

Бути стислою настільки, щоб обчислення піддавались управлінню.

Мати форму, відповідну для міркувань, щоб модель реальності могла міняти свій стан.

Мал.2. Цикл продукційної системи

Логіка використовується математиками для того, щоб доводити правильність, або неправильність тверджень. Всі головні умови представлень, включаючи Rules, Semantic nets і Frames, можуть бути переведені у форму логіки, відому як числення предикатів першого порядку. Коротке обговорення числення предикатів першого порядку дається відразу після розгляду більш простої форми логіки, названої пропозиційним численням або численням висловів.

3.1 Числення висловів

Висловом є пропозиція, якій може бути привласнене значення ІСТИНА або ХИБНІСТЬ. Наприклад, «Сьогодні йде дощ» або «Мідь є метал» є або правильними, або помилковими твердженнями. В рамках числення висловів можна представляти пропозиції в символьному вигляді, створювати складні пропозиції з інших пропозицій, використовуючи зв’язки, і виводити висновки, щоб знайти значення пропозиції. Синтаксис числення висловів описує те, як створюються пропозиції (включаючи складні вирази), граматика визначає правила, по яких з’ясовується синтаксична коректність пропозиції. Семантика числення висловів визначає те, як визначити співвідношення між пропозицією і значеннями ІСТИНА або ХИБНІСТЬ.

Елементарною пропозицією є простий вислів типу «Сьогодні йде дощ», і такі пропозиції часто представляються прописними буквами, наприклад Р або Q. Складна пропозиція створюється за допомогою зв’язку, що сполучає два або декілька елементарних пропозицій. Круглі дужки використовуються для того, щоб вказати пріоритет операцій при комбінуванні елементарних пропозицій за допомогою зв’язків. У табл.1 дано пояснення зв’язку, а в табл.2 приведені правила граматики для логіки висловів. Граматика може використовуватися для аналізу речення і перевірки того, що воно синтаксично правильне. Наприклад, неформальний опис перевірки синтаксичної правильності виразу ((P/Q) /R) =>S пропонується в табл.3.

Таблиця 1. Логічні зв’язки

Зв’язка

Приклад

/ (І) Звана кон’юнкцією

Сьогодні йде дощ І я промок Р/Q, де Р позначає кон’юнкт «Сьогодні йде дощ»;

а Q — кон’юнкт «Я промок»

/ (АБО), Звана диз’юнкцією

Салі пішла в магазин АБО Том пішов в магазин Р/Q, де Р позначає диз’юнкт «Салі пішла в магазин» ,

а Q — диз’юнкт «Том пішов в магазин»

(НЕ) Звана запереченням

Слон НЕ розовий.

Р, де Р позначає «Слон розовий»

=> (ВАБИТЬ) Звана імплікацією або твердженням «якщо…, то… «

ЯКЩО я на вулиці І йде дощ, ТО я промокну (P/Q) =>R, де Р позначає «Я на вулиці», Q позначає «Йде дощ», а R — «Я промокну»

<=> (ЕКВІВАЛЕНТ) Еквівалентністю або подвійною імплікацією

Вирази по обидві сторони цього зв’язку повинні бути логічно еквівалентними

Таблиця 2. Правила граматики для логіки висловів

Привило граматики

Пояснення

Пропозиція>Елементарнапропозиція | Складна — пропозиція

Пропозиція є або елементарною або складною

Елементарна — пропозиція >

Р | Q | R |…

Елементарна пропозиція позначається прописною буквою, як правило з останньої третини алфавіту

Елементарна — пропозиція Істина | Брехня

Елементарна пропозиція може представлятися також значеннями ІСТИНА або БРЕХНЯ

Складна — пропозиція Пропозиція Зв’язок Пропозиція

Пропозиція | (Пропозиція)

Складна пропозиція будується з двох інших пропозицій і зв’язку. Заперечення пропозиції теж є пропозицією, і поміщення пропозиції в дужки теж в результаті дає пропозицію

Зв’язок >/ | / | | => | <=>

Зв’язком є будь-який з логічних символів, представлених в табл.1

Таблиця 3. Приклад синтаксичного аналізу

Кроки

Пояснення

((Р/Q) /R) =>S

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

((Р/Q) /R) =>S

Правою стороною виразу є S, а S є елементарною пропозицією відповідно до другого правила

((Р/Q) /R)

Ми повинні показати, що (P/Q) /R є складною пропозицією

(Р/Q) /R

Порівнюючи з правилом «Пропозиція Зв’язок Пропозиція» робимо вивід, що R є пропозицією, оскільки воно є елементарним

(Р/Q)

Ми повинні показати, що Р/Q є складною пропозицією

Р/Q

Знову порівнюючи з правилом «Пропозиція Зв’язок Пропозиція» робимо вивід, що і Р, і Q є пропозиціями

Семантика числення висловів визначається за допомогою таблиці істинності. Всі зв’язки, за винятком заперечення, є бінарними відносинами, тому у визначеннях потрібно використовувати два символи. Пропозиція може приймати значення ІСТИНА або ХИБНІСТЬ, тому для бінарних зв’язків є чотири можливі комбінації, як показано в табл.4.

Таблиця 4. Таблиця істинності

p

q

— р

р/q

рvq

р=>q

p<=>q

істина

істина

хибність

істина

істина

істина

істина

істина

хибність

хибність

хибність

істина

хибність

хибність

хибність

істина

істина

хибність

істина

істина

хибність

хибність

хибність

істина

хибність

хибність

істина

істина

Здебільшого визначення зв’язків інтуїтивно зрозумілі. Наприклад, «Сьогодні йде дощ» І «Сьогодні НЕ йде дощ», очевидно, ХИБНІСТЬ, що підтверджується таблицею істинності, якщо знайти в ній можливі значення ІСТИНА / ХИБНІСТЬ або ХИБНІСТЬ / ІСТИНА. Знаходження імплікації часто викликає питання, оскільки ми інтуїтивно намагаємося застосувати інтерпретацію, засновану на нашому загальному розумінні мови. Наприклад, можна заявити, що пропозиція типу «Якщо число 5 парно, то мій автомобіль рожевий» (що має форму Р => С2) є брехнею, оскільки воно не має сенсу. Проте, відповідно до визначення імплікації, цей вираз виявляється істинним, незалежно від того, чи є ваш автомобіль рожевим чи ні: ми знаємо, «число 5 парно» є брехнею, так що відповідною комбінацією повинна бути або ХИБНІСТЬ => ІСТИНА (автомобіль рожевий) або ХИБНІСТЬ => ХИБНІСТЬ (автомобіль не рожевий). Ми прагнемо інтерпретувати вираз типу «якщо то…» як причинно-наслідкове, і тому пропозиція «Якщо число 5 парне, то мій автомобіль рожевий» виглядає безглуздим, оскільки визначення числа 5 не робить ніякого впливу на колір вашого автомобіля. Тут слід зрозуміти, що імплікація в численні виразів не вимагає, щоб був хоч якийсь смисловий зв’язок між пропозиціями по обидві сторони імплікації, що зв’язує їх. Знання того, що Р є ХИБНІСТЬ, не дає ніякої можливості зробити вивід про істинність Р. Наприклад, пропозиція «Якщо акумулятор розрядився, то автомобіль не заведеться» дає нам можливість припустити, що істиною є «автомобіль не заведеться», якщо істиною також є «акумулятор розрядився», але правило не говорить нам нічого про здатність автомобіля завестися, якщо ми не знаємо, що «акумулятор не розрядився» — автомобіль може не завестися з цілого ряду причин абсолютно іншого роду. Якщо цих пояснень вам все ще недостатньо, краще всього інтерпретувати Р ==> Q просто як пропозиція, що дозволяє зробити вивід про те, що Q є ІСТИНА, якщо ми знаємо, що Р є ІСТИНА.

Існує цілий ряд правил виведення логіки висловів, і вони представлені в табл.5.

Таблиця 5. Правила виведення логіки висказаного

Правило Пояснення

Приклад 1

Є наступна інформація.

Якщо акумулятор машини розряджений, то машина не заводиться. Якщо машина Джона не заводиться і поточний час виявляється пізнішим 8 годин ранку, то Джон запізниться на потяг. Одного разу вранці після 8 годин ранку акумулятор машини Джона виявився розрядженим.

Використовуючи логічні правила виводу, покажіть, що Джон запізнився на потяг.

Розв'язання 1

У символьному вигляді інформація може бути представлена таким чином.

Р: акумулятор машини розряджений.

Q: машина не заводиться.

R: час після 8 ранку.

S: Джон запізнився на потяг.

Правило 1. Р => Q.

Правило 2. Q ^ R =>S

Відомо, що Р і R є ІСТИНА. Завданням є доказ S. Доказ будується таким чином.

1 Р Дано.

2 R Дано.

3 Q Виходить з кроку 1 і правила 1 за правилом modus ponens.

4 Q ^ R Виходить з кроків 3 і 2 за правилом інтродукції 1.

5 S Виходить з кроку 4 і правила 2 за правилом modus ponens.

3.2 Числення предикатів

Числення висловів припускає, що світ можна моделювати за допомогою фактів. Але для реальних застосувань числення висловів не підходить. Розглянемо, наприклад, число пропозицій, які будуть потрібні для моделювання запізнення на роботу, скажімо, 50 чоловік. Для цього потрібно допускати узагальнені вирази. Числення предикатів (або, точніше, числення предикатів першого порядку) розширює числення висловів так, що світ виявляється таким, що складається з об'єктів, відносин і властивостей. Ця метод допускає узагальнені твердження, вводячи в розгляд змінні, а також квантори, що дозволяють визначати властивості сукупності об'єктів. Розглянемо твердження «Якщо конем володіє Джон, то кінь є чистокровним». Це твердження посилається на сукупність об'єктів, а саме, на всіх коней, якими володіє Джон, у наслідок чого відпадає необхідність посилатися на кожен екземпляр (тобто на кожного з коней Джона) окремо. Це твердження є узагальненим і позбавляє від необхідності формулювання відповідного твердження для кожного з коней Джона. Можна перефразовувати твердження і сказати «Всі коні, якими володіє Джон, є чистокровними». Тут для вказівки того, що властивість «чистокровний» застосовується до всієї сукупності коней Джона, використовується квантор (всі). Слово «володіти» є бінарним предикатом, що описує відношення між Джоном і конем, а слово «чистокровний» є унарним предикатом, що описує властивість коня. В термінах числення предикатів твердження «Всі коні, якими володіє Джон, є чистокровними» в символьному вигляді записується так:

х (Кінь (х) ^ Володіти (Джон, х)) => Чистокровний (х).

Символ називається квантором спільності і читається як «для всіх» або «кожен». У численні предикатів визначається і інший символ, а саме, символ, так званий квантор існування, який читається як «існує». Наприклад, коли ми говоримо «Джон має чистокровного коня», це означає, що існує принаймні один кінь (а можливо і більше) в колекції Джона, що є чистокровним. На мові предикатів це твердження виглядає таким чином:

х Кінь (х) ^ Володіти (Джон, х) ^ Чистокровний (х).

Числення предикатів пропонує запис який є більш стислим, ніж звичайна розмовна мова. У системі числення предикатів одна пропозиція відповідатиме безлічі пропозицій звичайної розмовної мови. Числення предикатів зменшує і неоднозначність. Наприклад, «Всі коні не є чистокровними» можна сплутати з «Не всі коні є чистокровними», і плутанина вирішується за допомогою знання того, що існують інші породи коней. Уявлення кожної з пропозицій в термінах предикатів показує їх різницю:

коні Чистокровний (кінь) і коні Чистокровний (кінь).

Перша пропозиція дійсно стверджує, що всі чистокровні вимерли (жодного екземпляра не існує), а друга пропозиція стверджує, що «то, що кожен кінь є чистокровним, невірно» .

3.3 Інші символьні мови

Є багато мов уявлень, але вони мають багато спільного. Популярні мови типу FOPC, Frames або Semantic nets по суті еквівалентні і мають цілий ряд загальних ключових елементів:

об'єкти, такі як, наприклад, м’яч, персона, човен, велосипед або філософ;

відносини між об'єктами, такі як, наприклад, Джон є батьком Кім, або паровоз тягне склад;

властивості, такі як, наприклад, моя машина зеленого кольору, Девід має зріст шість футів.

Ці мови насправді відрізняються тільки синтаксисом. Синтаксис є важливим, оскільки для виразу інформації один формалізм може виявитися більш відповідним, ніж інший. Наприклад, легко знайти маршрут між двома станціями лондонського метро, використовуючи графічну схему мережі, чим описані з'єднання між її станціями у вигляді тексту. Вибрана нами мова повинна бути настільки виразною, щоб ми могли виразити всі необхідні знання, але достатньо стисло, щоб можна було ефективно організувати необхідні обчислення. Крім того, мова повинна дозволити виводити нові знання.

3.4 Мова Ргоlog

Мова Рrоlog формально не є мовою уявлень, але її синтаксис використовується в наступному розділі, тому ми приведемо її опис.

Мова Ргоlog є мовою програмування штучного інтелекту, в якому дані представляються як безліч відносин між об'єктами. Програма на мові Ргоlog складається із списку фактів і правил, і ця мова є важливою завдяки тому, що вона має вбудований механізм виведення висновків, який дає можливість отримати відповіді на питання про запрограмовані знання. Синтаксис мови Рrоlog опирається на обчисленні предикатів. Відношення типу «Джон любить Мері» записується так:

любить (джон, мері).

Предикат (тобто відношення) і об'єкти відношення повинні починатися з букви нижнього регістру. Вказане вище відношення трактується як факт, іншими прикладами фактів є:

метал (мідь) — мідь є метал;

грають (джон, мері, теніс) — Джон і Мері грають в теніс.

Змінна повинна починатися з символу верхнього регістра. Коли змінна посилається на константу (тобто на конкретний екземпляр, такий як Джон), говорять, що змінна конкретизована. Змінна може бути конкретизована в результаті порівняння виразів. Наприклад, припустимо, що база даних містить любить (Джон, Мері). Тоді можуть бути поставлені наступні питання.

Хто любить мері?

любить (Х, мері)

відповідь X = джон

X конкретизована значенням Джон

Хто є тим, кого любить джон?

любить (джон, X)

відповідь X = мері

Хто кого любить?

любить (Х, V)

відповідь X = джон, У = мері

Правила виражаються за допомогою зворотної нотації у формі «умова якщо умова», в протилежність прямій нотації «якщо умова, то умова». Наприклад

дядько (Х, У): — батько (Z. У), брат (Z, X).

Символ «: — «використовується замість ЯКЩО, а символ «,» замість І. Таким чином вказане правило стверджує, що

X є дядько У, якщо Z є батько У і брат є X.

Приклад конкретизації цього правила показаний на мал.3.

Брат Джон

Девід

Дядько

Батько

Малкольм

дядько (джон, малкольм): — батько (девід, малкольм), брат (девід, джон).

Мал.3. Правило мови Prolog, конкретизоване семантичним уявленням, показаним у вигляді діаграми

Змінна є локальною по відношенню до виразу (тобто факту або правила): змінна з одним і тим же ім'ям, що з’являється в двох різних правилах, інтерпретуватиметься в мові Prolog якщо має різні імена.

Робота Prolog побудована на уніфікації. Коли Prolog намагається довести твердження, шукається перший вираз, що дає збіг. Для збігу двох виразів вони повинні:

мати одне і те ж відношення;

мати однакове число аргументів;

давати збіг по кожному аргументу.

Порівняння аргументів визначається таким чином.

1. Константи: дві константи дають збіг, якщо вони є ідентичними рядками.

2. Константа і змінна: якщо змінна не конкретизована, то вона даватиме збіг з будь-якою константою і буде конкретизована цією константою; конкретизована змінна даватиме збіг з константою у відповідності с п.1.

3. Змінні: дві довільні змінні (не конкретизовані) завжди дають збіг, а якщо надалі одна змінна стає конкретизованою деякою константою, то інша змінна також буде конкретизована тією ж константою.

Приклади збігів показані в табл.6

Таблиця 6. Порівняння зразків в мові Prolog

Вираз 1

Вираз 2

Збіг

любить (Х, Мері)

любить (Джон, Мері)

так

любить (Джон, X)

любить (Джон, Мері)

X = Мері

любить (Джон, Мері)

подобається (Джон, Мері)

Немає

любить (Х, У)

любить (Джон, Мері)

X = Джон У = Мері

любить (Джон, Мері)

любить (Х, X)

Немає

любить (Х, Мері) і

X = Джон

любить (У, Мері)

У = X = Джон

штовхає (Джон, Кріс)

штовхає (Джон, Кріс, рука)

Немає

Приклад 2.

Нижче приведена програма на мові Prolog. Поясніть, як відповість Prolog на запит

? — дядько (джон, X)

де «? — «є запрошенням Prolog. Лістинг програми наступний.

1 батько (девід, малкольм).

2 дядько (грехим, малкольм).

3 брат (девід, джон).

4 дядько (Х, Y): — батько (г, Y), брат (Z, X).

Номери рядків показані для зручності.

Розв'язання 2.

Prolog шукатиме вираз з предикатом «дядько» і двома аргументами. Перший такий вираз знаходиться в рядку 2, але збігу не спостерігається, оскільки перший аргумент «Грехим» не відповідає аргументу «Джон». Другий вираз, що містить «дядько», знаходиться в рядку 4, але для того, щоб Prolog «досяг успіху» в досягненні мети (метою є показати, що Джон є чийсь дядько), повинна досягнути задоволена права сторона виразу: повинна збігатися з виразом — батько (Z, Y) і брат (Z, X). X в запиті і X в правилі вважаються різними, так що ми маємо наступне:

Запит: дядько (джон, X1) повинен порівнюватися з дядько (Х2, Y), що є лівою частиною правила в рядку 4. Збіг виходить для Х2 = Джон і Y = Х1 (або Х1=Y). Тепер завдання є доказом батько (Z, X1) і брат (Z, Джон). Батько (Z, X1) співпадає з рядком 1 при Z = Девід і X1 = Малкольм. Тепер завдання є виконане і задовольняє рядок 3.

Prolog відповість що X = Малкольм.

4. Розуміння мови

Для людей спілкування за допомогою звичайної розмовної мови є, очевидно, нескладним завданням, а ось всі комп’ютерні системи, що моделюють цей процес, до цих пір мають можливості, істотно поступливі можливостям звичайного першокласника. Створені системи (тобто машинні моделі) розуміння мови, що довели свою виняткову практичну користь. Наприклад, можна побудувати комп’ютеризовану систему замовлення авіаквитків, яка буде вести діалог з користувачем на звичайній мові, така система правильно відповідатиме на більшість питань користувача. Необхідність в наявності систем розуміння мови стає очевидною, якщо пригадати про можливості, що виникають у зв’язку з прискоренням розвитку засобів телекомунікацій. Все більш звичними стають електронні банківські розрахунки в інтерактивному режимі, і постійно росте інтерес до розробки автоматизованих агентів, здатних здійснювати пошук і аналізувати величезні об'єми даних в Інтернеті. Проте всі такі застосування мають досить вузькі області застосування. Обмеження області застосування дозволяє понизити рівень складності розробки за рахунок скорочення розміру словника і спрощення завдання розуміння сенсу запиту. І хоча число вузькоспеціальних застосувань для розпізнання розмовної мови за останні декілька років помітно виросло, ми все ще не можемо сказати, коли ж машинні можливості розуміння мови наблизяться до того рівня розуміння, на якому знаходиться людина. Розмовна мова є дуже виразною формою комунікації, що ставить перед ученими і програмістами масу проблем. Декілька прикладів представлено в табл.7.

Давайте трохи поговоримо про те, як з’ясувати значення пропозиції або вирішити неоднозначність твердження, щоб підкреслити, що система розуміння мови сильно залежить від наявності в її розпорядженні великої бази даних реальних знань. Багатоваріантність виникає там, де ми не можемо бути упевнені, що наша інтерпретація ситуації виявляється правильною, але загальні знання дають нам певний ступінь упевненості, а також дають можливість міняти інтерпретацію в світлі інформації, що поступає надалі.

Таблиця 7. Деякі труднощі обробки розмовної мови

Тип проблеми

Приклад

Пояснення

Передача однакового сенсу за допомогою різних форм висловлювань

1. Стюарт розбив вазу

2. Ваза була розбита Стюартом

(1) виражено в активній формі

(2) є пасивною формою (1)

Роль приводу «с»

1. Незнайомка штовхнула хлопчика з дівчинкою

2. Незнайомка штовхнула хлопчика з собакою

У (1) привід «с» означає об'єднання тих що постраждали, тоді як в (2) привід «с» додає опис хлопчика

Багато слів мають декілька значень

1. Догляд за дитиною

2. Відхід з сцени

У (1)" відхід" позначає постійний нагляд і турботу, тоді як в (2)" відхід" позначає одноразову конкретну дію

Смислове узгодження слів

1. Викрадення автомобіля є небезпекою

2. Викрадення автомобіля є небезпечним

У (1) мається на увазі небезпека для власника, тоді як в (2) мається на увазі небезпека для злочинця

Порядок слів

1. Музей зберіг дохід

2. Дохід зберіг музей

У (1) може матися на увазі, що був збережений дохід, а в (2) — що був збережений музей

Як і у разі більшості інших складних завдань, завдання реалізації системи розуміння мови на комп’ютері розбивається на декілька рівнів. Трьома рівнями, що розглядаються в дискусіях, присвячених системам розуміння мови, є синтаксичний рівень, семантичний рівень і прагматичний рівень. Синтаксичний рівень стосується того, як слова об'єднуються в структури, які називаються виразами, і як вирази об'єднуються в структури, які звуться пропозиціями. Для перевірки того, чи є деяка пропозиція допустимою (тобто граматично правильним) і для розбиття пропозиції на складові частини, зазвичай використовуються правила граматики. Семантичний і прагматичний рівні стосуються значення пропозицій. На семантичному рівні виділяється зміст (суть пропозиції), і для виразу змісту часто використовуються певні логічні форми. Наприклад, пропозиції

Джон ударив по м’ячу.

Чи ударив Джон по м’ячу?

мають один і той же зміст, який в мові Prolog може бути представлене у вигляді:

ударив (Джон, м’яч).

Маючи можливість автоматизувати синтаксичний і семантичний аналіз, ми можемо затверджувати:

Джон ударив по м’ячу. ударив (Джон, м’яч) Потім ми можемо запитати:

Хто ударив по м’ячу? ударив (Х, м’яч) По чому ударив Джон? ударив (Джон, X)

Хто по чому ударив? ударив (Х, Y)

Прагматичний аналіз стосується інтерпретації пропозиції в контексті. Так, питання про інтерпретацію займенника «Він» в пропозиції він забив гол може бути вирішений тільки в контексті (тобто з використанням сусідніх пропозицій). Щоб відповісти на питання «Хто забив гол?», ми повинні вирішити, на кого саме указує займенник «Він» .

Пропозиція.

Чи можете ви приготувати чай?

Часто означає прохання приготувати чай, але може мати і буквальний сенс: «Чи умієте ви готувати чай?». Контекст також використовується для того, щоб обмежити сенс певних слів. Слово «любити» в буденному використанні має сенс, що виражається у формі

любить (людина, об'єкт).

Цей сенс також мають такі подібні вирази як: «Джон любить Мері», «Джон любить роботу» і «Джон любить шоколад» .

У контексті відносин між людьми «любить» може бути обмежено формою любить (людина, людина),і в цьому сенсі ми можемо припускати, що «Венера» в виразі - любить (джон, венера) є ім'ям жінки, а не назвою планети. В даному випадку обмеження вирішує потенційну неоднозначність тим часом, що може позначати «Венера» — ім'я людини або назва планети. Давайте тепер коротко розглянемо сам процес синтаксичного і семантичного аналізу.

4.1. Синтаксичний аналіз

Фрагмент тексту складається з пропозицій, а кожна пропозиція компонується з виразів, які можуть містити під вирази і, кінець кінцем, складаються із слів. Граматику визначає спосіб, відповідно до якого слова і вирази можуть об'єднуватися в пропозиції. Граматика може бути представлена з допомогою багатьох будь-яких мов уявлень, але найчастіше для цього використовують формат правил виводу. На мал.4 показана структура пропозиції «The dog ran across the road «англійської мови (у перекладі воно означає «собака біг через дорогу»).

Мал.4. Приклад граматики, вираженої правилами виводу. S - означає пропозицію, N - іменник, А - прикметник, Р - привід, D - визначник (артикль), V - дієслово, ІР - іменна група, VР - дієслівна група, АР - група прикметника, РР - прийменникова група.

Мал.5. Дерево синтаксичного аналізу для пропозиції " The dog ran across the road" .

Речення аналізується з метою виділення вхідних в його структуру виразів і з метою його перевірки відповідно граматиці. Для аналізу речення потрібний також словник. Словник визначає категорії слів (N, V, Р, А, D). Такий аналіз може бути інтерпретований як пошук, при якому підтримується стек дублювання для резервного копіювання станів, щоб була можливість повернутися з тупикового стану.

Приклад 3. Ілюструйте те, як можна у вигляді пошуку провести синтаксичний аналіз пропозиції «The dog ran across the road «. Використовуйте наступну граматику:

S > NP VP

NP> D AP ID N

PP > P NP

VP> V PP

AP> AN

і наступний словник:

D> the N> dog I road V >ran P> across

Розв'язання 3. Процес показаний в табл.8, а стани, що генеруються при цьому, — на мал.6.

Таблиця 8. Синтаксичний аналіз пропозиції " The dog ran across the road " , то розглядається як пошук

Показати весь текст
Заповнити форму поточною роботою