Yapay Zeka ile Psikolojik terapi(adım adım)

nt

Emekli
Katılım
21 Nisan 2023
Mesajlar
1,215
Selam!

bir psikolog yz geliştirmek istiyorum öncelikle bana veri lazım.

Bu veriler kişisel bilgiler olduğundan insanların rahatsızlıklarını alıp kullanamam

şimdi sizlerle random modülü kullanıp veri üretelim bu veriler ile ileride psikolog yz yapıcağız

Tüm adımlarımı burada paylaşıcağım bu sadece basit 3 soruluk bir terapi simulasyonu

basit bir terapi simulasyon örneği:
import random

class Hasta:
    def __init__(self, ad):
        self.ad = ad
        self.durumlar = []

    def durum_bildir(self, durum):
        self.durumlar.append(durum)

class YapayZekaPsikolog:
    def __init__(self, ad):
        self.ad = ad

    def cevap_ver(self, soru):
        cevaplar = [
            "Anladım. Devam et.",
            "Duygularını paylaştığın için teşekkür ederim. Neden bu şekilde hissettiğini düşünüyorsun?",
            "Bu konuda daha fazla konuşabilir misin?",
            "Duygularını anlamam için daha fazla detay verebilir misin?",
            "Bunu daha iyi anlamam için geçmiş deneyimlerini paylaşabilir misin?"
        ]
        return random.choice(cevaplar)

    def terapiye_basla(self, hasta):
        print(f"Merhaba {hasta.ad}, ben {self.ad}. Nasıl yardımcı olabilirim?")

        for _ in range(3):
            soru = input(f"{hasta.ad}: ")
            cevap = self.cevap_ver(soru)
            print(f"{self.ad}: {cevap}")

        print("Teşekkür ederim. Bu seansın sona erdi.")

hasta1 = Hasta("Hasta")
psikolog1 = YapayZekaPsikolog("AIPsikolog")

psikolog1.terapiye_basla(hasta1)

terminal çıktısı:
psikologsim.py
Merhaba Hasta, ben AIPsikolog. Nasıl yardımcı olabilirim?
Hasta: sorunlarım var
AIPsikolog: Anladım. Devam et.
Hasta: anksiyete sorunları yaşıyorum
AIPsikolog: Duygularını paylaştığın için teşekkür ederim. Neden bu şekilde hissettiğini düşünüyorsun?
Hasta: özellikle sağlık durumumla ilgili sürekli korkular yaşıyorum. Herhangi bir ağrı hissettiğimde hemen kötü bir şey olacağını düşünüyorum.
AIPsikolog: Bunu daha iyi anlamam için geçmiş deneyimlerini paylaşabilir misin?
Teşekkür ederim. Bu seansın sona erdi.
 
Son düzenleme:
şimdi işi bir adım ileri taşıyalım herşey çok basit hastaların adı ve yaşı ve hastalık konuları ile simülasyona devam edeceğiz
Python:
import random

class Hasta:
    def __init__(self, ad, yas, cinsiyet, rahatsizlik):
        self.ad = ad
        self.yas = yas
        self.cinsiyet = cinsiyet
        self.rahatsizlik = rahatsizlik
        self.durumlar = []

    def durum_bildir(self, durum):
        self.durumlar.append(durum)
class YapayZekaPsikolog:
    def __init__(self, ad):
        self.ad = ad

    def cevap_ver(self, soru):
        cevaplar = [
            "Anladım. Devam et.",
            "Duygularını paylaştığın için teşekkür ederim. Neden bu şekilde hissettiğini düşünüyorsun?",
            "Bu konuda daha fazla konuşabilir misin?",
            "Duygularını anlamam için daha fazla detay verebilir misin?",
            "Bunu daha iyi anlamam için geçmiş deneyimlerini paylaşabilir misin?"
        ]
        return random.choice(cevaplar)

    def terapiye_basla(self, hasta):
        print(f"Merhaba {hasta.ad}, ben {self.ad}. Nasıl yardımcı olabilirim?")

        for _ in range(3):
            soru = input(f"{hasta.ad}: ")
            cevap = self.cevap_ver(soru)
            print(f"{self.ad}: {cevap}")

        print("Teşekkür ederim. Bu seansın sona erdi.")
hasta_verileri = [
    {"ad": "Bob", "yas": 35, "cinsiyet": "Erkek", "rahatsizlik": "Depresyon"},
    {"ad": "Jenifer", "yas": 42, "cinsiyet": "Kadın", "rahatsizlik": "Anksiyete"},
    {"ad": "Michael", "yas": 50, "cinsiyet": "Erkek", "rahatsizlik": "Obsesif Kompulsif Bozukluk"},
    {"ad": "Melinda", "yas": 28, "cinsiyet": "Kadın", "rahatsizlik": "Panik Atak"}
]

