Telegram Bot Nasıl Geliştirilir ?

telegram

Yapay zeka ve Derin Öğrenme konularında çok fazla haber ve yıkıcı gelişmeler olduğuna dair rivayetler var. Biraz araştırdığınızda neredeyse tüm büyükler (Google, Microsoft, Facebook ve yıllardır zaten IBM) bu konuya milyon dolarlar doküyorlar. Bunlardan en ilginci Elon Mask’ın Tesla’sı. Kendi kendine giden arabalar için görüntü ve sensorlerden gelen bilgilerin fizyonu konularında çok yoğun olarak yapay zekadan yararlanıyorlar. ABD’de iken Tesla ile bir test sürüşü yapma imkanım olmuştu. Size şöyle söyleyim adamlar arabanın iphone versiyonunu yapmışlar. Araba üzerinde dört yıl LTE ücretsiz internet bağlantısı ile geliyor. O zaman anlayamamıştım ama şimdi bunun nedeninin araba kullanıldıkça kaydedilen görüntü ve verilerin Tesla merkezine transfer edilerek merkezdeki yapay zeka algoritmalarını eğitmek için kullanıldığını anlıyorum. Dikkat ederseniz tüm büyükler yapay zeka yazılımlarını ve servislerini ücretsiz kullandırıyorlar. Bunun nedeni de aynı mümkün olduğunca çok kullanıcı bilgisi ile sistemi eğitebilmek. Yapay Zeka çok fazla veri ile eğitilen sistemler olduğu için firmalar buna muhtaçlar. Gerçi geçenlerde MIT’de internette gezinerek kendini eğitebilen bir yapay zeka yazılımı yapıldığı haberi çıktı.

Bu eğitilmiş zekalar tabiki servis olarak bizlerin hizmetine sunulacak. Şimdilik bedava ilerde daha yeteneklileri para ile en yeteneklileri ise ülkelerin savunma ve güvenlik sistemlerinde kullanılacak. Ülke olarak bizde milli yapay zeka yazılımımızı şimdiden eğitmek zorundayız.

Anlatacak çok şey var ama biraz uygulama yapmaya nedersiniz? Biz Türkler hemen çalışan birşeyler görmek isteriz. Hadi başlayalım.

İlk olarak yapay zeka sistemi ile iletişim kuracağımız bir arayüz gerekli bizim için. Bunun için herzaman yanımızda taşıdığımız akıllı telefondan daha iyi bir araç aklıma gelmiyor. Zaten Apple Siri Microsof Cortana vs yazılımlar telefonlarımızda yerini aldı. Benim anlatacağım sistem biraz daha size ait olacak. Size ait olan bir sistemi geliştirmek ve değiştirmek çok daha kolay oluyor.

Yazılım olarak Telegram denilen bir mesajlaşma yazılımını seçtim. Bu yazılım Whatsapp, Facebook messanger benzeri bir chat programı. Ama bazı güzel yanları var. Hızlı olmasının yanında API arayüzleri sayesinde geliştiriciler için çok güzel imkanlar sunuyor. Ayrıca yazı yazmak yerine ses ile de mesaj gönderebiliyorsunuz. Şuanda sesli Türkçe koutları işleyerek yapay zekalı bir sistemi evde çalıştırıyorum. Nekadarını burda anlatıcam bilmiyorum ama bana çok fazla gelecek kokan bir uygulama oldu gibi geliyor.

Telegram bot sizin bir asistanınız. Ona yazı yada sesle verdiğiniz komutları yerine getiriyor. Tabi hangi komuta nasıl bir tepki vereceğini sisiz programlamanız gerekli. Bunlardan bahsedeceğim. Sizlerde ihtiyaç duyduğunuz yada fikir olarak şöyle bir bot olsa faydalı olurdu dediğiniz konuları aşağıda comment olarak yazın tartışalım.

Telegramı çep telefonunuza kurup gerekli adımları geçiyoruz. Bundan sonra yeni bir bot oluşturmak için tüm botların babası BotFather’ı arayıp (search) chat yapmak için sistemimize ekliyoruz. BotFather’in resmi şu şekilde benzer isimde sahte hesaplar da var onlara kanmayın 🙂

