Ö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:
pip install textblob

Basit Duygu Analizi Uygulaması

Şimdi Tkinter ve TextBlob kullanarak basit bir duygu analizi uygulaması oluşturalım:
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.