16 AĞUSTOS 2017
SALI
14.52
n-gram Nedir? Neden Kullanılır?

Bir veri üzerinde arama yapmak, karşılaştırma yapmak veya tekrar sayısını saptayabilmek için kullanılan bir yöntemdir. Bu yöntem bir çeşit algoritma olarak da bilinebilir.

 

n-gram ne demektir?

n-gram ifadesinde yer alan n, tekrar derecesini ifade etmektedir. Yani kaçar kaçar böleceğimizi buradaki n ifadesi sağlar. gram ise ağırlığı ifade etmektedir. Yani bir kelimeden ne kadar olduğunu anlamamızı sağlar.

n değerleri temelde 4 başlığa ayrılırlar. Bunlar;

  • 1-Gram : unigram
  • 2-Gram : bigram
  • 3-Gram : trigram
  • N-Gram : n-gram

3'ten sonraki tüm parçalamalarda n-gram ifadesi kullanılmaktadır.

Nerelerde Kullanılır?

n-gram, temelde arama algoritmalarında kullanılmaktadır. Aranan kelime ile eldeki veriyi karşılaştırırken net sonuçlar vermek adına tercih edilebilir. Çünkü n-gram bize tekrar eden kelimeleri göstermektedir. Bu sayede bir oran yakalayabiliriz. Bu orana bağlı olarak aranan kelime ile eldeki veri arasında bir benzerlik sayısı çıkartabilir, bu benzerlik sayısına göre de kullanıcıya veriyi gösterebiliriz.


Harf Bazlı N-Gram

Aşağıdaki örnekleri çözümlerken;

metin adında bir değişkene ve merttopuzcom adında bir değere sahip olduğumuzu varsayalım.

$metin: "merttopuzcom"

Unigram

Unigram aslında bir metni harf harf bölmek demektir.

m
e
r
t
t
o
p
u
z
c
o
m

şeklinde bir çıktıya sahip olabiliriz.

Bigram

Bigram, en çok kullanılan yöntemdir. Bu yöntemde metni ikişer olarak parçalamaya yarar.

me
er
rt
tt
to
op
pu
uz
zc
co
om

Görüldüğü üzere harf atlayarak tek tek alınır.

Trigram

Trigram'da bigram gibi çok tercih edilen bir diğer çeşittir. Aynı şekilkde üçlü olarak parçalar.

mer
ert
rtt
tto
top
opu
puz
uzc
zco
com

Kod

PHP ile aşağıdaki gibi en temel kodu oluşturabiliriz.

$metin = "merttopuzcom";
$ngram = 2;
for ($i=0; $i < strlen($metin); $i++) { 
	$bitis = $i+$ngram-1;
	for ($j=$i; $j <= $bitis; $j++) {
		if (isset($metin[$bitis])) {
			echo $metin[$j];
		}
	}
	echo "<br/>";
}

Yukarıdaki kod parçasında;

  • metin değişkeni kontrol edilecek metni içerir.
  • ngram değişkenine girilen değere göre parçalama yapılmaktadır.

Fonksiyonu geliştirip ekrana yazdırmak yerine bir array yardımı ile farklı bir metin ile karşılaştırabilirsiniz.

Kelime Bazlı N-Gram

Örneklerde parçalama yaparken harf baz alınmaktadır. Aynı işlemi kelimeyi baz alarakta yapabiliriz. Yani;

Elimizde metin adında bir değişken ve değeri aşağıdaki gibi olsun;

$metin = "Bu makale ile ngram kavramini ogrendik"

Unigram

Bu 
makale 
ile 
ngram 
kavramini 
ogrendik 

Bigram

Bu makale 
makale ile 
ile ngram 
ngram kavramini 
kavramini ogrendik 

Trigram

Bu makale ile 
makale ile ngram 
ile ngram kavramini 
ngram kavramini ogrendik 

Kod

Yine PHP ile aynı mantıkta bir parçalama fonksiyonu oluşturabiliriz;

$metin = "Bu makale ile ngram kavramini ogrendik";
$metinBol = explode(" ", $metin);
$ngram = 2;
for ($i=0; $i < count($metinBol); $i++) { 
	$bitis = $i+$ngram-1;
	for ($j=$i; $j <= $bitis; $j++) {
		if (isset($metinBol[$bitis])) {
			echo $metinBol[$j];
		}
		echo " ";
	}
	echo "<br/>";
}

Yukarıdaki kod parçasında;

  • metin değişkeni bize metni verir.
  • metinBol değişkeni boşluklardan ayırmamızı sağlar
  • ngram değişkeni her parçadaki adeti belirler.

Harf Bazlı N-Gram'da olduğu gibi fonksiyonu geliştirerek dizileri ele alıp karşılaştırmalarda kullanabilirsiniz.

İyi çalışmalar.

YORUMLAR 0
Bu konuya henüz kimse yorum yapmadı.
İlk yorumu sen yapmak ister misin?
YORUM BIRAK
Şuanda bu yoruma cevap yazıyorsunuz:
İptal Et