telegram

Bu arkadaşı ekledikten sonra onunla chatleşerek yeni Botumuzu oluşturacağız. Mevcut kullanabileceğimiz komutları görmek için /help yazabiliriz.

sc-1

Yeni Botunuzu oluşturmak için  /newbot yazıp BotFather’a gönderin. Bundan sonra size Botunuza ne isim vereceğinizi (name) daha sonrada sonu Bot ile bitecek olan username’ı seçmenizi isteyecek.

Bu adımları tamamlarsanız Tebrikler ilk Botunuzu oluşturdunuz. Burada en önemlisi size gönderilen API token. Bunu sağlam bir yere kopyalayın bundan sonra lazım olacak. API Token aşağıdakine benzeyen harf ve rakamlar topluluğu

270485614:AAHfiqksKZ8WmR2zSjiQ7_v4TMAKdiHm9T0

Yeni botunuzu arayıp konuşmak için listenize ekleyin. Birkaç mesaj yazın. Ne oldu hiç cevap gelmedi mi? Çünkü botunuzun henüz bir zekası yok 🙁

Bir sonraki yazıda botumuza zeka katıp bazı işleri yapmasını sağlayacağız. Fikir ve önerilerinizi bekliyorum.

Yapay Zeka ve Öğrenen Makinalar

Hızla dünyada en çok konuşulan konulardan biri haline gelen yapay zeka benim de yıllardır ilgimi çeken konuların başında gelmektedir. Daha önceden de bu alanda yapılan yazılımları incelemiş ve önemli bir konu olduğuna kanaat getirmiştim. Ama hep kendi kendine düşünebilen makinalar yapmak için bu düşünce sisteminin dışından probleme bakmak gerektiğini savunmuşumdur. Bunu da insan oğlu nasıl yapabilir ki demişimdir. Bu düşünce sisteminin dışından bir bilgisayar peki hala bunu yapabilir. Yapay zeka konuşmaları mutlaka felsefi bir yöne doğru gitmeye meğillidir ama ben bunu yapmayacağım. 2017 yılında kendimi bu konuda geliştirmek yönünde bir karar aldım ve öğrendiklerimi buradan sizlerle paylaşacağım. Gnexlab’da çoğunlukla laf üretmek yerine çalışan örnekler vermeye çalışıyorum. ML (Machine Learning) konusunda da durum böyle olacak. Bu konuya ilgi duyan bu konuda çalışan sizlerle iletişim kurmak beni mutlu eder. Ama ödev sorularınızı cevap veremiyeceğimi belirtmek isterim. Bu yazıda sadece 6 satır kod ile çalışan bir ML uygulaması yapacağız.

Şimdi hızlıca ML nedir ve neden bu kadar önemli biraz bundan bahsedelim. Aslında ML yapay zekanın bir alt dalı. Bir çok problemi yeniden kodlama yapma gereği olmadan çözmek amacı ile geliştiriliyor.

Yalçın Yenigün burada şu şekilde türkçeleştirmiş

ML : Bilgisayarların dışarıdan programlanmaya ihtiyaç duymadan kendi kendine öğrenme yeteneğine “machine learning” denir.

Aslında ML kod içine gömülmüş kural setleri yerine örneklerden ve tecrubelerden öğrenen bilgisayar yazılımlarına verilen genel bir isim bir kavram.

Bu tanım bile ne kadar önemli olduğunu anlatıyor ama basit olmasına rağmen ML dışında çözümü pek de mümkün olmayan bir örnek üzerinden devam edelim.

Elma ile Portakal arasındaki farkı anlatan bir kod yazmanızı istesem. İlk aklımıza gelen turuncu ve yeşil pikselleri saymak bir çözüm olarak gelebilir.

Inline image 1

Turuncunun fazla yeşilin az olduğu resimleri portakal olarak ayırabilirsiniz. Fakat gerçek dünya bu kadar basit değil malesef. Kod içine yazdığınız sabit kural setleri çok kolay kırılacaktır. Mesela size siyah beyaz bir resim versem.

Inline image 2

