I have written a program with Python Keras but it gives the following error:
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Activation, Dropout
from keras.optimizers import *
import random
import json
# Veri setini oluştur.
veri_seti = ['Selam', 'Merhaba','Nasılsın','İyiyim','Seni ne hakkında bilmek istersin?','Bilgisayar mühendisliği hakkında bilmek isterim','Bilgisayar mühendisliği, bilgisayar bilimleri, yazılım ve donanım temelli alanlarda çalışanlar için bir alandır.']
# Veri setinin temizlenmesi
temiz_veri_seti = []
for soru in veri_seti:
temiz_veri_seti.append(soru.lower().split())
# Sözlük oluşturma
sozluk = {}
for i in range(len(temiz_veri_seti)-1):
kelime1 = " ".join(temiz_veri_seti[i])
kelime2 = " ".join(temiz_veri_seti[i+1])
if kelime1 not in sozluk.keys():
sozluk[kelime1] = []
sozluk[kelime1].append(kelime2)
# Sözlüğü dosyaya kaydetme
with open('sozluk.json','w') as dosya:
json.dump(sozluk,dosya)
# Modeli oluşturma
model = Sequential()
model.add(Dense(128, input_shape=(len(sozluk.keys()),)))
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(Dense(len(sozluk.keys())))
model.add(Activation('softmax'))
# Modeli derleme
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# Modeli eğitme
X = np.zeros((len(temiz_veri_seti)-1, len(sozluk.keys())), dtype=bool)
y = np.zeros((len(temiz_veri_seti)-1, len(sozluk.keys())), dtype=bool)
for i, sözcükler in enumerate(temiz_veri_seti[:-1]):
X[i, list(sozluk.keys()).index(sözcükler)] = 1
y[i, list(sozluk.keys()).index(temiz_veri_seti[i+1])] = 1
model.fit(X, y, epochs=500, batch_size=len(veri_seti))
def konus():
kelime1 = random.choice(list(sozluk.keys()))
mesaj = kelime1.capitalize()
while True:
if kelime1 in sozluk.keys():
kelime2 = model.predict(np.array([X[list(sozluk.keys()).index(kelime1)]]))
kelime2 = np.argmax(kelime2)
kelime2 = list(sozluk.keys())[kelime2]
mesaj += ' ' + kelime2
if kelime2.endswith('.'):
break
else:
kelime1 = kelime2
else:
break
print(mesaj)
konus()
File "", line 45, in ValueError: ['selam'] is not in list
How can i fix it?
This program was supposed to be a word-based chatbot.I was waiting for him to learn and chat with the words I specified.İ used chatgpt to solve but it couldn't.
You receive this error because values of sozluk
dict are strings:
sozluk.keys()
dict_keys(['selam', 'merhaba', 'nasılsın', 'i̇yiyim', 'seni ne hakkında bilmek istersin?', 'bilgisayar mühendisliği hakkında bilmek isterim'])
but you try to find a list of values among these strings because temiz_veri_seti
is a list of lists:
temiz_veri_seti
[['selam'], ['merhaba'], ['nasılsın'], ['i̇yiyim'], ['seni', 'ne', 'hakkında', 'bilmek', 'istersin?'], ['bilgisayar', 'mühendisliği', 'hakkında', 'bilmek', 'isterim'], ['bilgisayar', 'mühendisliği,', 'bilgisayar', 'bilimleri,', 'yazılım', 've', 'donanım', 'temelli', 'alanlarda', 'çalışanlar', 'için', 'bir', 'alandır.']]
You should debug your code (or at least use simple print statements) to figure out what's going on inside and be able to find such problems.