Önceden Eğitilmiş Basit Bir Yapay Zeka Modelini Uygulamaya Entegre Etme
Bu derste, önceki derslerde öğrendiğimiz Tkinter GUI bilgilerini kullanarak basit bir yapay zeka modelini masaüstü uygulamamıza entegre edeceğiz. Sıfırdan bir model eğitmek yerine, önceden eğitilmiş bir modeli kullanacağız. Bu yaklaşım, başlangıç seviyesindeki geliştiriciler için daha pratik ve öğreticidir.
Örneğimizde, basit bir duygu analizi uygulaması oluşturacağız. Kullanıcı bir metin girecek ve uygulamamız bu metnin olumlu mu olumsuz mu olduğunu belirleyecek. Bu amaçla Python'ın textblob kütüphanesini kullanacağız. TextBlob, doğal dil işleme görevleri için basit bir API sunan kullanışlı bir kütüphanedir.
Gerekli Kütüphanelerin Kurulumu
Öncelikle gerekli kütüphaneyi kurmanız gerekir. Komut satırında şu komutu çalıştırın:
Bash
pip install textblob
Basit Duygu Analizi Uygulaması
Şimdi Tkinter ve TextBlob kullanarak basit bir duygu analizi uygulaması oluşturalım:
Python
import tkinter as tk
from tkinter import ttk, messagebox
from textblob import TextBlob
class DuyguAnaliziUygulamasi:
def __init__(self, root):
self.root = root
self.root.title("Duygu Analizi Uygulaması")
self.root.geometry("600x400")
# Ana çerçeve
main_frame = ttk.Frame(root, padding="10")
main_frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))
# Başlık
title_label = ttk.Label(main_frame, text="Duygu Analizi Uygulaması",
font=("Arial", 16, "bold"))
title_label.grid(row=0, column=0, columnspan=2, pady=(0, 20))
# Metin girişi için etiket
input_label = ttk.Label(main_frame, text="Analiz edilecek metni girin:")
input_label.grid(row=1, column=0, sticky=tk.W, pady=(0, 5))
# Metin girişi alanı
self.text_input = tk.Text(main_frame, height=8, width=60, wrap=tk.WORD)
self.text_input.grid(row=2, column=0, columnspan=2, pady=(0, 10))
# Kaydırma çubuğu
scrollbar = ttk.Scrollbar(main_frame, orient="vertical", command=self.text_input.yview)
scrollbar.grid(row=2, column=2, sticky=(tk.N, tk.S))
self.text_input.configure(yscrollcommand=scrollbar.set)
# Analiz düğmesi
analyze_button = ttk.Button(main_frame, text="Duygu Analizini Yap",
command=self.analyze_sentiment)
analyze_button.grid(row=3, column=0, pady=(10, 0), sticky=tk.W)
# Temizle düğmesi
clear_button = ttk.Button(main_frame, text="Temizle",
command=self.clear_text)
clear_button.grid(row=3, column=1, pady=(10, 0), sticky=tk.E)
# Sonuç etiketi
result_label = ttk.Label(main_frame, text="Sonuç:")
result_label.grid(row=4, column=0, sticky=tk.W, pady=(20, 5))
# Sonuç gösterimi
self.result_text = tk.Text(main_frame, height=6, width=60, wrap=tk.WORD,
state=tk.DISABLED)
self.result_text.grid(row=5, column=0, columnspan=2, pady=(0, 10))
# Grid ağırlıklarını ayarla
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
main_frame.columnconfigure(0, weight=1)
main_frame.rowconfigure(2, weight=1)
main_frame.rowconfigure(5, weight=1)
def analyze_sentiment(self):
# Girilen metni al
input_text = self.text_input.get("1.0", tk.END).strip()
# Metin boşsa uyarı ver
if not input_text:
messagebox.showwarning("Uyarı", "Lütfen analiz edilecek bir metin girin!")
return
try:
# TextBlob ile duygu analizi yap
blob = TextBlob(input_text)
polarity = blob.sentiment.polarity
subjectivity = blob.sentiment.subjectivity
# Duygu durumunu belirle
if polarity > 0.1:
sentiment = "Olumlu"
emoji = "😊"
elif polarity < -0.1:
sentiment = "Olumsuz"
emoji = "😞"
else:
sentiment = "Nötr"
emoji = "😐"
# Öznel/nesnel durumunu belirle
if subjectivity > 0.5:
objectivity = "Öznel (Kişisel görüş içeriyor)"
else:
objectivity = "Nesnel (Gerçek bilgi içeriyor)"
# Sonucu formatla
result = f"""
Duygu Durumu: {sentiment} {emoji}
Polarite Skoru: {polarity:.3f} (-1: Çok Olumsuz, +1: Çok Olumlu)
Öznellik Skoru: {subjectivity:.3f} (0: Nesnel, 1: Öznel)
Açıklama: {objectivity}
Analiz Edilen Metin Uzunluğu: {len(input_text)} karakter
Kelime Sayısı: {len(input_text.split())} kelime
"""
# Sonucu göster
self.result_text.config(state=tk.NORMAL)
self.result_text.delete("1.0", tk.END)
self.result_text.insert("1.0", result)
self.result_text.config(state=tk.DISABLED)
except Exception as e:
messagebox.showerror("Hata", f"Analiz sırasında bir hata oluştu: {str(e)}")
def clear_text(self):
self.text_input.delete("1.0", tk.END)
self.result_text.config(state=tk.NORMAL)
self.result_text.delete("1.0", tk.END)
self.result_text.config(state=tk.DISABLED)
# Uygulamayı başlat
if __name__ == "__main__":
root = tk.Tk()
app = DuyguAnaliziUygulamasi(root)
root.mainloop()
Kullanıcı Arayüzünden Girdi Alma ve Yapay Zeka Modeline Gönderme
Yukarıdaki örnekte, kullanıcıdan girdi alma sürecini şu adımlarla gerçekleştirdik:
1.Girdi Alanı Oluşturma: tk.Text widget'ı kullanarak kullanıcının metin girebileceği bir alan oluşturduk. Bu widget, çok satırlı metin girişi için idealdir.
2.Girdi Doğrulama: Kullanıcının boş metin göndermesini engellemek için if not input_text: kontrolü ekledik.
3.Veri Hazırlama: self.text_input.get("1.0", tk.END).strip() komutu ile kullanıcının girdiği metni aldık ve başındaki/sonundaki boşlukları temizledik.
4.Model Çağrısı: TextBlob kütüphanesini kullanarak duygu analizi gerçekleştirdik. TextBlob(input_text) ile bir TextBlob nesnesi oluşturduk ve sentiment özelliği ile duygu bilgilerini aldık.
Yapay Zeka Modelinden Gelen Çıktıyı Kullanıcıya Gösterme
Model çıktısını kullanıcıya gösterme sürecinde şu teknikleri kullandık:
1.Sonuç İşleme: TextBlob'dan gelen polarity (polarite) ve subjectivity (öznellik) değerlerini anlamlı kategorilere dönüştürdük.
2.Kullanıcı Dostu Gösterim: Ham sayısal değerleri, kullanıcının anlayabileceği metinler ve emojilerle zenginleştirdik.
3.Çıktı Alanı: tk.Text widget'ını state=tk.DISABLED yaparak kullanıcının sonuçları değiştirmesini engelledik, ancak sonuçları göstermek için geçici olarak state=tk.NORMAL yaptık.
4.Hata Yönetimi: try-except bloğu kullanarak olası hataları yakaladık ve kullanıcıya anlaşılır hata mesajları gösterdik.
Uygulamanın Özellikleri
Bu basit duygu analizi uygulaması şu özellikleri sunar:
•Kullanıcı dostu arayüz
•Çok satırlı metin girişi
•Gerçek zamanlı duygu analizi
•Detaylı sonuç gösterimi (polarite, öznellik, kelime sayısı)
•Hata yönetimi
•Temizleme fonksiyonu
Bu örnek, yapay zeka modellerinin masaüstü uygulamalarına nasıl entegre edilebileceğinin temel bir gösterimidir. Sonraki derslerde, daha gelişmiş modeller ve daha karmaşık entegrasyon yöntemleri öğreneceğiz.