• Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Python ve NGram

 
#1

Bu yazıyı yazmadan önce google’da sayısızca arama yapıyordum. Beni çıldırtan bir olay oldu. Şimdi aradığım şey örneğin ahmet tamam iyi hoş arıyorsun da. Gelip bana neden “Bunu mu denemek istediniz?” şeklinde soru soruyorsun. Neyse önerdiği şeye tıklıyorum. Hobaa. Eski yazdığımı öneriyor bu sefer. Meselenin aslı şu. Ne yazmaya çalıştığımı nasıl olur da bilebilir ki google? Pek de bildiği söylenemez Tongue. Bu yazıda anlatmaya çalışacağım NGram tarzı bir algoritma kullandıkları kesin. Bakarsınız onlar tam da bunu kullanıyorlardır.
Bu işlem temelde “ali yanlış söyler, ahmet düzeltir” mantığına dayalı. Bunu gündelik hayatta yapmak, programlamada yapmaya göre daha basit. O yüzden bizim için bunu basitleştirecek olan ngram kütüphanesini kullanabiliriz.
#NGram Kütüphanesi Kurulumu
Kurulum basit şekilde
Kod:
pip install ngram

komutu ile yapılıyor. İlk basit örneğimize geçelim:
Öncelikle ngram’ı import edelim:
Kod:
from ngram import NGram

Bu işlemi yaptıktan sonra ngram içerisine bir dizi değeri atamamız lazım. Örneğin programlama dillerinin kontrolünün yapılmasını istiyoruz:
Kod:
prog_dilleri = ["php", "python", "csharp", "cpp",
               "ruby", "java", "haskell", "erlang"]

Bu dillerin girili olması lazım. Burada yaptığımız şey harf bigramı oluyor. Pekala öyleyse o zaman bu dilleri NGram ağacına ekleyelim. Yani aslında NGram nesnesine gönderiyoruz:
Kod:
v = NGram(prog_dilleri)

Çok basit şekilde ilerliyoruz. Dizi değerlerimiz artık NGram ağacına takılı durumda. Artık burada kendimize göre işlemler yapabiliriz. Bu işlemlerden birisi ise tahmin ettiğimiz gibi diller arasında arama yapmak ve en yakın olanını bulmak. O zaman bunu yapan bi metod oluşturalım.
Kod:
def arama(ara):
   for i in v.search(ara, threshold=0.1):
       print("Sonuç:", i[0])

Evet burada bakmamız gereken kısım 
Kod:
v.search()

 kısmı. search işlevi ilk argümanda kullanıcının atadığı değeri alır. Bu değer, daha önceden girili olan değerlere benzer mi değil mi kontrolü yapılır. Yani Örneğin prog_dilleri dizisindeki python ile payton ne kadar benzer şeklinde sorar. Gelelim 

Kod:
threshold

 değerine. Bu değer girilen değerin, veritabanında yani NGram ağacındaki benzerine olan yakınlık durumunu sorgular. Bu yakınlık eşiğini kontrol için vardır. Genel itibariyle programımızın kodları şöyle:

Kod:
from ngram import NGram

prog_dilleri = ["php", "python", "csharp", "cpp",
               "ruby", "java", "haskell", "erlang"]

v = NGram(prog_dilleri)

def aramaYap(ara):
   for i in v.search(ara, threshold=0.1):
       print("Önerilen:", i[0], "-- Yakınlık:", i[1], "\n")

aramaYap("payton")

Programımızı çalıştırınca şöyle oluyor:
Kod:
Önerilen: python -- Yakınlık: 0.23076923076923078

Evet bu kadardı arkadaşlar. İsterseniz NGram dokümanlarına buradan ulaşabilirsiniz.



Ara
Cevapla


[-]
Hızlı Cevap

İnsan Doğrulama:
Aşağıda görünen onay kutusunu işaretleyiniz. Bu işlem otomatik spam kayıtları önlemek için kullanılır.

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Python Os Modülü tuğrul 1 1,719 14-06-2019, Saat: 13:32
Son Yorum: Sprinextice
  visual studio, python flask uygulama oluşturma kıllıbacak 0 310 24-03-2019, Saat: 00:03
Son Yorum: kıllıbacak
  visual studio, python - Statik dosyaları işleme, sayfalar eklemek ve şablonu devralma kıllıbacak 0 292 23-03-2019, Saat: 23:57
Son Yorum: kıllıbacak
  visual studio da python Git ile çalışma kıllıbacak 0 289 23-03-2019, Saat: 23:53
Son Yorum: kıllıbacak
  visual studio, Python ortamınızda paketleri yükleme kıllıbacak 0 291 23-03-2019, Saat: 23:51
Son Yorum: kıllıbacak

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Konuyu Okuyanlar:
1 Ziyaretçi

   
Türkçe Çeviri: MCTR, Forum Yazılımı: MyBB, © 2002-2020 MyBB Group.  



Merih Forum® bilgi paylaşım platformu. 2015-2020 Tüm hakları saklıdır.