PYTHONLA YAPAY ZEKALI HASTALIK DANIŞMA CHATBOTU
Kaya Ridvan
PYTHONLA YAPAY ZEKALI HASTALIK DANIŞMA CHATBOTU
HASTALIKLAR ÝÇÝN PYTHONLA YAPAY ZEKALI HASTALIK DANIÞMA CHATBOTU
Bu chatbotun görevi, hastalýklar hakkýnda bilgi vermek ve kullanýcýlarla sohbet etmektir. Bu chatbot, Rasa adlý bir çerçeve kullanarak Python ile yapýlmýþtýr. Bu chatbot, kullanýcýnýn sorduðu hastalýðýn belirtilerini, tedavisini ve diðer bilgilerini bir API’den getirir ve kullanýcýya sunar. Ayrýca, bu chatbot, kullanýcýnýn ilgisini çekmek ve eðlendirmek için çeþitli içerikler üretebilir. Örneðin, bir hastalýk hakkýnda bir þiir, bir hikaye, bir þarký veya bir karikatür oluþturabilir. Bu chatbot, yapay zeka ile çalýþýr ve kendini geliþtirmeye devam eder.
Python ile hastalýklar için bir yapay zekalý chatbot yapmak için aþaðýdaki adýmlarý takip edebilirsiniz:
- Bir chatbot projesi oluþturun ve gerekli kütüphaneleri ve çerçeveleri yükleyin. Örneðin, Rasa kullanýyorsanýz, rasa init komutu ile bir proje oluþturabilirsiniz.
- Chatbotunuzun amacýna ve iþlevselliðine uygun olarak, diyalog akýþlarýný, niyetleri, varlýklarý, eylemleri ve cevaplarý tanýmlayýn. Örneðin, Rasa kullanýyorsanýz, domain.yml, nlu.yml, stories.yml ve actions.py dosyalarýný düzenleyebilirsiniz.
- Chatbotunuzu eðitmek için yeterli miktarda veri toplayýn veya oluþturun. Örneðin, Rasa kullanýyorsanýz, rasa train komutu ile chatbotunuzu eðitebilirsiniz.
- Chatbotunuzu test etmek için farklý senaryolarý deneyin ve performansýný deðerlendirin. Örneðin, Rasa kullanýyorsanýz, rasa shell komutu ile chatbotunuzla konuþabilirsiniz.
- Chatbotunuzu daðýtmak için uygun bir platform seçin ve gerekli ayarlarý yapýn. Örneðin, chatbotunuzu bir web sitesine, bir mobil uygulamaya veya bir sosyal medya platformuna entegre edebilirsiniz.
Bu önerilere göre pythonla bir yapay zekalý chatbota ait kodlar aþaðýda verilmiþtir:
1. Dosya
```python
# domain.yml
version: "2.0"
intents:
- greet
- ask_disease
- ask_symptoms
- ask_treatment
- goodbye
entities:
- disease
responses:
utter_greet:
- text: "Merhaba, ben hastalýklar hakkýnda bilgi veren bir chatbotum. Sormak istediðiniz bir hastalýk var mý?"
utter_ask_disease:
- text: "Hangi hastalýk hakkýnda bilgi almak istiyorsunuz?"
utter_ask_symptoms:
- text: "{disease} hastalýðýnýn belirtileri þunlardýr: {symptoms}"
utter_ask_treatment:
- text: "{disease} hastalýðýnýn tedavisi þunlardýr: {treatment}"
utter_goodbye:
- text: "Görüþmek üzere, kendinize iyi bakýn."
actions:
- action_fetch_disease_info
session_config:
session_expiration_time: 60
carry_over_slots_to_new_session: true
```
2. Dosya ```python
# nlu.yml
version: "2.0"
nlu:
- intent: greet
examples: |
- Merhaba
- Selam
- Nasýlsýn
- intent: ask_disease
examples: |
- [Grip](disease) hakkýnda bilgi almak istiyorum
- [Kanser](disease) nedir?
- [Astým](disease) nasýl oluþur?
- intent: ask_symptoms
examples: |
- [Grip](disease) belirtileri nelerdir?
- [Kanser](disease) nasýl anlaþýlýr?
- [Astým](disease)ýn belirtileri neler?
- intent: ask_treatment
examples: |
- [Grip](disease) nasýl tedavi edilir?
- [Kanser](disease) için ne yapmalýyým?
- [Astým](disease)ýn tedavisi var mý?
- intent: goodbye
examples: |
- Görüþürüz
- Teþekkürler
- Hoþçakal
```
3. Dosya ```python
# stories.yml
version: "2.0"
stories:
- story: happy path
steps:
- intent: greet
- action: utter_greet
- intent: ask_disease
- action: action_fetch_disease_info
- action: utter_ask_symptoms
- intent: ask_treatment
- action: action_fetch_disease_info
- action: utter_ask_treatment
- intent: goodbye
- action: utter_goodbye
```
4. Dosya ```python
# actions.py
from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
import requests
class ActionFetchDiseaseInfo(Action):
def name(self) -> Text:
return "action_fetch_disease_info"
def run(self, dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
disease = tracker.get_slot("disease")
if disease:
response = requests.get(f"api.disease.info/v1/diseases/{disease}")
if response.status_code == 200:
data = response.json()
symptoms = ", ".join(data["symptoms"])
treatment = ", ".join(data["treatment"])
dispatcher.utter_message(response_message=f"{disease} hastalýðý hakkýnda bilgi buldum.")
return [SlotSet("symptoms", symptoms), SlotSet("treatment", treatment)]
else:
dispatcher.utter_message(response_message=f"{disease} hastalýðý hakkýnda bilgi bulamadým.")
return [SlotSet("disease", None)]
else:
dispatcher.utter_message(response_message="Lütfen bir hastalýk ismi giriniz.")
return []
```
Bu kodlar, Rasa adlý bir çerçeve kullanarak hastalýklar için bir yapay zekalý chatbot yapmanýzý saðlar. Rasa, doðal dil iþleme ve makine öðrenimi ile chatbotlar oluþturmak için kullanýlan açýk kaynaklý bir araçtýr. Kodlarda dört ana dosya vardýr:
- domain.yml: Bu dosya, chatbotunuzun niyetlerini, varlýklarýný, cevaplarýný ve eylemlerini tanýmlar. Niyetler, kullanýcýnýn amacýný belirten cümlelerdir. Varlýklar, niyetler içindeki önemli bilgilerdir. Cevaplar, chatbotunuzun kullanýcýya verdiði mesajlardýr. Eylemler, chatbotunuzun gerçekleþtirdiði iþlevlerdir. Örneðin, bu dosyada, hastalýk ismi almak için ask_disease niyeti, hastalýk ismini tanýmak için disease varlýðý, hastalýk belirtilerini vermek için utter_ask_symptoms cevabý ve hastalýk bilgisi getirmek için action_fetch_disease_info eylemi tanýmlanmýþtýr.
- nlu.yml: Bu dosya, chatbotunuzun niyetlerini ve varlýklarýný tanýmasý için gerekli olan verileri içerir. Bu dosyada, her niyet için örnek cümleler ve her varlýk için örnek deðerler verilir. Örneðin, bu dosyada, ask_disease niyeti için "Grip hakkýnda bilgi almak istiyorum" ve disease varlýðý için "Grip" örnekleri verilmiþtir.
- stories.yml: Bu dosya, chatbotunuzun diyalog akýþlarýný tanýmlar. Bu dosyada, bir hikaye, bir kullanýcý ve chatbot arasýndaki etkileþimi temsil eder. Bir hikaye, niyet, cevap ve eylem adýmlarýndan oluþur. Örneðin, bu dosyada, happy path adlý bir hikaye, kullanýcýnýn selam vermesi, hastalýk sormasý, belirti ve tedavi sormasý ve veda etmesi gibi adýmlarý içerir.
- actions.py: Bu dosya, chatbotunuzun özel eylemlerini tanýmlar. Bu dosyada, bir eylem, bir sýnýf olarak tanýmlanýr ve bir isim, bir çalýþtýrma fonksiyonu ve bir dönüþ deðeri içerir. Örneðin, bu dosyada, action_fetch_disease_info adlý bir eylem, bir hastalýk ismi alýr, bir API’den hastalýk bilgisi ister, belirti ve tedavi bilgilerini döndürür ve kullanýcýya bir mesaj gönderir.
Sosyal Medyada Paylaşın:
(c) Bu şiirin her türlü telif hakkı şairin kendisine ve/veya temsilcilerine aittir.