Eliza 105-21 guruh talabasi


Download 451.5 Kb.
Sana26.01.2023
Hajmi451.5 Kb.
#1123540
Bog'liq
mustaqil ish

ELIZA

  • Al- Xoramiy nomidagi Toshkent Axborot Texnalogiyalari Universiteti
  • Sun’iy intellekt va neyron tarmoqlari fanidan Mustaqil ish

ELIZA haqida?

  • Odamlar bilan tabiiy til o'zaro ta'siriga ega kompyuter dasturi yani odam bilan suhbatni davom ettirishga harakat qiladigan bot dasturi.
  • 1966 yilda MITda Jozef Vayzenbaum tomonidan ishlab chiqilgan
  • Nomi Pigmalion haqidagi afsonaga ishoradir

Eliza qanday ishlaydi?

    • 1) Kalit so'zlar uchun kiritilgan jumlalarni skanerlaydi
        • Kalit so'zlar daraja/ustunlik raqamiga ega bo'lishi mumkin
        • Vergul/nuqta chegaralovchilari -> faqat bitta iboralar
    • 2) Kiritilgan gaplarni o'zgartirish qoidalariga ko'ra tahlil qiladi - gapni qismlarga ajratadi kalit so'z + transformatsiya qoidasi = skript
    • 3) Dekompozitsiya qoidalari bilan bog'liq qayta yig'ish qoidalari asosida yaratilgan javoblar.

Texnik muammolar

      • kalit so'zlarni aniqlash,
      • minimal kontekstni kashf qilish,
      • tegishli transformatsiya qoidalarini tanlash,
      • yo'qligida javoblar avlodikalit so'zlar, va
      • ELIZA "skriptlari" uchun yakuniy imkoniyatlarni ta'minlash
  • (Weizenbaum, 1966)

Misol

  • ELIZA ning oddiy, ammo samarali dasturi bir xil vaziyatli NLP sifatida ishlaydi, chunki u berilgan kontekst uchun semantik ma'nolar bilan to'ldirilgan katta ma'lumotlar bazasiga ega bo'lishi shart emas; ELIZA ma'noga ahamiyat bermaydi.
  • Masalan “meni boshim og‘riyapti”
  • Qanchadan beri boshingiz og‘riyapti??

Elizaning ishlash jarayoni

  • Katta ma'lumotlar bazasini talab qilmaydi
  • va “suhbatdosh" tomonidan ELIZA aytgan so'zlarning yashirin ma'nosini taxmin qilish

Dasturiy kod qismi

  • import string
  • import re
  • import random
  • class Eliza:
  • def __init__(self):
  • self.keys = list(map(lambda x: re.compile(x[0], re.IGNORECASE), gPats))
  • self.values = list(map(lambda x: x[1], gPats))
  • def translate(self, text, vocabulary):
  • words = text.lower().split()
  • keys = vocabulary.keys();
  • for i in range(0, len(words)):
  • if words[i] in keys:
  • words[i] = vocabulary[words[i]]
  • return ' '.join(words)

def respond(self, text):

  • def respond(self, text):
  • # find a match among keys
  • for i in range(0, len(self.keys)):
  • match = self.keys[i].match(text)
  • if match:
  • resp = random.choice(self.values[i])
  • pos = resp.find('%')
  • while pos > -1:
  • num = int(resp[pos+1:pos+2])
  • resp = resp[:pos] + \
  • self.translate(match.group(num), gReflections) + \
  • resp[pos+2:]
  • pos = resp.find('%')
  • if resp[-2:] == '?.': resp = resp[:-2] + '.'
  • if resp[-2:] == '??': resp = resp[:-2] + '?'
  • return resp
  • return None

Berilgan savolga qaytaradigan javoblari

  • gPats = [
  •  [r'Menga (.*) kerak',
  • [ "Nima uchun sizga %1 kerak?",
  • "Bu sizga %1 ni olishga yordam beradimi?",
  • "Sizga %1 kerakmi?"]],
  • [r'Nega siz ([^\?]*)\??',
  • [ "Siz meni %1 emas deb o'ylaysizmi?",
  • "Ehtimol, men %1 ga erishaman.",
  • "Haqiqatan ham %1 qilishimni xohlaysizmi?"]],
  • [r'Nega men ([^\?]*)\?? qila olmayman',
  • [ "Siz %1 ga ega bo'lishingiz kerak deb o'ylaysizmi?",
  • "Agar sizda %1 bo'lsa, nima qilgan bo'lardingiz?",
  • "Bilmayman -- nega siz %1 qila olmaysiz?",
  • "Siz haqiqatan ham sinab ko'rdingizmi?"]],

Download 451.5 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling