ilk-chatbot / app.py
yusiqo's picture
Update app.py
6dacbe5 verified
raw
history blame
1.81 kB
import nltk
import streamlit as st
from nltk.chat.util import Chat, reflections
from nltk.metrics import jaccard_distance
import re
# Eğitim veri seti
training_data = [
("Benim adım (.*)", ["Merhaba %1, nasıl yardımcı olabilirim?"]),
("merhaba|selam|hey", ["Merhaba, size nasıl yardımcı olabilirim?"]),
("nasılsın|naber", ["İyi, teşekkür ederim. Siz nasılsınız?"]),
("(iyiyim|teşekkürler), seninle konuşmaktan keyif alıyorum", ["Ben de sizinle konuşmaktan keyif alıyorum. Size nasıl yardımcı olabilirim?"]),
("çıkış|kapat|sonlandır", ["Görüşürüz, umarım tekrar görüşürüz!"]),
]
# NLTK chat için eğitim
def train_bot(training_data):
chatbot = Chat(training_data, reflections)
return chatbot
# Sohbet botunu eğitme
chatbot = train_bot(training_data)
# Jaccard benzerliği hesapla
def jaccard_similarity(s1, s2):
s1 = set(s1.split())
s2 = set(s2.split())
common_tokens = s1.intersection(s2)
all_tokens = s1.union(s2)
return 1 - len(common_tokens) / len(all_tokens)
# Sohbet botunu çalıştırma
def run_chatbot():
print("Merhaba! Benim adım ChatBot. Size nasıl yardımcı olabilirim? (Çıkış için 'çıkış' yazabilirsiniz)")
user_input = st.text_area("Siz: ")
if user_input:
max_sim = -float('inf')
response = ""
for pattern, responses in chatbot._pairs:
if isinstance(pattern, str):
pattern_str = pattern
else:
pattern_str = pattern.pattern
sim = jaccard_similarity(user_input.lower(), pattern_str.lower())
if sim > max_sim:
max_sim = sim
response = chatbot.respond(pattern_str)
st.write("ChatBot: " + response)
# Sohbet botunu başlat
run_chatbot()