hastalar = [Hasta(**veri) for veri in hasta_verileri]

psikolog1 = YapayZekaPsikolog("AIPsikolog")

for hasta in hastalar:
    psikolog1.terapiye_basla(hasta)

isimleri bilerek yabancı yaptım.
bu yaptıgımız similasyon aynı yukarıdaki örnek gibidir bunda farklılıkar vardır.
 
Son düzenleme:
Benim burada size verdiğim örnekler Macbookdaki M2 işlemci ile stm32 arasındaki fark kadardır ben size stm32 muadili örnekler veriyorum haberiniz olsun

Gerçek bir yapay zeka modeli eğitimi için daha büyük bir veri kümesine ihtiyaç duyabilirsiniz.

Terminalden
Bash:
pip install scikit-learn
yazıp scikit-learn kütüphanesi kurabilirsiniz

ayrıca

GPT-3 gibi daha gelişmiş bir dil modeli kullanmak isteyebilirsiniz. ya da gelimiş eğitilmiş dil modelleri
Ancak, burada basit bir örnek olarak bir yapay zeka modeli eğitme sürecini gösteren temel bir adımı paylaşıyorum.
scikit-learn kütüphanesini kullanarak basit bir sınıflandırma modeli eğitebiliriz.
gerçek dünyada daha büyük bir veri kümesi ve daha güçlü bir model kullanmanız gerekecektir.

bu kod örneğim hastaların şikayetlerine dayalı onların hastalıklarını tespit etmek içindir.
Python:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import make_pipeline
from sklearn.model_selection import train_test_split
from sklearn import metrics
import random

class YapayZekaPsikolog:
    def __init__(self):
        self.model = make_pipeline(TfidfVectorizer(), MultinomialNB())

    def eğit(self, veri):
        random.shuffle(veri)
        X = [item["hasta"] for item in veri]
        y = [item["rahatsizlik"] for item in veri]
        X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
        self.model.fit(X_train, y_train)
        tahminler = self.model.predict(X_test)
        doğruluk = metrics.accuracy_score(y_test, tahminler)
        print(f"Eğitim tamamlandı. Test doğruluğu: {doğruluk}")

    def terapiye_başla(self, hasta):
        tahmin = self.model.predict([hasta])
        return tahmin[0]

veri = [
    {"hasta": "Ben çok üzgün hissediyorum.", "rahatsizlik": "Depresyon"},
    {"hasta": "Sürekli endişeliyim ve kontrol kaybetme korkum var.", "rahatsizlik": "Anksiyete"},
    {"hasta": "Aklımdan sürekli kötü şeyler geçiyor.", "rahatsizlik": "Obsesif Kompulsif Bozukluk"},
    {"hasta": "Aniden nefes alamıyorum ve panik atak geçiriyorum.", "rahatsizlik": "Panik Atak"},
]

psikolog = YapayZekaPsikolog()
psikolog.eğit(veri)
ornek_hasta = "Sürekli bir hüzün içindeyim, ne yaparsam yapayım mutlu olamıyorum."
tahmin = psikolog.terapiye_başla(ornek_hasta)
print(f"Tahmin edilen rahatsızlık: {tahmin}")


Bash:
Eğitim tamamlandı. Test doğruluğu: 0.0
Tahmin edilen rahatsızlık: Obsesif Kompulsif Bozukluk

Bu tür bir yapay zeka modeli, daha büyük ve çeşitli bir veri kümesi ile eğitilerek ve daha gelişmiş dil modelleri kullanılarak daha etkili hale getirilebilir.

ChatGPT 3 (17GB) veri ile eğitilmiş daha sonrasında kesin q-learning uygulanmıştır orası ayrı

bazı eksiklerimiz var...
Örneğin modeli kaydetmedik ya da bir teste tabi tutmadık.
 
Son düzenleme:
sıradaki örnegimizde bazı gelişmeler ekleyip
modeli joblib kullanıp kaydediyorum

Python:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.ensemble import RandomForestClassifier
from sklearn.pipeline import make_pipeline
from sklearn.model_selection import train_test_split
from sklearn import metrics
import joblib
import random

veri = [
    {"hasta": "Ben çok üzgün hissediyorum.", "rahatsizlik": "Depresyon"},
    {"hasta": "Sürekli endişeliyim ve kontrol kaybetme korkum var.", "rahatsizlik": "Anksiyete"},
    {"hasta": "Aklımdan sürekli kötü şeyler geçiyor.", "rahatsizlik": "Obsesif Kompulsif Bozukluk"},
    {"hasta": "Aniden nefes alamıyorum ve panik atak geçiriyorum.", "rahatsizlik": "Panik Atak"},
    {"hasta": "Bazı durumlarda ellerimi kontrol edemiyorum.", "rahatsizlik": "Tik Bozukluğu"},
    {"hasta": "Yemek yedikten sonra sık sık mide ağrısı çekiyorum.", "rahatsizlik": "Somatik Belirti Bozukluğu"},
]