Emin olun yukarıda yazdığınız kural setlerini kıracak bir çok resim bulabilirim. Siz de tonlarca kod ekleyerek tüm bu kural setlerini benim bulduğum uygunsuz resimleri de kapsayacak şekilde düzeltmeye çalışırsınız. Peki ya problemi değiştirirsem? Yeni problem için sil baştan tekrar tonlarca yeni kural seti mi yazacaksınız?

O zaman bizim için tüm bu kural setlerini yazacak bir algoritmaya ihtiyacımız var.

Şimdi işte işin zevkli kısmına geliyoruz. Bizim bir sınıflandırıcıya (Classifier ) ihtiyacımız var. Nedir bu sınıflandırıcı? Aslında sınıflandırıcıyı bir fonksiyon olarak düşünmek gerek. Bu fonksiyon dataları input olarak alıyor ve sonuç olarak bir etiket döndürüyor. Örnek olarak sınıflandırıcınız bir e-postayı alıp bunun spam mi yoksa değilmi diye ayrıştırıyor olabilir.

Örnekler içerisindeki belirli patternleri (kalıpları) bulmak için sınıflandırıcı geliştirmeye Supervised Learning deniliyor. (Türkçe terimlerde yardımlarınızı bekliyorum.)

Sınıflandırıcımıza girdi olarak verdiğimiz datalardan birisi eğitim datalarıdır. Mesela yukarıdaki örnek için meyvaların ağırlık ve yüzeyleri tablosu eğitim datamız olsun.

Inline image 3

 

ML de bu ağırlık ve yüzey pürüzlülüğüne features denilmekte. Bu özellikleri ne kadar doğru ve çeşitli verirseniz sınıflandırıcınız o denli doğru çalışacaktır. Bu örnekde Karar ağacı (decision tree) sınıflandırıcısını kullanacağız. Bunun gibi bir çok sınıflandırıcı algoritması geliştirilmiştir. Şimdilik karar ağıcı yada diğer sınıflandırıcı çeşitlerinin iç yapısına girmeden onları bir kurallar kutusu olarak düşünmekte yarar var. Buradaki en önemli konu içeriğini şimdilik bilmesek de tüm sınıflandırıcıların girdi ve çıktıları aynıdır. Data girer tahmin çıkar.

Sınıflandırıcıyı oluştururken örnekler içerisindeki kalıpların kullanılacağından bahsetmiştik.

Inline image 4

Mesela portakal genellikle elmadan daha ağırdır. O zaman ağır olan meyva daha büyük olasılıkla portakaldır diye bir kural seti olabilir. Demin de dediğimiz gibi bu kural setini biz elimizle yazmıyoruz. Verdiğimiz ağırlık datalarına bakarak bu kural setini sınıflandırıcı otomatik olarak oluşturuyor. Bu kural seti gibi yüzlerce binlercesini kendisi oluşturabilir. Mesela verdiğiniz yüzlerce hastalık belirtilerinden, tahlil sonuclarından o hastalığın büyük olasılıkla ne olduğuna bir makina insandan daha doğru karar verebilir. Ya da insansız bir hava aracı işlediği görüntü verilerden hareket kalindeki insan topluluğunun terorist mi yoksa yöre halkı mı olduğunun kararını doğru bir şekilde verebilir.

Konuyu dağıtma eğilimimi bastırıp ilgimi çeken ve bundan sonra derinlemesine inceleyeceğim iki açık kaynak ML kütüphanesinden bahsederek devam edeyim. Bunlardan ilki scikit-learn diğeri de çıkalı bir yıl olmasına rağmen Linux dan daha fazla yıldız alan Google’ın TensorFlow kütüphanesi. Bundan sonra çalışmalarımda bu iki kütüphaneden yararlanacağım.

Yukarıdaki örneği scikit’de kodlarsak aşağıdaki 6 satır kodu elde ediyoruz. (Python kodu)

Inline image 5

 

Burada etiketleri ifade etmesi için sayıları kullanmamız gerekiyor. Zira aslında ML kütüphaneleri dediğimiz kodlar büyük matris işlemlerini çok hızlı yapabildikleri için günümüzde ML bir ivme kazandı. (ML kodlarının çalıştırıldığı donanımlardan ilerde bahsedeceğim)

0  bumpy yani pürüzlü yüzeyi 1 ise smooth yani düzgün yüzeyi
1 portakalı 0 ise elmayı temsil etsin.
Kodu yukarıdaki tablolarla birlikte incelerseniz özellikler tablosundan features dizinini oluşturuyoruz. Labels da bunlara karşılık gelen meyvenin ismini tutuyor.
clf olarak Karar ağacı sınıflandırıcımızı tanımlıyoruz. Bu sınıflandırıcıya features ve labels dizinlerini fit foksiyonu yardımıyla input olarak veriyoruz. Bu sınıflandırıcımızın eğitim işlemi. Daha sonra yine clf objesinin bir fonksiyonu olan predict ile ağırlığı 150 gram ve yüzeyi pürüzlü meyva nedir diye tahmin etmesini istiyoruz. Cevap 1 yani Portakal oluyor.

Tebrikler

Buraya kadar geldiyseniz 6 satırlık ilk ML kodunu anladınız demektir. Asıl güzel kısmı bu kodu hiç değiştirmeden yeni örneklerle eğitip başka problemleri çözmesini isteyebiliriz.

Inline image 6

 

Konu, anlaşılması için ne kadar sadeleştirilmiş olsa da eğer buraya kadar anlatılanlardan hoşlandıysanız ML sizin için de öğrenmeye değer olabilir. Zira Önümüzdeki 10 sene bunu çok konuşuyor olacağız.

Bir sonraki bölümlerde kod geliştirme ortamı kurulumu ve basit örneklerle devam edeceğiz. Takipte kalın.

Kaynaklar :

1- Açık kaynak ML kütüphanesi Scikit-Learn:  http://scikit-learn.org/stable/index.html

2- Açık kaynak ML kütüphanesi TensorFlow: https://www.tensorflow.org/

3- Google Developers:  https://www.youtube.com/channel/UC_x5XG1OV2P6uZZ5FSM9Ttw

4- ML Recepies by Josh Gordon : https://www.youtube.com/playlist?list=PLOU2XLYxmsIIuiBfYad6rFYQU_jL2ryal

 

 

 

 

Hangi 3D Yazıcıyı Almalı?

m200a23D yazıcı seçerken öncelikle ihtiyacı belirleyip karar vermek gerektiğini düşünüyorum. Printerdan önce ihtiyaca yönelik ham malzeme konusuna bir bakmak gerekiyor. 3D yazıcı dünyasında kullanılan ham malzemeleri ABS ve PLA olarak iki ana gruba toplarsak bu iki malzeme özellikleri bizim ihtiyacımızla nasıl örtüşüyor düşünmekte fayda var. ABS sağlam fakat soğuduğunda çekme ve küçülme oranları yüksek olan bir malzeme. Sıcak tabla üzerine basılması gerekiyor. Hatta etrafı kapaklı yazıcılarda ortam sıcaklığının kontrol edildiği printerlarda daha başarılı sonuç vermekte. Eğer fonksyonel parçalar yapıp projenizde kullanmak istiyorsanız örneğin plastic dişliler ABS malzeme uygun olacaktır. Çok büyük boyutlu çıktıları bir kerede ABS ile almak oldukça zordur. Soğuma esnasında çekme yaptığı için özellikle ince ve köşe bölgelerin tabladan kalktığı gözlemlenir. ABS ayrıca bazı zaralı gazlar içerdiğinden çocuklar ile birlikte kullanılmasının sakıncalı olduğunu düşünüyorum. Ortamın iyi havalandırılması gerekmektedir. Benim için sağlamlık ve yaptığım parçayı birebir projemde kullanmak önemli diyenler için ABS malzeme uygun olacaktır. ABS malzemede en başarılı sonuçları veren yazıcı Zoltrax M200. Fiyat olarak da uygun bu yazıcının dezavantajı açık kaynak yazılım kullanmamasıdır.ultimaker_3_extended_1_3d_printer

Eğer görsel amaçlı büyük boyutlu parçalar basmak istiyorsanız PLA uygun malzeme olacaktır. Çekme oranı düşüktür ve ABS’e oranla daha düşük sıcaklıklarda kullanılabilir. Zararlı gaz çıkışı olmaz mısır bazlı bir mühendislik plastiğidir. Mimarlık inşaat mühendisliği gibi dallarda bina ve içmekan modellerini bu malzeme ile basmanız mümkün olur. Tasarım sırasında üretime geçmeden önce modelinizi elinize alıp inceleyip taarım iyileştirmesi yapıyorsanız yine PLA ile çalışmanız uygun olacaktır. PLA malzemeyi en iyi basan 3D yazıcı benim fikrime göre Ultimaker’dır. Yenilenen çift extruder ile hem 2 renk çıktılar almak mümkün olmakta hem de suda eriyen destek malzemesi kullanarak baskıda altı boş olabilecek modellerin altına destek yapılabilmektedir. PLA benim için uygun malzeme diyenler için 3D yazıcı önerim Ultmaker 3 olacaktır. Ultimaker’ın yazılım ve donanım olarak açık kaynak olması herkez tarafından daha sevilmesine neden olmaktadır.

 

 

 

 

 

İnsanlık Tarihi ve Teknolojik Gelişimler

2012 yılında yazdıgım bir yazıyı bilgisayarımı kurcalarken buldum. Sizlerle paylasmak istedim.

 

İnsanoğlu dünyaya, benliğinde yaratım, ortaya çıkarma ve kendini anlatma dürtüleri ile gelir. Bu dürtüler onu öylesine motive eder ki onun sayesinde çağlar boyunca mağrada yaşamdan sanal yaşama uzanan bir gelişim segilemiştir. Bu gelişim o kadar da kolay ve hızlı olmasa da değişimin ivmesi günümüze yaklaştıkça üssel oranda artmıştır.

 

Bu dinamizmi körükleyen önemli buluşlar büyük sıçramalara neden olmuş ve bazı devrimlerin yaşanmasını olanaklı kılmıştır. Bir buluşun değeri etkilediği alanda insan oğluna kazandırdığı güç çarpanı ile ölçülür. Örnek olarak buhar gücünün kullanılmaya başlanması ile insan oğlunun kas gücü yüzlerce kez artmış bu önemli buluş birinci endüstri devriminin yaşanmasına neden olmuştur. İnsanlığın tarihsel gelişimi içinde tren yolları ve araba ile taşımacılık, elektrik, Henry Ford’un montaj hatları ile başlayan seri üretim serüveni, petrol ürünlerinin kullanımı ve içten yanmalı motorlar insanlığın daha refah içinde yaşamasını sağlayan ve ekonomik değerleri yerinden sarsan buluşlar olmuştur. Ve insanlık ikinci endüstriyel devrime tanıklık etmiştir.

 

Nihayet bilgi çağı olarak adlandırılan üçüncü endüstriyel devrim de imalat sanayinde otomasyon ve makinaların insan kas gücünü yüzlerce kat artırdığı gibi insan beyin gücünü yüzlerce kat artırmıştır. İnsan yaratıcılığı ve verimliliği bilgiye ulaşmada yaşanan değişim ile güç çarpanına maruz kalmıştır. Bilgi çağında atomlar yerine bitler şekillendirilmekte ve kütlesel ağırlığı bile olmayan sanal endüstriler milyar dolarlık ekonomik büyüklüklere ulaşmıştır. Marka değeri bazı ülkelerin servetlerinden fazla olan google, facebook, vb. aslında sanal ortamlarda saklanan verilerden başka bir şey değildir. Ama dünya atomlardan oluşmaktadır. Hayatımızda ve çevremizde sahip olduğumuz her şey atomlardan oluşur. İnsanoğlu doğası gereği bir ekrandan daha fazlası ile etkileşmek ister. Dokunmak ister.

 

İşte bir sonraki endüstriyel devrim, bilgi çağının akıl almaz esnekliği, tasarıma ve üretkenliğe sağladığı katkılarla gerçek ve elle tutulur nesneler oluşturmaya yarayan 3D yazıcıların birleşmesi ile yaşanacak. Bilgisayar ortamında yapılan tasarımlar internet ortamında paylaşılıp istenildiğinde masamızın üzerindeki mini fabrikalarda üretilecek. Ve insan oğlu doğasından getirdiği yaratım, ortaya çıkarma ve kendini anlatma dürtülerini bu yeni çağ makineleri ile tatmin edecek.

Cloud not defteri

Sizde benim gibi kağıt kalem ile çalışmayı sevenlerdenseniz bu yazıyı seveceksiniz. Bir çok digital imkan sayesinde aslında her çalışmamız bilgisayarımızda hatta internette. Ama ben nedense bir fikir üzerinde kafa yorarken mutlaka eski sistem kağıt kalemi önüme alıp yazıp çizip düşünmeyi seviyorum. Ancak böyle konsantre olabiliyorum. Belki eğitim sisteminin getirdiği bir alışkanlık. Her neyse. Tabi hal böyle olunca odam, iş yerim her yer küçük büyük kağıda çizilmiş yazılmış notlarla dolup taşıyor. Birdaha aradığını bulmak ise nerdeyse imkansız.

Bu bir çok insanın sıkıntısı olsa gerek bir çare bulmuşlar. Ve hatta bundan bir milyoncuk kazanmışlar (dolar). Ama helal olsun budenli basit ve faydalı fikirlere bayılıyorum. Tamam uzatmadan alatıyorum.

İndigogo da gördüm bende. Adı Rocketbook.

Siz yazılarınızı çizimlerinizi bir A4 kağıdına yapıyorsunuz bu bilgiler çep telefonunuz yardımı ile cloud da tanımladığınız yerlerde saklanıyor. İster mail ile alabilirsiniz isterseniz dropbox google drive gibi ortamlara kaydedebiliyorsunuz. Engüzel tarafı kağıt üzerine yazdınız clouda gönderdiniz kağıtları çöpe atmıyorsunuz. Mikrodalga fırına koyunca tümyazılar siliniyor ve size yine temiz bir sayfa açılıyor. Çevre kirliliği ve ormanları korumak adınada çok duyarlı.

Böyle anlatınca çok teknolojik bir şey gibi geldi değil mi? Hiç öyle değil. Kağıt bildiğiniz A4 kağıt üzerinde ikonlar vve bir karekod var. Yazdığınız kalem biraz özel ama bu adamların bir buluşu değil zaten piyasada var Pilot üretiyor. Modeli frixion. Bu kalemin mürekkebi belirli bir ısı değerinde görünmez oluyor. Plot bunu silgi ile silinebilen bir kalem yapmak için geliştirmiş. Silginin sürtünmesinden çıkan ısı nedeni ile mürekkep görünmez oluyor. Kağıda hiç zarar vermeden silinsin diye üretilmiş. Harika. Rocketbook daki adamlar da bu mevcut teknolojiyi cloud notebook larında kullanmışlar. Mikrodalga fırına atınca kağıtları ısı yükseliyor ve mürekkep görünmez oluyor. Bilgiler clouda gönderildiği için kaybolmasından rahatsız olmuyorsunuz.

Yazdığınız yazıların clouda gönderilme işini bir cep telefonu uygulaması yapıyor. Yukardan güzelce telefonun kamerası ile sayfanın resmini çekiyorsunuz. Uygulamada alt tarafta işaretlediğiniz ikonlara göre dokumanı gerekli yerlere gönderiyor. Bu ikonlar sayesinde çalışmalarınızı taslaklar, projelerim vs gibi sınıflandırabilirsiniz.

pilot_fixion

Pilotun Frixion kalemi Ülkemizde var 10 tl civarlarında satılıyor. Aldım çok beğendim. Uygulamayı indirdiğinizde de kağıt formatını pdf olarak basabiliyorsunuz. Bu özellik varken yinede insanlar adamların yaptığı notdefterini alımışlar ve adamlara 1 milyon dolar kazandırmışlar. Bunun altında yatan neden yabancılarda yapılmış çalışmaları takdir etmek için para ödemek yatıyor. Açık kaynakda biraz böyle. yıllarca üzerinde çalıştığınız ve ürettiğiniz bilgileri açık kaynak yapıyorsunuz. Yabancılar bu açık kaynak olsa da bundan yararlanıyorlar ise geliştiricisine para ödüyorlar.

 

 

Bu bilgi ve ahlak seviyesine bizlerin de gelmesini temenni ediyorum.