Python Yapay Zeka Akıllı sohbet Botu

Python Yapay Zeka Akıllı sohbet Botu

Python Yapay Zeka Akıllı sohbet Botu
from difflib import get_close_matches
import sqlite3
from sqlite3 import Error

db_file_name="bot.db"

def soru_cevap_yaz(soru,cevap):
    try:
     con=db_connect()
     sorgu="insert into sorular(soru,cevap) values('"+soru+"','"+cevap+"')"
     cursor=con.cursor()
     cursor.execute(sorgu)
     con.commit()
    except Error as e:
        print(e) 
    
def soru_bul(soru, sorular):
    eslesen = get_close_matches(soru, sorular, n=1, cutoff=0.6)
    if (eslesen):
       return eslesen[0]
    else:
        return None

def cevap_bul(soru, veritabani):
    for soru_cevaplar in veritabani:
        if soru_cevaplar[0] == soru:
            return soru_cevaplar[1]
    return None

def chat_bot():
    
    while True:
        veritabani = sorulari_yukle() 
        soru = input("Siz: ")
        if soru == 'çık':
            break
        if (soru == 'sil'):
            cevap=sorulari_sil()
            if cevap==True:
              print("Tüm sorular silindi")
            else:
              print("Sorular Silinemedi !")
        else:
         gelen_sonuc = soru_bul(soru, [row[0] for row in veritabani])
         if gelen_sonuc:
            verilecek_cevap = cevap_bul(gelen_sonuc, veritabani)
            print(f"Bot: {verilecek_cevap}")
         else:
            print("Bot: Sizi anlayamadım !. Öğretir misiniz ?")
            yeni_cevap = input("Öğretmek için yazabilir veya 'geç' diyebilirsiniz. ")

            if yeni_cevap != 'geç':
                soru_cevap_yaz(soru,yeni_cevap)
                print("Bot: Teşekkür ederim, öğrendim.")


def sorulari_yukle():
    try:
     con=db_connect()
     cursor=con.cursor()
     sorgu ="select soru,cevap from sorular"
     cursor.execute(sorgu)
     sorular=cursor.fetchall()
     return sorular
    except Error as e:
        print(e)
    return None


def sorulari_sil():
    try:
     con=db_connect()
     cursor=con.cursor()
     sorgu ="delete from sorular"
     cursor.execute(sorgu)
     con.commit()
     return True
    except Error as e:
        print(e)
    return False


def db_connect():
    try:
     con=sqlite3.connect(db_file_name)
     return con
    except Error as e:
        print(e)
    return None

def db_create():
    try:
     con=db_connect()
     table ="create table if not exists sorular(id integer primary key autoincrement, soru varchar(255), cevap varchar(255));"
     con.execute(table) 
    except Error as e:
        print(e)
        con=None
    return con
        
if __name__ == '__main__':
    db_create()
    chat_bot()