Php ile Ajax Destekli Yapay Zeka Yapalım

Tarih: Temmuz 22nd, 2009 | Yazar: | Kategori: Php | Etiketler: , , , , , , , , , , , | 12 Yorum »

Yapay zekaları bilirsiniz. Önceden tanımlanan bilgileri, yeni öğrendikleri ile birleştirip gerçek bir beyin gibi çalışırlar. Öncelikle tam olarak ne yapacağız bilmeniz lazım. Botacad gibi sanal bir yapay zeka sistemi yapacağız. Kişi aynen muhabbet eder gibi yazacak ve cevabını yapay zekadan alacak.

Bunun için performansı en iyi şekilde düşünmek şart. Herhangi bir araştırma yok yalnız dizileri kullanmak bizim gibi basit işler için en uygun olanı. En azından mantığını ve kodları verdikten sonra siz istediğiniz gibi daha yüksek performanslı duruma çıkabilirsiniz.

Bu iş için üç dil kullanacağız; Jquery, Php ve Css;

index.php içerisinde ki kodlar;

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" ></script>
<link rel="stylesheet" type="text/css" href="stil.css" media="all" />
<script type="text/javascript" src="bot.js" ></script>
<div class="kutu">Sanal Bot ile Konuşun!
<div id="sorular">Bir şeyler yazın;<br /></div>
<form id="konus" name="form1" method="post" action="javascript:void(0);">
  <label>
    <input name="soru" type="text" id="soru" value="" size="30" />
     </label>
    <label>
      <input type="submit" name="button" id="button" value="Konuş" onclick="sor()"/>
    </label>
</form></div>

Bu sayfaya eklenmesi gereken Css dosyası stil.css;

.kutu {
	background:#eee;
	border: 1px solid #ddd;
	padding:10px;
	margin-bottom:10px;
        height:200px;
        weight:200px;
}
#sorular {
	height:150px;
	padding:10px;
	overflow:scroll;
	overflow-x:hidden;
}

Yine index.php ye eklenmesi gereken Js dosyası bot.js;

function sor() {
var soru = $("#konus :input").val();
if(soru != '') {
$.post("bot.php",$('#konus').serialize(), function(gelen) {
$("#sorular").append("Misafir:"+soru+"<br />Bot:"+gelen+"<br />");
});
}else{
 alert("Birşeyler yazmayı deneyebilirsiniz?");
}
return false; }

Ve son olarak bütün yapının zekası bot.php;

<?php
$soru = htmlspecialchars($_POST["soru"]);
$cevaplar = array("Selam"=>"Sana da selam","Sa"=>"As","Nasılsın?"=>"Teşekkürler siz?");
$anlamadim = array("Anlayamadım?","Afedersiniz?","Bu konuyu bilmiyorum");

foreach($cevaplar as $sorunun=>$cevap) {
	if(eregi($sorunun,$soru)) {
	die($cevap);
	}
}

echo $anlamadim[rand(0,count($anlamadim))];

?>

index.php de bir form oluşturuyoruz. Bu form div etiketleri ile oluşturuluyor ki Jquery tarafından kolay seçilebilsin. Css dosyasında ise bu div lere ölçüler veriliyor ve şekil aldırılıyor. Sonra Js tarafında form daki düşmeye tıklandığı anda sor() isimli fonksiyon çalıştırılıyor. Burada form içerisindeki soru isimli metin alanından soru alınıyor ve olduğu gibi karşı tarafa yollanıyor. Sonrasında gelen cevap sorular id sini alan div alanı içerisine yerleştiriliyor. Eğer ki kişi birşey yazmaz ise alert ile boş mesaj yollanamaz sinyalini veriyoruz…

Php tarafında ise öncelikle sorumuz alınıyor ve zararlı ifadelerden arındırılıyor. Sonrasında $cevaplar isimli dizide soru=>cevap şekilde tanımlamamızı yapıyoruz. Eğer ki bu sorular içerisinde yoksa anlamadım hatasını farklı farklı versin diye de ayrı bir dizi oluşturuluyoruz.

Sonrasında dizi 0′ dan başlatılarak yazdırılıyor. Her döngüde dizi içerisinde soru mevcut mu diye bakılıyor eğer ki bulursa betiğin die() fonksiyonun hemen altından sonrakiler öldürülüyor ve ekrana sorunun cevabı yazdırılıyor. İşte can alıcı nokta; eğer ki öldürülmez ise rastgele sayı belirleniyor ve bu sayı ile ekrana rastgele bir değer yazdırılıyor. İşte burada die() sayesinde betiği boşuna başka bir döngüden kurtarıyoruz…

Sorularınızı, tavsiyelerinizi buradan yazabilirsiniz. İyi günler, iyi çalışmalar…




Benzer Yazılar;

coded by nessus

“Php ile Ajax Destekli Yapay Zeka Yapalım” yazısında 12 Ahkam var.

  1. 1 Kaan Gülten 13:25 on Temmuz 23rd, 2009 anında kesmiş:

    Ertuğrul bu betiğin genel mantığını güzel bir şekilde açıklamışsın. Büyük bir özveri ve çalışma ortaya koymuşsun. Öncelikle bunlar için teşekkür ederim.
    Yalnız botacad bu söylediklerinden biraz daha gelişmiş bir sistem. Öncelikle yapay zeka, yani karşıdakini en doğru şekilde anlamak gerçekten çok zor. Bizim botacad de kullandığımız algılama mantığı özet olarak şu şekilde çalışıyor.

    CÜMLE OLARAK SORULDUYSA
    cümle kalıbı olarak aynen girildiyse onun cevabını verir
    kalıp olarak aynısı yoksa

    devrik cümle mantığı çalışır. kelimelerin yerleri değiştirilmiş veya birden fazla kelime eklenmiş sorular varsa o birden fazla kelimenin uyumu halinde cevabı verir.

    cümle olarak sorulduğunda devrik cümle uyumu yoksa, her kelime içerisinde benzerliklere bakarak, önce düzgün cümleolarak benzer kelimeler veya devrik cümle olarak benzer kelimelere göre cevap verir.

    TEK KELİME SORULDUYSA
    kelimenin birebir uyumlu olduğu soru varsa cevap verilir yoksa belirlenen sayıda harfe kadar farklılığa göre benzerleri cevaplanır

    o da yoksa içerisinde bulunduğu kelimere göre cevap verilir (ar —> araba)

    bu mantık sayesinde, kısaltmaları ve hatalı yazımları tanıyabilmektedir.
    Bununla birlikte, aynı soruya birden fazla farklı cevap verebilir ve de birden fazla soru için aynı cevabı vermesi sağlanabilir.

  2. 2 EeTr 14:40 on Temmuz 23rd, 2009 anında kesmiş:

    Merhaba Kaan bey;

    Öncelikle teşekkür ederim hem yorum yazdığınız hemde yapay zeka konusunda mantığı verdiğiniz için. Botacad ile büyük bir atılım olduğunu biliyorum ve hatta bu kadar basit bir mantık ile çalışmadığını da biliyordum. Yinede arkadaşlara en azından fikir vermesi için birşeyler yazdım :=)

    Değerli yorumuzun için tekrar teşekkürler :)

  3. 3 Ercan 22:38 on Ağustos 9th, 2009 anında kesmiş:

    Beki Bu Sistemi Mysql Baglantılı Bi Şekilde Olmazmı Acaba Cevaplar Tablosu ve Sorular Tablosu Soruldugu Soruyu Cevaplar Tablosundan Bakıp En İyi Cevapı Verilebilirmi Acaba :S

  4. 4 EeTr 22:42 on Ağustos 9th, 2009 anında kesmiş:

    Eğer yeterli Php bilginiz varsa bunu çok rahat bir şekilde yapabilmeniz lazım zaten. Öncelikle dediğiniz gibi sorular ve cevaplar isimli bir veritabanı oluşturup bütün verileri şekin.

    Normalde verileri okurken bir while veya döngüsü kurarız. İşte bu döngü içeriside verileri $dizi[] şeklinde atama yaparak bir diziyede atamış olursunuz. Yine de bir ara bu konu hakkında tekrar yazı yazacağım.

    İyi günler..

  5. 5 Ercan 23:34 on Ağustos 9th, 2009 anında kesmiş:

    Çok Güzel Olur Ertuğrul Biraz Daha İyi Anlaşım Olurum Konuyu Tekrardan İyi Geceler

  6. 6 bedri karaahmetoglu 04:58 on Ağustos 17th, 2009 anında kesmiş:

    Çok istifade ettim. ilham verici, acık, kolay ve yararlı bir çalışma olmuş. tebrikler

  7. 7 ibrahim erhan 02:27 on Eylül 7th, 2009 anında kesmiş:

    benzer kodlarla deneme yaptım ve frısat buldukça devam edeceğim. mantık aynı fakat sadece dizi ve for döngüsü ile zor. düzenli ifadeleri kullanmakta gerekli.
    programda ben şunu fark ettim diziye soru ve cevaplar yüklendiğinde hayret ve şaşkınlık gibi ifadeler en başta olursa cümlede daha doğru cevaplar çıkıyor. aynı insanın ani olaylarda verdiği tepkide olduğu gibi ve yine önemli bilgilerin HDD üzerinde ilk sektöre atılmasındaki gibi. kolay gelsin

  8. 8 EeTr 11:45 on Eylül 7th, 2009 anında kesmiş:

    Merhaba;

    Böyle yorumlar görmek çok güzel gerçekten, tam bir beyin fırtınası gibi. Evet dediğiniz gibi kısa cümleler ilk sıraya alınmalı. Bunun nedeni kısa olan sözlükler, uzun olan sözlükler içerisinde ses olarak bulunabilir. O zaman da sistem şaşar.

    Aslına bakarsanız bu yazıya tam olarak yapay zeka demekte yanlış olur. Yüz defa aynı soruya anlamadım diyen bir sistem öğrenemez, öğrenmeyen şey ise zeka olamaz..

  9. 9 turklerklani 23:11 on Aralık 17th, 2010 anında kesmiş:

    Seviyeli yapay zeka yapilabilir mi? Blog projemi ben yokken yonetecek bir zeka mesela.

  10. 10 Yasin Koç 13:21 on Mart 8th, 2011 anında kesmiş:

    EeTr, geliştirmek için yapılması gereken ilk adım belli:
    Anlamadım dediğinde bir input daha koyarsın altına, sorduğu sorunun cevabını biliyorsa eğer, cevaplamasını istersiniz kullanıcının. O cevabı yazdığında belirlediğiniz kriterlere göre şekillerde db ye kaydedersiniz. Daha sonra aynı soru sorulduğunda artık anlamadım demiyecektir. İşte kısa bir geliştirme fikri.

  11. 11 Anonim 07:02 on Ocak 22nd, 2012 anında kesmiş:

    [...] [...]

  12. 12 engin 22:04 on Ocak 28th, 2012 anında kesmiş:

    denedim ama hata aldım yapamadım galiba :S
    soru sorunca şu hatayı veriyor.
    Deprecated: Function eregi() is deprecated in D:xampphtdocsxamppbot.php on line 7

    Deprecated: Function eregi() is deprecated in D:xampphtdocsxamppbot.php on line 7

    Deprecated: Function eregi() is deprecated in D:xampphtdocsxamppbot.php on line 7


Ahkam Kesme Aparatı

  • *