random.shuffle(veri)
X = [item["hasta"] for item in veri]
y = [item["rahatsizlik"] for item in veri]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
vectorizer = TfidfVectorizer()
X_train_tfidf = vectorizer.fit_transform(X_train)

for n_estimators in [50, 100, 200]:
    for max_depth in [None, 10, 20, 30]:
        model = RandomForestClassifier(n_estimators=n_estimators, max_depth=max_depth, random_state=42)
        model.fit(X_train_tfidf, y_train)
        X_test_tfidf = vectorizer.transform(X_test)
        y_pred = model.predict(X_test_tfidf)
        dogruluk = metrics.accuracy_score(y_test, y_pred)
        print(f"n_estimators={n_estimators}, max_depth={max_depth}, Test doğruluğu: {dogruluk}")

final_model = RandomForestClassifier(n_estimators=100, max_depth=None, random_state=42)
final_model.fit(X_train_tfidf, y_train)

def save_model(model, filename):
    joblib.dump(model, filename)
    print(f"Model '{filename}' başarıyla kaydedildi.")

save_model(final_model, 'AIpsikolog.joblib')

ornek_hasta = "Sürekli bir hüzün içindeyim, ne yaparsam yapayım mutlu olamıyorum."
tahmin = final_model.predict(vectorizer.transform([ornek_hasta]))
print(f"Tahmin edilen rahatsızlık: {tahmin[0]}")

kodu çalıştırdıgımızda aşağıdaki çıktıyı verir ve AIpsikolog.joblib olarak eğittiğimiz modeli kaydeder

bu modelde owerfittig aşırı ögrenme sorunu yaşadık çünkü verimiz az
Bash:
n_estimators=50, max_depth=None, Test doğruluğu: 0.0
n_estimators=50, max_depth=10, Test doğruluğu: 0.0
n_estimators=50, max_depth=20, Test doğruluğu: 0.0
n_estimators=50, max_depth=30, Test doğruluğu: 0.0
n_estimators=100, max_depth=None, Test doğruluğu: 0.0
n_estimators=100, max_depth=10, Test doğruluğu: 0.0
n_estimators=100, max_depth=20, Test doğruluğu: 0.0
n_estimators=100, max_depth=30, Test doğruluğu: 0.0
n_estimators=200, max_depth=None, Test doğruluğu: 0.0
n_estimators=200, max_depth=10, Test doğruluğu: 0.0
n_estimators=200, max_depth=20, Test doğruluğu: 0.0
Model 'AIpsikolog.joblib' başarıyla kaydedildi.
Tahmin edilen rahatsızlık: Anksiyete

gördüğünüz üzere bir AI (Yapay zeka geliştirmek çay demlemekden daha kolay)

Kullandığım teknolojiler ;

"TF-IDF" (Term Frequency-Inverse Document Frequency) vektörleştirmesi metin verilerini sayısal vektörlerle temsil etmek için yaygın olarak kullanılan bir tekniktir.

Random Forest algoritması, ağaç tabanlı bir öğrenme yöntemidir. Birçok karar ağacının bir araya getirilmesiyle oluşur ve bu ağaçlar birbirinden bağımsız olarak çalışır. Random Forest, sınıflandırma ve regresyon görevlerinde etkili bir şekilde kullanılabilir.

make a pipe line :bir TfidfVectorizer ve RandomForestClassifier'ı içeren bir makine öğrenimi boru hattı (pipeline) oluşturmak için kullanılır.

Train test split Veri kümesini eğitim ve test setlerine bölmek için kullanılır. Bu, modelin eğitim sırasında görmediği verilerle test etmesine olanak tanır.

metrics.accuracy_score: Gerçek sınıflarla tahmin edilen sınıflar arasındaki doğru tahminlerin oranını hesaplar.

joblib: Burada, eğitilen final modelin diskte saklanması için kullanılmıştır.

Bu teknolojilerin bir araya getirilmesiyle, metin verileri üzerinde eğitilen bir RandomForestClassifier modeli elde edilmiş ve bu model örnek bir metin üzerinde kullanılarak bir rahatsızlık tahmini yapılmıştır.
 
Son düzenleme:
zip dosyası içeriği
tüm python dosyalarım zipde eğittiğim modelde!

Bash:
.
├── AIpsikolog.joblib
├── psikologsim1.py
├── psikologsim.py
└── psipisikopatim.py

0 directories, 4 files

:tamam1
 

Ekler

  • AIpsikolog.zip
    7.1 KB · Görüntüleme: 44
Son düzenleme:

Forum istatistikleri

Konular
5,842
Mesajlar
99,663
Üyeler
2,480
Son üye
mozcelikors

Son kaynaklar

Son profil mesajları

gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Back
Top