İçindekiler:

Yapay Zeka Nasıl Yapılır? Bölüm 2: 9 Adım
Yapay Zeka Nasıl Yapılır? Bölüm 2: 9 Adım

Video: Yapay Zeka Nasıl Yapılır? Bölüm 2: 9 Adım

Video: Yapay Zeka Nasıl Yapılır? Bölüm 2: 9 Adım
Video: HERKES İÇİN YAPAY ZEKA - BAŞLANGIÇ 2024, Kasım
Anonim
Yapay Zeka Nasıl Yapılır? Bölüm 2
Yapay Zeka Nasıl Yapılır? Bölüm 2

Bu, ücretsiz bir veritabanı, Programlama geliştirme aracı ve Windows ile birlikte gelen ücretsiz yerleşik TTS motorunu kullanarak bir Windows bilgisayarda yapay zeka oluşturmak için attığım adımlarla ilgili 2. bölümdür.

"Windows" kelimesi Microsoft'a aittir.

"Ejderha" kelimesi Nuance'a aittir.

Adım 1: Yapay Zeka Bölüm 2 Nasıl Yapılır?

Yapay Zeka Bölüm 2 Nasıl Yapılır?
Yapay Zeka Bölüm 2 Nasıl Yapılır?

Bir programlama dili seçin ve bazı araçlar edinin

Birçok programlama dili vardır. Bazıları yapay zeka için uzmanlaşmıştır. En sevdiğim Visual Basic, bu yüzden kullandım. Ayrıca SQL server veritabanlarıyla çalışıyorum, bu yüzden onu da kullandım.

Bunların ücretsiz sürümlerini Microsoft web sitesinden indirebilirsiniz. Microsoft web sitesinde “EXPRESS” ifadesini aramanız yeterlidir. [Visual Studio Express ve SQL server Express]

Bize isteyebileceğiniz diğer diller: Python, C#, C++, Java, Prolog, Lisp, IPL

Ve bircok digerleri. AIML çok ilginç bir “İşaretleme Dili”dir.

Windows ile gelenden daha iyi bir “konuşma tanıma” programı istedim, bu yüzden DRAGON yazılımını satın aldım. Windows ile birlikte gelen standart “Metin okuma” programını kullanıyorum.

Adım 2: Sisteminizi Tasarlayın:

Sisteminizi Tasarlayın
Sisteminizi Tasarlayın

Büyük projelerinizi birkaç küçük projeye bölün. Program kodumu modüllere ayırdım.

Belirli bir işlevin daha kolay bulunabilmesi için kodumu farklı modüllere böldüm.

“Process Input”, “Process AI”, “Process Output”, “Kullanıcı Arayüzü” ve birkaç tane daha modüllerim var. Bazı işlevlerimin diğer tüm kod modülleri tarafından erişilebilir olması gerekiyor, bu yüzden bu işlevleri her şeyin paylaşıldığı “ortak” bir modüle koydum.

Adım 3: Programlama Dilinde Yerleşik İşlevler:

Programlama Dilinde Yerleşik İşlevler
Programlama Dilinde Yerleşik İşlevler

Farklı dillerin bunlar için farklı adları olabilir, ancak tüm üst düzey dillerin benzer işlevleri vardır.

LCase veya ToLower: Bir dizeyi tamamen küçük harfe dönüştürür. Bir veritabanı araması yapmadan önce her şeyi küçük harfe dönüştürürüm - çoğu şey "büyük/küçük harf duyarlı" olsa da - Her ihtimale karşı.

Değiştir: Bir dizenin içindeki bir dizeyi başka bir dizeyle değiştirin. Ondan kurtulmak için bir dizgiyi boş bir “” dizesiyle değiştirebilirsiniz. Noktalardan, soru işaretlerinden, virgüllerden ve diğer noktalama işaretlerinden kurtuluyorum.

Böl: Bir dizeyi tek tek parçalara böler ve bir diziye koyar. Bu işlev, herhangi bir karakter veya "Sınırlayıcı" üzerindeki bir dizeyi böler. Bir kelime dizisi oluşturmak için bir cümleyi "boşluk karakteri" " " üzerine böldüm. Buna AI Guruları tarafından “Tokenizing” denir.

Veritabanını aramak için kullanılan sorguları oluşturmak için tek tek kelimeleri kullanıyorum. (Bununla ilgili daha fazla bilgi bir sonraki makalemde)

Adım 4: Kendi İşlevlerinizi Oluşturmak için Yerleşik İşlevleri Birleştirin

Bu, "görsel temel" bir örnektir. Bunun gibi bir şey oluşturmak için programlama dilinizi kullanın.

Elbette, seçtiğiniz programlama dilini kullanarak çok sayıda kod yazmanız ve birçok işlev oluşturmanız gerekecek.

Adım 5: Modüller Ne Yapar? "Giriş İşlemcisi"

Modüller Ne Yapar? "Giriş İşlemcisi"
Modüller Ne Yapar? "Giriş İşlemcisi"

Yapay zekaya aynı soruyu sormanın yüzlerce farklı yolu olabilir. Örneğin; “Saat kaç?”, “Vaktin var mı?” “Saatin kaç olduğunu biliyor musun?”, “Günün şu anki saatini söyleyebilir misin?” Kullanıcı sadece zamanı sorduğu için, bu Girdilerden herhangi birini bir veritabanı “arama” tablosu kullanarak “Sorgu Zamanı” adlı tek bir Çıktıya dönüştürüyorum.

Bir eşleşme bulana kadar bir tabloda döngü yapmak için kod yazabilirsiniz veya bir SQL veritabanı kullanıyorsanız, aşağıdaki gibi bir SQL sorgusu yazabilirsiniz…

“Girdi = '” ne olursa olsun, "TabloAdı'ndan Çıktıyı Seçin"

…Sonra “Sorgu Zamanı” çıktısını bir sonraki kod modülüne gönderiyorum; “Süreç AI”

Soruların yanı sıra “Merhaba” demenin birçok yolu vardır.

Merhaba, Merhaba, naber, merhaba, merhaba, nasılsın?, selamlar, hoş geldiniz, selamlar, naber….

Bunların hepsi “Selam”a indirgenmiştir.

AI işlemcisi "Greeting" ifadesini gördüğünde, bir veritabanı tablosundan rastgele bir selamlama seçecek ve yüksek sesle konuşacak olan çıktı işlemcisine "Greeting" gönderir.

6. Adım: “AI İşlemci”

“AI İşlemci”
“AI İşlemci”

Process AI, en büyük kod modülüdür. O kadar büyük ki, onu da bölümlere ayırdım.

Giriş, kullanıcının bir komut söyleyip söylemediğini veya bir soru sorup sormadığını görmek için kontrol edilir. Ayrıca, AI birkaç "Mod"dan herhangi birinde olabilir; bu, "Süreç AI" kodunun kullanıcıdan soru SORMAK yerine bir soruyu CEVAPLAMASINI beklediği anlamına gelir.

Kullanıcı bir komut söylemediyse ve AI özel bir "Mod"da değilse, "kelime dizisindeki" kelimelerin kombinasyonlarından bir sürü sorgu oluşturur ve yürütür. Tüm sorgu sonuçları bir tabloda saklanır ve her sorgu sonucuna, sonucun kullanıcının söylediğiyle ne kadar yakından eşleştiğine ilişkin bir "puan" verilir. Tablo puana göre sıralanır ve belirli bir eşiği aşması durumunda en yüksek puana sahip sonuç çıktıya gönderilir. Tüm puanlar eşiğin altındaysa, AI "Bilmiyorum" veya "Bu hesaplanmıyor" şeklinde yanıt verebilir.

7. Adım: "Çıktı ve Puanlar" Tablosu

NS
NS

AI, "Tavuk ne yaptı?" girişimden çıktı.

Adım 8: “Çıkış İşlemcisi”

“Çıkış İşlemcisi”
“Çıkış İşlemcisi”

Bu, “ilgisiz” görünen birkaç şey yapar, ancak hepsinin metni AI İşlemciden kullanıcıya almakla ilgisi vardır.

İşte bir liste.

1. Veritabanından gelen metin tamamen küçük harf olabilir ve noktalama işareti içermeyebilir.. Altyordamlar ilk harfi büyük yazacak ve sonuna nokta veya soru işareti koyacaktır.

2. Başka bir alt yordam kesme işaretlerini kısaltmalara geri getirecek veya kısaltmaları tam kelimelere dönüştürecektir (yani, “cant” yerine “can’t” gelir)

3. Metin-konuşma motoru bazı kelimeleri istediğim gibi telaffuz etmiyor, bu yüzden “Çıktı İşlemcisi” bu kelimeleri fonetik bir yazımla değiştiriyor.. Bunları tutmak için veritabanı “arama” tablolarım var, buna benzer "giriş işlemcisinde"

4. Yapay zeka veri tabanında uygun bir cevap bulamazsa, “Bilmiyorum” diyebilir ama bunu tekrar tekrar söylemesini istemiyorum. Gerçek insanlar tepkilerini değiştirir. Yani “Ortak Çıktı” ifadeleri olan bir tablo ve birini rastgele seçen bir fonksiyon var (ve asla aynısını arka arkaya iki kez seçmeyecek).

5. Ücretsiz "metinden konuşmaya" (TTS) motoru, bir programcıya cümlelerin söylenme şekli için çok fazla seçenek sunmaz, ancak seslerin perdesi ve hızı üzerinde biraz kontrolünüz vardır. Bunun için kullanılan terim “Prozodi”dir. Veritabanımdaki metne bazı “aruz” kodları ekledim ve “Çıkış İşlemcisi” bunları gördüğünde, her kelime söylendikçe TTS motorunda perdeyi ve hızı ayarlıyor.

6. Bazen TTS'yi anlamak zor oluyor, bu yüzden kelimeleri yüksek sesle söylemenin yanı sıra onları bilgisayar ekranımda büyük harflerle de gösteriyorum. "Kullanıcı Arayüzü"nün bu kısmı, bir konuşmanın son 6 satırını (Kullanıcı girişi ve AI çıkışı) gösteren ve yeni satırlar eklendikçe yukarı kaydıran bir ızgaradır.

Adım 9: Üzerinde Çalışmaya Devam Edin

Üzerinde Çalışmaya Devam Edin
Üzerinde Çalışmaya Devam Edin

Girişim “Kimseye söyleme” idi

Hâlâ yapay zeka sistemim üzerinde çalışıyorum ve muhtemelen hiçbir zaman gerçek anlamda "yapılmış" olmayacak. Daha fazla özellik ekledikçe daha fazla makale yazacağım.

Belki bazı fikirlerim, benimkinden daha iyi bir yapay zeka oluşturmanız için size ilham verir.

Önerilen: