<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Bilgisayar Kavramları &#187; Doğal Dil İşleme (NLP)</title>
	<atom:link href="http://www.bilgisayarkavramlari.com/category/dogal-dil-isleme-nlp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bilgisayarkavramlari.com</link>
	<description>www.bilgisayarkavramlari.com</description>
	<lastBuildDate>Sun, 29 Jan 2012 21:38:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>SimHash (Benzerlik Özeti)</title>
		<link>http://www.bilgisayarkavramlari.com/2011/11/19/simhash-benzerlik-ozeti/</link>
		<comments>http://www.bilgisayarkavramlari.com/2011/11/19/simhash-benzerlik-ozeti/#comments</comments>
		<pubDate>Sat, 19 Nov 2011 10:35:03 +0000</pubDate>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
				<category><![CDATA[Doğal Dil İşleme (NLP)]]></category>
		<category><![CDATA[Dosya Organizasyonu (File Organisation)]]></category>
		<category><![CDATA[Veri Sıkıştırma (Data Compression)]]></category>
		<category><![CDATA[yapay zeka (artificial intelligence)]]></category>

		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/?p=6062</guid>
		<description><![CDATA[Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde, özellikle metin işlemenin yoğun olduğu, arama motoru gibi uygulamalarda dosyaların veya web sitelerinin birbirine olan benzerliğini bulmak için kullanılan bir algoritmadır. Algoritmaya alternatif olarak klasik hash fonksiyonları kullanılabilir. Yani, örneğin iki sayfasnın ayrı ayrı hash değerleri alınıp bu değerleri karşılaştırmak mümkündür. Ancak simhash algoritması, bu yönteme göre daha [...]]]></description>
			<content:encoded><![CDATA[<p>Yazan : Şadi Evren ŞEKER</p>
<p>Bilgisayar bilimlerinde, özellikle metin işlemenin yoğun olduğu, arama motoru gibi uygulamalarda dosyaların veya web sitelerinin birbirine olan benzerliğini bulmak için kullanılan bir algoritmadır. </p>
<p>Algoritmaya alternatif olarak klasik <a href="http://www.bilgisayarkavramlari.com/2008/05/26/ozetleme-fonksiyonlari-hash-function/">hash fonksiyonları</a> kullanılabilir. Yani, örneğin iki sayfasnın ayrı ayrı hash değerleri alınıp bu değerleri karşılaştırmak mümkündür. Ancak simhash algoritması, bu yönteme göre daha fazla hız ve performans sunar. </p>
<p>Sim hash algoritması, iki dosyayı birer vektör olarak görür ve bu <a href="http://www.bilgisayarkavramlari.com/2008/01/12/mesafe-vektoru-distance-vector/">vektorler (yöney, vector)</a> arasındaki cosinüs (cosine) bağlantısını bulmaya çalışır. </p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/yoneykosinus.png" alt="Yoneykosinus" title="yoneykosinus.png" border="0" width="265" height="141" /></p>
<p>Yukarıdaki şekilde temsil edildiği üzere iki dokümanın ayrı ayrı birere vektör olması durumunda, aralarında cos (x) olarak gösterilen bir açı ile bağlantı bulunması mümkündür.</p>
<p>Algoritma, öncelikle işlediği metindeki kelimelerin ağırlıklarını (weight) çıkarmakta ve buna göre kelimeleri sıralamaktadır. </p>
<p>Sıralanan her kelimeye, b uzunluğunda, yegane (unique) değer döndüren bir fonksiyon kullanılır. Örneğin her kelime için farklı bir hash  sonucu döndüren fonksiyon kullanılır. </p>
<p>b boyutundaki bir vektörün ağırlık değeri hesaplanırken, her kelimedeki 1 değeri için +1 ve 0 değeri için -1 değeri ağırlığa eklenir.</p>
<p>Son olarak üretilen ağırlık vektöründeki + değerler 1, 0 ve &#8211; değerler ise 0 olarak çevirilir.</p>
<p><b>Örnek</b></p>
<p>Yukarıdaki algoritmanın çalışmasını bir örnek üzerinden anlatalım. Algoritmanın üzerinde çalışacağı metin aşağıdaki şekilde verilmiş olsun:</p>
<p>www bilgisayar kavramları com bilgisayar kavramlarının anlatıldığı bir bilgisayar sitesidir ve com uzantılıdır</p>
<p>Yukarıdaki bu metni, algoritmanın anlatılan adımlarına göre işleyelim:</p>
<p>İlk adımımız, algoritmadaki kelimelerini ağırlıklarının çıkarılmasıdır. Bu adımı çeşitli şekillerde yapmak mümkündür ancak biz örneğimizde kolay olması açısından kelime <a href="http://www.bilgisayarkavramlari.com/2008/02/21/veri-guvenliginde-frekans-analizi-cryptoanalysis/">frekanslarını (tekrar sayısı, frequency)</a> kullanacağız. Buna göre metindeki kelimelerin tekrar sayılarına göre sıralanmış hali aşağıda verilmiştir:</p>
<p>bilgisayar 3 com 2 kavramları 1 kavramlarının 1 anlatıldığı 1 bir 1 www 1 sitesidir 1 ve 1 uzantılıdır 1</p>
<p>Yukarıda geçen her kelime için bir parmak izi (fingerprint) değeri üretiyoruz. Bu değerin özelliği, kelimeler arasında yegane (unique) bir değer bulmaktır. Bu değer, herhangi bir hash fonksiyonu üzerinden de üretilebilir. Biz örneğimizde kolalık olması açısından her kelime için rast gele bir değer kendimiz atayacağız. Ancak gerçek bir uygulamada rast gele değerlerin kullanılması mümkün değildir. Bunun sebebi, aynı kelimenin tekrar gelmesi halinde yine aynı değerin üretilmesi zorunluluğudur. Bu yazıdaki amaç algoritmayı anlatmak olduğu için birer hash sonucu olarak rast gele değerler kullanılacaktır. </p>
<p>bilgisayar 10101010  com 11000000 kavramları 01010101 kavramlarının 10100101 anlatıldığı 11101110 bir 01011111 www 11110001 sitesidir 10101110 ve 00001111 uzantılıdır 00100010</p>
<p></p>
<p>3. adımda, yukarıdaki değerleri topluyoruz. Toplama işlemi sırasında 1 değerleri için +1 ve 0 değerleri için -1 alıyoruz.</p>
<p>
10101010<br />
11000000<br />
01010101<br />
10100101<br />
11101110<br />
01011111<br />
11110001<br />
10101110<br />
00001111<br />
00100010<br />
&#8212;&#8212;&#8211;<br />
2 0 2 -4 0 2 2 0
</p>
<p>Son olarak, yukarıdaki değerleri ikilik tabana çeviriyoruz: 10100110 bu değer bizi simhash sonucumuz olarak bulunuyor.</p>
<p>Örneğin yeni bir dosyayı daha işlemek istediğimizde, bu dosyadaki kelime yoğunluğuna göre yukarıda bulduğumuz simhash değerine yakın bir değer çıkmasını bekleriz. </p>
<p>Diyelim ki yeni bir dosyada da sadece &#8220;bilgisayar kavramları com&#8221; yazıyor olsun. Bu yazının sim hash değerini bularak karşılaştırmaya çalışalım:</p>
<p>bilgisayar 10101010  com 11000000 kavramları 01010101</p>
<p>
10101010<br />
11000000<br />
01010101<br />
&#8212;&#8212;&#8212;<br />
1 1 -1 -1 -1 1 1 1
</p>
<p>Değerin ikilik tabana çevrilmiş hali : 11000111</p>
<p>Orjinal dokümandan çıkardığımız simhash değeri ile farklı olan bit sayısı 3&#8242;tür. Bunun anlamı yukarıdaki bilgisayar kavramları com yazısının orjinal yazıya 3 mesafesinde yakın olduğudur. </p>

<p class="sayac_bilgi">136 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bilgisayarkavramlari.com/2011/11/19/simhash-benzerlik-ozeti/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>n-gram</title>
		<link>http://www.bilgisayarkavramlari.com/2011/04/23/n-gram/</link>
		<comments>http://www.bilgisayarkavramlari.com/2011/04/23/n-gram/#comments</comments>
		<pubDate>Sat, 23 Apr 2011 01:28:53 +0000</pubDate>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
				<category><![CDATA[Doğal Dil İşleme (NLP)]]></category>
		<category><![CDATA[JAVA]]></category>

		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/2011/04/23/n-gram/</guid>
		<description><![CDATA[Yazan: Şadi Evren ŞEKER Verilen bir dizilimdeki (sequence) tekrar oranını bulmaya yarayan yöntemdir. İsmi n ve gram kelimelerinin birleşiminden oluşmaktadır. Buradaki n, tekrarın kontrol edildiği değerdir. Gram ise bu tekrarın dizilim içerisindeki ağrılığını ifade etmek için kullanılmıştır. Örneğin bir dizgi (string) içerisindeki n-gram değerini bulmak isteyelim ve buradaki n değeri 2 olsun (n = 2) [...]]]></description>
			<content:encoded><![CDATA[<p>Yazan: Şadi Evren ŞEKER</p>
<p>Verilen bir dizilimdeki (sequence) tekrar oranını bulmaya yarayan yöntemdir. İsmi n ve gram kelimelerinin birleşiminden oluşmaktadır. Buradaki n, tekrarın kontrol edildiği değerdir. Gram ise bu tekrarın dizilim içerisindeki ağrılığını ifade etmek için kullanılmıştır.</p>
<p>Örneğin bir <a href="http://www.bilgisayarkavramlari.com/2008/08/02/dizgi-string/">dizgi (string)</a> içerisindeki n-gram değerini bulmak isteyelim ve buradaki n değeri 2 olsun (n = 2)</p>
<p>&#8220;wwwbilgisayarkavramlaricomsadievrenseker&#8221;</p>
<p>Yukarıdaki yazının 2-gram değerleri aşağıda verilmiştir:</p>
<div>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 64px;"></col>
<col style="width: 64px;"></col>
<col style="width: 64px;"></col>
<col style="width: 64px;"></col>
<col style="width: 64px;"></col>
<col style="width: 64px;"></col>
</colgroup>
<tbody>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border: solid 0.5pt;" valign="bottom"><span style="color: black;">ww</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">2</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ka</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ad</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">wb</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">av</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">di</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">bi</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">vr</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">2</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ie</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">il</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ra</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ev</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">lg</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">am</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">re</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">gi</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ml</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">en</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">is</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">la</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ns</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">sa</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">2</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ri</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">se</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ay</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ic</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ek</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ya</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">co</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ke</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ar</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">2</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">om</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">er</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">rk</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ms</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"></td>
</tr>
</tbody>
</table>
</div>
<p>&nbsp;</p>
<p>Yukarıdaki değerler üzerinde çalıştığımız <a href="http://www.bilgisayarkavramlari.com/2008/08/02/dizgi-string/">dizginin (string)</a> 2şer komşuluktaki alt kümesidir.</p>
<p>Benzer şekilde aynı dizginin 3-gram değerleri aşağıda verilmiştir:</p>
<div>
<table style="border-collapse: collapse;" border="0">
<colgroup>
<col style="width: 64px;"></col>
<col style="width: 64px;"></col>
<col style="width: 64px;"></col>
<col style="width: 64px;"></col>
<col style="width: 64px;"></col>
<col style="width: 64px;"></col>
</colgroup>
<tbody>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border: solid 0.5pt;" valign="bottom"><span style="color: black;">www</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">kav</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">sad</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: solid 0.5pt; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">wwb</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">avr</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">adi</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">wbi</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">vra</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">die</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">bil</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ram</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">iev</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ilg</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">aml</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">evr</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">lgi</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">mla</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">vre</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">gis</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">lar</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ren</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">isa</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ari</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ens</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">say</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ric</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">nse</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">aya</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ico</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">sek</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">yar</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">com</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">eke</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ark</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">oms</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">ker</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
</tr>
<tr style="height: 20px;">
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: solid 0.5pt; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">rka</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">msa</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"><span style="color: black;">1</span></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"></td>
<td style="padding-left: 5px; padding-right: 5px; border-top: none; border-left: none; border-bottom: solid 0.5pt; border-right: solid 0.5pt;" valign="bottom"></td>
</tr>
</tbody>
</table>
</div>
<p>&nbsp;</p>
<p>Benzer şekillerde sayı arttırılarak istenilen bir n-gram değeri listelenebilir. Bu değerlerin bazıları literatürde özel olarak isimlendirilmektedir.</p>
<p>Örneğin bu isimlendirme listesi aşağıda verilmiştir:</p>
<ul>
<li>1-gram &gt; unigram</li>
<li>2-gram &gt; bigram</li>
<li>3-gram &gt; trigram</li>
</ul>
<p>3&#8242;ten büyük değerler için sadece n-gram terimi kullanılır.</p>
<p>n değerine bağlı olarak dizilimin alacağı ihtimal uzayı artmaktadır. Örneğin 29 harfli Türkçe için unigram bir işleme sonucunda 29 farklı alternatife göre dizilinim dağılımı ortaya çıkar. Yani listemizin sonucunda 29 farklı ihtimal ve bu ihtimallerin her birisinin kaçar kere tekrarlandığı bulunur.</p>
<p>n değerini arttırdıkça bu ihtimal uzayı büyür ve yine 29 harfli Türkçe için (Sadece alfabedeki harflerin olduğunu kabul ediyoruz) 29<sup>n</sup> olarak bulunabilir.</p>
<p>Yukarıda anlatıldığı üzere bir <a href="http://www.bilgisayarkavramlari.com/2008/08/02/dizgi-string/">dizginin (String)</a> üzerinde n-gram işlemesi yapan kod aşağıda verilmiştir:</p>
<p><img src="http://www.bilgisayarkavramlari.com/wp-content/uploads/042311_0128_ngram1.png" alt="" /></p>
<p>Yukarıdaki kodda, iki adet sınıf kullanılmıştır. sayac isimli sınıf, bulunan n-gramları tutmak için kullanılan bir veri ünitesidir. Bu veri ünitesi, test sınıfında kullanılan <a href="http://www.bilgisayarkavramlari.com/2011/03/31/java-dilinde-vektorler/">vektör (vector)</a> içerisinde tutulmakta ve bulunan her n-gram&#8217;ın kaç tane olduğunu saymaktadır.</p>
<p>Kodun 17 ile 34. satırları arasında verilen <a href="http://www.bilgisayarkavramlari.com/2008/08/02/dizgi-string/">dizgi (String)</a> önce verilen n boyutunda parçalara ayrılmakta (kodun 18. satırındaki String kütüphanesinden substring fonksiyonu marifeti ile) ardından bu n boyutundaki parça veri yapımız olan Vektör içerisinde var mı diye bakılmaktadır (kodun 20 ile 26. satırları arasında). Şayet yoksa vektör eklenmekte (kodun 27,28. satırları) varsa da kaç tane olduğu değeri arttırılmaktadır (kodun 24. satırı).</p>

<p class="sayac_bilgi">200 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bilgisayarkavramlari.com/2011/04/23/n-gram/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Evrimsel Diller (Evolutionary Languages)</title>
		<link>http://www.bilgisayarkavramlari.com/2009/10/29/evrimsel-diller-evolutionary-languages/</link>
		<comments>http://www.bilgisayarkavramlari.com/2009/10/29/evrimsel-diller-evolutionary-languages/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 19:04:31 +0000</pubDate>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
				<category><![CDATA[Doğal Dil İşleme (NLP)]]></category>
		<category><![CDATA[yapay zeka (artificial intelligence)]]></category>

		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/2009/10/29/evrimsel-diller-evolutionary-languages/</guid>
		<description><![CDATA[Yazan : Şadi Evren ŞEKER Evrimsel diller temel olarak bir doğal dilin (natural language) geçirmiş olduğu evrimi ve bu evrimin dilde yaptığı değişiklikleri inceler. Evrimsel dil çalışmalarının bilgisayar bilimlerindeki yeri, dilbilim ve doğal dil işleme ile ilgilenen insanların dillerdeki bu değişimleri bilgisayar dünyasına uygulama merakıyla başlamıştır. Bu anlamda bilgisayar bilimleri için evrimsel diller literatürde, yapay [...]]]></description>
			<content:encoded><![CDATA[<p>Yazan : Şadi Evren ŞEKER</p>
<p>Evrimsel diller temel olarak bir doğal dilin (natural language) geçirmiş olduğu evrimi ve bu evrimin dilde yaptığı değişiklikleri inceler. Evrimsel dil çalışmalarının bilgisayar bilimlerindeki yeri, dilbilim ve doğal dil işleme ile ilgilenen insanların dillerdeki bu değişimleri bilgisayar dünyasına uygulama merakıyla başlamıştır. Bu anlamda bilgisayar bilimleri için evrimsel diller literatürde, yapay zeka (artificial intelligence), insan makine ilişkisi (man machine interaction) veya makine öğrenmesi (machine learning) konuları altında incelenebilir.</p>
<p>Evrimsel dil çalışmalarında karşılaşılan en büyük zorluk dillerin geçirdiği değişimler ile ilgili kaynaklara erişimdedir. Örneğin konuşulan bir dilin geçirdiği değişimler ile ilgili bir belge ya da bir kanıt bulmak imkansızdır. Ayrıca bu alanda ampirik (deneysel, emprical, tecrübi) çalışmalar yapmak da ne yazık ki mümkün değildir (tabi bir grup insanın dilini manipüle edip dilde kalıcı değişiklikler yapmak gibi şeyleri saymazsak )</p>
<p>Evrimsel dillerle bilgisayar bilimleri ilgilenmeden çok önce dilbilim konusunda çalışan ve psikoloji ve sosyolojinin bu alana bakan disiplinler arası alanları ilgilenmiştir. Günümüzde bu konuda bilişsel bilim (cognitive science), psiko-dilbilim (psycholinguistic) veya nöro-dilbilim (neurolinguistic) alanlarında çalışılmakta ayrıca sosyal olguların incelendiği ve toplumsal dönüşümleri çalışan evrimsel antropoloji (evolutionary antropology) alanında da çeşitli çalışmalar yapılmaktadır.</p>
<p>Günümüzde evrimsel diller üzerinde yapılan çalışmaların dayandığı basit ama temel ilke, insanların iletişim ihtiyaçları doğrultusunda yapmış oldukları icatlar olarak özetlenebilir. Kısaca dil insanların iletişimi için vardır ve dilde bu iletişim ihtiyacı bir şekilde karşılanamazsa, dili kullanan insanlar, dile yeni eklentiler yaparak (veya mevcut kelime ve kavramların anlamlarını değiştirerek) bu ihtiyaçlarını çözerler.</p>
<p>Bilgisayar bilimlerinin de dahil olduğu evrimsel dilbilim çalışmalarında amaç daha çok dillerdeki evrimin bilgisayarlar tarafından algılanmasını sağlayacak bir model geliştirilmesidir. Yani insanlar dil üzerinde gerek kendi ihtiyaçlarını karşılayacak üretimler yaparken ve gerek de başka kişiler tarafından yapılmış üretimlere uyum gösterirken belirli bir zeka örneği gösterirler. İşte bilgisayar bilimleri de bu zeka örneğinin bilgisayarlar tarafından modellenip modellenemeyeceğini veya nasıl modelleneceğini bulmaya çalışır.</p>
<p>Bu anlamda yapılan çalışmalar uyumlu sistemler (adaptive systems, adaptif sistemler, tetabık tertipler) olarak nitelendirilebilir. Tam bu noktada akıcı inşa dilbiliminden (fluid construction grammer kısaca FCG olarak literatürde geçmektedir) bahsetmekte yarar vardır.  Luc Steels tarafından geliştirilen bu dilbilgisinde, bir dili her konuşanın (her ajanın (agent)) aslında farklı bir şey konuştuğunu kabul ile işe başlanır. İsmindeki akıcı (fluid) kelimesi de buradan gelmektedir. Yani dil sürekli bir akış halinde (sürekli bir evrim halinde) düşünülebilir. Bu anlamda kullanılan en geniş modelleme yöntemlerinden birisi olan FCG, bilgisayarlar tarafından işlenebilen (üretilebilen ve anlaşılabilen) bir yapıya sahiptir.</p>

<p class="sayac_bilgi">86 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bilgisayarkavramlari.com/2009/10/29/evrimsel-diller-evolutionary-languages/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dilin Derecesi (Rate of Language)</title>
		<link>http://www.bilgisayarkavramlari.com/2009/10/04/dilin-derecesi-rate-of-language/</link>
		<comments>http://www.bilgisayarkavramlari.com/2009/10/04/dilin-derecesi-rate-of-language/#comments</comments>
		<pubDate>Sun, 04 Oct 2009 18:44:37 +0000</pubDate>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
				<category><![CDATA[Doğal Dil İşleme (NLP)]]></category>
		<category><![CDATA[Programlama Dilleri]]></category>

		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/?p=3521</guid>
		<description><![CDATA[Yazan  : Şadi Evren ŞEKER Veri işilemede (veri güvenliği veya veri tabanı gibi teorilerde) bir verinin içinde bulunduğu dilin (language) derecesinden bahsedilebilir. Burada derece (rate) ile kastedilen verinin değişim oranınını bulmaktır. Basitçe verinin entropisinin (dağınımının, entropy) verinin uzunluğuna bölümü ile elde edilir r = H(M) / N Yukarıdaki formülde r, dilin derecesini, H(M) derecesini sorguladığımız [...]]]></description>
			<content:encoded><![CDATA[<p>Yazan  : Şadi Evren ŞEKER</p>
<p>Veri işilemede (veri güvenliği veya veri tabanı gibi teorilerde) bir verinin içinde bulunduğu dilin (language) derecesinden bahsedilebilir. Burada derece (rate) ile kastedilen verinin değişim oranınını bulmaktır. Basitçe v<a href="http://www.bilgisayarkavramlari.com/2008/12/17/entropi-entropy/">erinin entropisinin (dağınımının, entropy) </a> verinin uzunluğuna bölümü ile elde edilir</p>
<p>r = H(M) / N</p>
<p>Yukarıdaki formülde r, dilin derecesini, H(M) derecesini sorguladığımız dili oluşturan verinin entropisini (burada M veriyi veya mesajı temsil etmekte) ve N ise verinin uzunluğunu göstermektedir.</p>
<p>Bu yazı şadi evren şeker tarafından yazılmış ve bilgisayarkavramlari.com sitesinde yayınlanmıştır. Bu içeriğin kopyalanması veya farklı bir sitede yayınlanması hırsızlıktır ve telif hakları yasası gereği suçtur.</p>
<p>Örneğin dilimizde sadece cinsiyet bilgilerini tutmak için bir dil inşa edersek. Dilimizde sadece &#8220;kadın&#8221; ve &#8220;erkek&#8221; kelimeleri olacaktır. Buradaki kelimelerin boyu 5&#8242;tir ( yani formüldeki N).</p>
<p>Entropi yazısından hatırlanacağı üzere verimizin entropisi ise 1&#8242;dir. Bu değer log<sub>2</sub> 2 = 1 olarak hesaplanabilir. Diğer bir deyişle 2 farklı bilgiyi tek bir bit ile tutabilriz. 2<sup>1</sup> = 2 farklı bilgi tutar.</p>
<p>Dolayısıyla bu hayali dilin derecesi :</p>
<p>r = 1 / 5 = 0.20</p>
<p>olarak bulunacaktır.</p>

<p class="sayac_bilgi">64 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bilgisayarkavramlari.com/2009/10/04/dilin-derecesi-rate-of-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Özyineli Diller (Recursive Languages)</title>
		<link>http://www.bilgisayarkavramlari.com/2009/07/01/ozyineli-diller-recursive-languages/</link>
		<comments>http://www.bilgisayarkavramlari.com/2009/07/01/ozyineli-diller-recursive-languages/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 14:17:23 +0000</pubDate>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
				<category><![CDATA[algoritma analizi (teory of algorithms)]]></category>
		<category><![CDATA[Doğal Dil İşleme (NLP)]]></category>
		<category><![CDATA[Programlama Dilleri]]></category>

		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/?p=2743</guid>
		<description><![CDATA[Yazan : Şadi Evren ŞEKER Özyineli diller matematik, mantık veya bilgisayar bilimlerinde geçen muntazam dillerden (formal language) birisidir. Genellikle kararverilebilir yani Turing makinesi (Turing machine) tarafından işlenebilir diller olarak kabul edilirler. Özyineli diller Chomsky hiyerarşisinde yer almamaktadır. Bir özyineli dili tanımlamak için iki önemli tanım yapılır. Birincisi dilin içerdiği alfabeden üretilebilen güç kümesinin (power set) [...]]]></description>
			<content:encoded><![CDATA[<p>Yazan : Şadi Evren ŞEKER</p>
<p>Özyineli diller matematik, mantık veya bilgisayar bilimlerinde geçen <a href="http://www.bilgisayarkavramlari.com/2009/06/25/muntazam-diller-formal-languages/">muntazam dillerden (formal language)</a> birisidir. Genellikle kararverilebilir yani <a href="http://www.bilgisayarkavramlari.com/2009/06/27/turing-makinesi-turing-machine/">Turing makinesi (Turing machine)</a> tarafından işlenebilir diller olarak kabul edilirler.</p>
<p>Özyineli diller <a href="http://www.bilgisayarkavramlari.com/2009/06/27/chomsky-hiyerarsisi-chomsky-hierarchy/">Chomsky hiyerarşisinde </a>yer almamaktadır.</p>
<p>Bir özyineli dili tanımlamak için iki önemli tanım yapılır. Birincisi dilin içerdiği alfabeden üretilebilen <a href="http://www.bilgisayarkavramlari.com/2009/06/24/guc-kumesi-kuvvet-kumesi-power-set/">güç kümesinin (power set)</a> <a href="http://www.bilgisayarkavramlari.com/2009/06/25/ozyineli-kume-recursive-set/">özyineli alt kümesi (recursive subset)</a> olmasıdır.</p>
<p>İkincisi ise <a href="http://www.bilgisayarkavramlari.com/2009/06/27/turing-makinesi-turing-machine/">Turing makinesi</a> tarafından kabul edilebilir bir <a href="http://www.bilgisayarkavramlari.com/2009/06/25/muntazam-diller-formal-languages/">muntazam dil (formal language)</a> olmasıdır. Yani Turing makinesi bu dili kabul edecek ve bu dil dışındaki durumlarda<a href="http://www.bilgisayarkavramlari.com/2008/11/12/durma-problemi-halting-problem/"> duracaktır (halting)</a>.</p>
<p>Bütün özyineli diller aynı zamanda <a href="http://www.bilgisayarkavramlari.com/2009/06/27/ozyineli-sayilabilir-diller-recursively-enumerable-languages/">özyineli sayılabilirdirler</a>. Bütün CFG veya düzenli ifadeler özyineli dil olarak kabul edilebilir.</p>

<p class="sayac_bilgi">115 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bilgisayarkavramlari.com/2009/07/01/ozyineli-diller-recursive-languages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Özyineli Geçiş Ağları (Reursive Transition Networks)</title>
		<link>http://www.bilgisayarkavramlari.com/2009/06/29/ozyineli-gecis-aglari-reursive-transition-networks/</link>
		<comments>http://www.bilgisayarkavramlari.com/2009/06/29/ozyineli-gecis-aglari-reursive-transition-networks/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 18:36:30 +0000</pubDate>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
				<category><![CDATA[Automata (otomatlar, özdevinirler)]]></category>
		<category><![CDATA[Derleyiciler]]></category>
		<category><![CDATA[Doğal Dil İşleme (NLP)]]></category>
		<category><![CDATA[Programlama Dilleri]]></category>

		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/?p=2724</guid>
		<description><![CDATA[Yazan : Şadi Evren ŞEKER Veri modellemede kullanılan bir ağ şeklidir. Esas itibariyle içerikten bağımsız dillerin (context free grammers) görsel gösterimi için kullanılabilirler. Ağların yapısı uzatılmış geçiş ağlarına (augmented transition network) benzemekle birlikte en büyük farkı ve isminin özyineli olmasının da sebebi ağın kendini tekrarlama özelliğidir. Daha basitçe bir içerikten bağımsız dil (CFG) S devamlısı [...]]]></description>
			<content:encoded><![CDATA[<p>Yazan : Şadi Evren ŞEKER</p>
<p>Veri modellemede kullanılan bir ağ şeklidir. Esas itibariyle <a href="http://www.bilgisayarkavramlari.com/2009/03/20/icerikten-bagimsiz-gramer-context-free-grammer-cfg/">içerikten bağımsız dillerin (context free grammers)</a> görsel gösterimi için kullanılabilirler. Ağların yapısı <a href="http://www.bilgisayarkavramlari.com/2009/06/15/augmented-transition-network-atn-uzatilmis-gecis-agi/">uzatılmış geçiş ağlarına (augmented transition network)</a> benzemekle birlikte en büyük farkı ve isminin özyineli olmasının da sebebi ağın kendini tekrarlama özelliğidir.</p>
<p>Daha basitçe bir <a href="http://www.bilgisayarkavramlari.com/2009/03/20/icerikten-bagimsiz-gramer-context-free-grammer-cfg/">içerikten bağımsız dil (CFG)</a> S devamlısı (nonterminal) ile başlayan bir kurallar listesidir. Bu listedeki her kural bir devamlıdan (nonterminal) bir sonluya (terminal) doğru yapılan bir açıklamadır. Özyineli geçiş ağlarında bu açıklamada (yani <a href="http://www.bilgisayarkavramlari.com/2009/03/20/icerikten-bagimsiz-gramer-context-free-grammer-cfg/">CFG</a> kurallarının sağ tarafında) da S devamlısı (nonterminal) bulunabilmektedir.</p>
<p>Örneğin aşağıdaki kuralları ele alalım:</p>
<p>S → A B</p>
<p>A → a</p>
<p>B → b | S</p>
<p>Yukarıdaki son kuralda S bağlangıç devamlısına bir bağlantı kurulmuştur ve aşağıdaki şekilde görselleştirilebilir:</p>
<p><img class="alignnone size-full wp-image-2725" title="ozyineliaglar" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/ozyineliaglar.jpg" alt="ozyineliaglar" width="365" height="350" /></p>
<p>Yukarıdaki ağ yapısı verilen CFG örneğinin çizilmiş halidir. Buradaki çizimden de görüleceği üzere ağ yeniden başa döneme özelliğine sahiptir.</p>
<p>Doğal dil olarak yorumlanacak olursa bir cümlenin içinde alt cümlelerin bulunması bu ağ ile gösterilebilir. Örneğin aşağıdaki örnek cümleyi ele alalım:</p>
<p>Ali geldiğini söylemeyi unuttu.</p>
<p>Yukarıdaki örnekte 3 cümle iç içedir.</p>
<p>Ali gelmek</p>
<p>Ali söylemek</p>
<p>Ali unutmak</p>
<p>Basit bir yaklaşımla bir cümleyi özne &#8211; yüklem olarak tanımlayacak olursak yukarıdaki örnek cümlenin uyduğu yapı aşağıdaki şekilde olabilir:</p>
<p>C: Ö Y</p>
<p>Ö : &#8220;Ali&#8221;</p>
<p>Y: gelmek | söylemek | unutmak</p>
<p>Yukarıdaki CFG yapısını şayet özyineli geçiş ağımız (recursive transition network) ile gösterecek olursak:</p>
<p><img class="alignnone size-full wp-image-2726" title="ozyinesablon" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/ozyinesablon.jpg" alt="ozyinesablon" width="233" height="112" /></p>
<p>Örneğin basit bir Özne-Yüklem ilişkisini yukarıdaki şekilde gösterelim. Yani özneleri dikdörtgen ve yüklemleri yuvarlak ile gösterelim. Bu durumda örneğimiz:</p>
<p><img class="alignnone size-full wp-image-2727" title="ozyineornek" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/ozyineornek.jpg" alt="ozyineornek" width="548" height="196" /></p>
<p>Görüldüğü üzere özyineli ağımızla gösterilen örnekte unutmak fiilinin başındaki isim kelime grubu &#8220;ali geldiğini söylemeyi&#8221; yine bir cümledir ve yapısı itibariyle bir önceki şekilde gösterilen şablonu içermektedir. Benzer şekilde söylemek fiilinin başındaki isim grubu da bir geçiş ağı (transition network) özelliği taşımaktadır</p>

<p class="sayac_bilgi">113 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bilgisayarkavramlari.com/2009/06/29/ozyineli-gecis-aglari-reursive-transition-networks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gellish (Kontrollü Doğal Dil)</title>
		<link>http://www.bilgisayarkavramlari.com/2009/06/29/gellish-kontrollu-dogal-dil/</link>
		<comments>http://www.bilgisayarkavramlari.com/2009/06/29/gellish-kontrollu-dogal-dil/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 10:23:09 +0000</pubDate>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
				<category><![CDATA[bilgisayar felsefesi]]></category>
		<category><![CDATA[Doğal Dil İşleme (NLP)]]></category>

		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/?p=2715</guid>
		<description><![CDATA[Yazan : Şadi Evren ŞEKER Gellish dileri sınırları ve kuralları insanlar tarafından belirlenen ve istisanası bulunmayan dillerdir. Bu anlamda programlama dilleri de dahil olmak üzere çeşitli kullanım alanları vardır. Etimolojik olarak Genel Mühendislik Dili (Generic Engineering Language) kelimelerinin baş harflerinden oluşan kelime günümüzde mühendislik uygulamalarından farklı alanlarda da kullanılmaktadır. Genellikle karmaşaya yer verilmek istenmeyen açık [...]]]></description>
			<content:encoded><![CDATA[<p>Yazan : Şadi Evren ŞEKER</p>
<p>Gellish dileri sınırları ve kuralları insanlar tarafından belirlenen ve istisanası bulunmayan dillerdir. Bu anlamda programlama dilleri de dahil olmak üzere çeşitli kullanım alanları vardır. Etimolojik olarak Genel Mühendislik Dili (Generic Engineering Language) kelimelerinin baş harflerinden oluşan kelime günümüzde mühendislik uygulamalarından farklı alanlarda da kullanılmaktadır.</p>
<p>Genellikle karmaşaya yer verilmek istenmeyen açık ve net olunması gereken yerlerde kullanılan gellish dilini örneğin sağlık, acil durumlar, afet yönetimi gibi direktif belirtici yazılarda veya makine ve yazılımların dökümantasyonlarında görebiliriz. Buradaki amaç dil bilgisi düşük olabilecek daha az eğitimli kişilerin kolayca anlamasını sağlamak veya acil durumlarda panik halinde olabilecek kişilerin anlama güçlüklerinin ve hatalarının en aza indirgenmesidir.</p>
<p>Gellish dillerini oluşturan iki grup vardır:</p>
<ul>
<li>Kelimeler</li>
<li>Kelimeler arası ilişkiler</li>
</ul>
<p>Öncelikle kesin ve net kelimelerin, belirsizliğe yer bırakmadan anlamlarının çıkarılması gerekir. Doğal dillerde bir kelime birden fazla anlama gelebilmekte hatta bazı durumlarda mecaz veya ima ile sözlükte bile hiç yeri olmayan anlamlarda kullanılabilmektedir. Gellish dilinin birinci adımı bu belirsilikleri ortadan kaldırmak ve her kelimeye tek bir anlam ve her anlama tek bir kelime bulmaktır.</p>
<p>Bu kelimeleri içeren sözlüğe akıllı sözlük (Smart dictionary) ismi verilmektedir. Buradaki kelimeler anlamsal olarak ilişkilendirilmiştir. Hatta kelimelerin anlam ilişkileri sonucunda bir <a href="http://www.bilgisayarkavramlari.com/2007/11/30/varlik-bilim-ontoloji-ontology/">ontoloji (ontology)</a> çıkmaktadır.</p>
<p>Gellish dilleri doğal dillerin bir alt kümesi olarak düşünülebilir. Örneğin Gellish Türkçe (Gellish Turkish) denilince Türkçede bulunan kelimeler ve dilbilgisi kuralları kapsamında kavramları ve bu kavramlar arası ilişkileri belirleyen bir dil kast edilmektedir. Bu dil zaten Türkçe için olan şeylerden oluşacaktır. Bu anlamda Esperanto gibi yeniden türetilmiş diller ile karıştırılmamalıdır. Ancak <a href="http://www.bilgisayarkavramlari.com/2007/12/04/owl-web-ontology-language-web-ontoloji-dili/">owl (web ontology language)</a> gibi <a href="http://www.bilgisayarkavramlari.com/2009/06/26/anlamsal-aglar-semantic-network/">anlamsal ağ (Semantic web)</a> gösterim dilleri ile karşılaştırılabilir.</p>

<p class="sayac_bilgi">45 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bilgisayarkavramlari.com/2009/06/29/gellish-kontrollu-dogal-dil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Turing Makinesi (Turing Machine)</title>
		<link>http://www.bilgisayarkavramlari.com/2009/06/27/turing-makinesi-turing-machine/</link>
		<comments>http://www.bilgisayarkavramlari.com/2009/06/27/turing-makinesi-turing-machine/#comments</comments>
		<pubDate>Sat, 27 Jun 2009 13:55:12 +0000</pubDate>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
				<category><![CDATA[algoritma analizi (teory of algorithms)]]></category>
		<category><![CDATA[Automata (otomatlar, özdevinirler)]]></category>
		<category><![CDATA[Bilgisayar Kavramları]]></category>
		<category><![CDATA[Bilgisayar Standartları]]></category>
		<category><![CDATA[Derleyiciler]]></category>
		<category><![CDATA[Doğal Dil İşleme (NLP)]]></category>
		<category><![CDATA[Donanım ( Hardware )]]></category>
		<category><![CDATA[Dosya Organizasyonu (File Organisation)]]></category>
		<category><![CDATA[işletim sistemleri]]></category>
		<category><![CDATA[Mantık Devreleri (Logic Circuits)]]></category>
		<category><![CDATA[Programlama Dilleri]]></category>
		<category><![CDATA[Sistem Programlama (System Programming)]]></category>
		<category><![CDATA[veri yapıları]]></category>
		<category><![CDATA[Turing]]></category>

		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/?p=2681</guid>
		<description><![CDATA[Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinin önemli bir kısmını oluşturan otomatlar (Automata) ve Algoritma Analizi (Algorithm analysis) çalıştırmalarının altındaki dil bilimin en temel taşlarından birisidir.1936 yılında Alan Turing tarafından ortaya atılan makine tasarımı günümüzde pekçok teori ve standardın belirlenmesinde önemli rol oynar. Turing Makinesinin Tanımı Basitçe bir kafadan (head) ve bir de teyp bandından [...]]]></description>
			<content:encoded><![CDATA[<p>Yazan : Şadi Evren ŞEKER</p>
<p>Bilgisayar bilimlerinin önemli bir kısmını oluşturan <a href="http://www.bilgisayarkavramlari.com/category/automata-otomatlar/">otomatlar (Automata) </a>ve <a href="http://www.bilgisayarkavramlari.com/category/algoritma-analizi-teory-of-algorithms/">Algoritma Analizi (Algorithm analysis) </a>çalıştırmalarının altındaki dil bilimin en temel taşlarından birisidir.1936 yılında Alan Turing tarafından ortaya atılan makine tasarımı günümüzde pekçok teori ve standardın belirlenmesinde önemli rol oynar.</p>
<p><strong>Turing Makinesinin Tanımı</strong></p>
<p>Basitçe bir kafadan (head) ve bir de teyp bandından (tape) oluşan bir makinedir.</p>
<p><img class="alignnone size-full wp-image-2683" title="turingtape" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/turingtape.jpg" alt="turingtape" width="425" height="148" /></p>
<p>Makinede yapılabilecek işlemler</p>
<ul>
<li>Yazmak</li>
<li>Okumak</li>
<li>Bandı ileri sarmak</li>
<li>Bandı geri sarmak</li>
</ul>
<p>şeklinde sıralanabilir.</p>
<p><strong>Chomsky hiyerarşisi ve Turing Makinesi</strong></p>
<p>Bütün teori bu basit dört işlem üzerine kurulmuştur ve sadece yukarıdaki bu işlemleri kullanarak bir işin yapılıp yapılamayacağı veya bir dilin bu basit 4 işleme indirgenip indirgenemeyeceğine göre diller ve işlemler tasnif edilmiştir.</p>
<p><img class="alignnone size-full wp-image-2682" title="turingkumesi" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/turingkumesi.jpg" alt="turingkumesi" width="496" height="359" /></p>
<p>Bu sınıflandırma yukarıdaki venn şeması ile gösterilmiştir. Aynı zamanda <a href="http://www.bilgisayarkavramlari.com/2009/06/27/chomsky-hiyerarsisi-chomsky-hierarchy/">chomsky hiyerarşisi (chomsky hierarchy)</a> için 1. seviye (type-1) olan ve Turing makinesi ile kabul edilebilen diller bütün tip-2 ve tip-3 dilleri yani içerk bağımsız dilleri ve düzenli dilleri kapsamaktadır. Ayrıca ilave olarak içerik bağımsız dillerin işleyemediği (üretemediği veya parçalayamadığı (parse) ) a<sup>n</sup>b<sup>n</sup>c<sup>n</sup> şeklindeki kelimeleri de işleyebilmektedir.  Düzenli ifadelerin işleyememesi konusunda bilgi için <a href="http://www.bilgisayarkavramlari.com/2009/03/22/duzenli-ifadelerde-pompalama-onsavi-pumping-lemma-for-regular-expressions/">düzenli ifadelerde pompalama savı (pumping lemma in regular expressions)</a> ve <a href="http://www.bilgisayarkavramlari.com/2009/03/22/icerik-bagimsiz-gramerler-icin-pompalama-onsavi-pumping-lemma-for-context-free-grammers/">içerik bağımsız dillerin işlemeyemesi için de içerik bağımsız dillerde pompalama savı (pumping lemma for CFG)</a> başlıklı yazıları okuyabilirsiniz.</p>
<p><strong>Turing Makinesinin Akademik Tanımı</strong></p>
<p>Turing makineleri literatürde akademik olarak aşağıdaki şekilde tanımlanır:</p>
<p><img class="alignnone size-full wp-image-2685" title="turing_akademik" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/turing_akademik.jpg" alt="turing_akademik" width="167" height="24" /></p>
<p>Burada M ile gösterilen makinenin parçaları aşağıda listelenmiştir:</p>
<p>Q sembolü sonlu sayıdaki durumların <a href="http://www.bilgisayarkavramlari.com/2009/06/24/kume-teorisi-set-theory/">kümesidir</a>. Yani makinenin işleme sırasında aldığı durumardır.</p>
<p>Γ sembolü dilde bulunan bütün harfleri içeren alfabeyi gösterir. Örneğin ikilik tabandaki sayılar ile işlem yapılıyorsa {0,1} şeklinde kabul edilir.</p>
<p>Σ sembolü ile makineye verilecek girdiler (input)<a href="http://www.bilgisayarkavramlari.com/2009/06/24/kume-teorisi-set-theory/"> kümesi</a> gösterilir. Girdi <a href="http://www.bilgisayarkavramlari.com/2009/06/24/kume-teorisi-set-theory/">kümesi</a> dildeki harfler dışında bir sembol taşıyamayacağı için Σ <span class="b">⊆ </span>Γ demek doğru olur.</p>
<p>δ sembolü dilde bulunan ve makinenin çalışması sırasında kullanacağı geçişleri (transitions) tutmaktadır.</p>
<p><span class="b">◊ sembolü teyp bandı üzerindeki boşlukları ifade etmektedir. Yani teyp üzerinde hiçbir bilgi yokken bu sembol okunur.<br />
</span></p>
<p>q<sub>0</sub> sembolü makinenin başlangıç durumunu (state) tutmaktadır ve dolayısıyla q<sub>0</sub> <span class="b">⊆</span> Q olmak zorundadır.</p>
<p>F sembolü makinenin bitiş durumunu (state) tutmaktadır ve yine F <span class="b">⊆ Q olmak zorundadır. </span></p>
<p><strong><span class="b">Örnek Turing Makinesi</span></strong></p>
<p><span class="b">Yukarıdaki sembolleri kullanarak örnek bir Turing makinesini aşağıdaki şekilde inşa edebiliriz. </span></p>
<p><span class="b">Örneğin basit bir kelime olan a* <a href="http://www.bilgisayarkavramlari.com/2007/04/14/regular-expression-regexp-duzenli-deyimler-ifadeler/">düzenli ifadesini (regular expression)</a> Turing makinesi ile gösterelim ve bize verilen aaa şeklindeki 3 a yı makinemizin kabul edip etmediğine bakalım. </span></p>
<p><span class="b">Tanım itibariyle makinemizi aşağıdaki şekilde tanımlayalım:</span></p>
<p>M = { {q<sub>0</sub>,q<sub>1</sub>} , { a } , { a,x } , { q<sub>0</sub> a→a R q<sub>0</sub> , q<sub>0</sub> x→x L q<sub>1</sub>} , q<sub>0</sub> , x , q<sub>1</sub> }</p>
<p>Yukarıdaki bu makineyi yorumlayacak olursak:</p>
<p>Q değeri olarak   {q<sub>0</sub>,q<sub>1</sub>} verilmiştir. Yani makinemizin ik idurumu olacaktır.</p>
<p>Γ değeri olarak { a,x } verilmiştir. Yani makinemizdeki kullanılan semboller a ve x&#8217;ten ibarettir.</p>
<p>Σ değeri olara {a} verilmiştir. Yani makinemize sadece a girdisi kabul edilmektedir.</p>
<p>δ değeri olarak iki geçiş verilmiştir { q<sub>0</sub> a→a R q<sub>0</sub> , q<sub>0</sub> x→x L q<sub>1</sub>} buraadki R sağa sarma L ise sola sarmadır ve görüleceği üzere Q değerindeki durumlar arasındaki geçişleri tutmaktadır.</p>
<p><span class="b">◊ değeri olarak x sembolü verilmiştir. Buradan x sembolünün aslında boş sembolü olduğu ve bantta hiçbir değer yokken okunan değer olduğu anlaşılmaktadır.<br />
</span></p>
<p>q<sub>0</sub> ile makinenin başlangıç durumundaki hali belirtilmiştir.</p>
<p>F değeri olarak q<sub>1</sub> değeri verilmiştir. Demek ki makinemiz q<sub>1</sub> durumuna geldiğinde bitmektedir (halt) ve bu duruma gelmesi halinde bu duruma kadar olan girdileri kabul etmiş olur<span class="b">. </span></p>
<p>Yukarıdaki bu tanımı görsel olarak göstermek de mümkündür:</p>
<p><img class="alignnone size-full wp-image-2686" title="turingornek" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/turingornek.jpg" alt="turingornek" width="432" height="225" /></p>
<p><strong><span class="b"><br />
</span></strong></p>
<p><span class="b">Yukarıdaki bu temsili resimde verilen turing makinesi çizilmiştir.</span></p>
<p><span class="b">Makinemizin örnek çalışmasını ve bant durumunu adım adım inceleyelim. </span></p>
<p><span class="b">Birinci adımda bandımızda aaa (3 adet a) yazılı olduğunu kabul edelim ve makinemizin bu aaa değerini kabul edip etmeyeceğini adım adım görelim. Zaten istediğimiz de aaa değerini kabul eden bir makine yapabilmekti.</span></p>
<p><span class="b"><img class="alignnone size-full wp-image-2687" title="turing1" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/turing1.jpg" alt="turing1" width="487" height="412" /></span></p>
<p><span class="b">Yukarıdaki ilk durumda bant üzerinde beklenen ve kabul edilip edilmeyeceği merak edilen değerimiz bulunuyor. Makinemizin kafasının okuduğu değer a sembolü. Makinemizin geçiş tasarımına göre q<sub>0</sub> halinde başlıyoruz ve a geldiğinde teybi sağa sarıp yine q<sub>0</sub> durumunda kalmamız gerekiyor.</span></p>
<p><span class="b"><br />
</span></p>
<p><span class="b"><img class="alignnone size-full wp-image-2689" title="turing21" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/turing21.jpg" alt="turing21" width="509" height="407" /></span></p>
<p>Yeni durumda kafamızın okuduğu değer banttaki 2. a harfi ve bu durumda yine <span class="b">q<sub>0</sub> </span> durumundayken teybi sağa sarıp yine <span class="b">q<sub>0</sub> </span> durumunda kalmamız tasarlanmış<span class="b"> </span></p>
<p><span class="b"><img class="alignnone size-full wp-image-2690" title="turing3" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/turing3.jpg" alt="turing3" width="515" height="380" /></span></p>
<p>3. durumda kafamızın okuduğu değer yine a sembolü olmakta ve daha önceki 2 duruma benzer şekilde <span class="b">q<sub>0</sub> </span> durumundayken a sembolü okumanın sonucu olarak teybi sağa sarıp <span class="b">q<sub>0</sub> </span>durumunda sabit kalıyoruz.</p>
<p><span class="b"><img class="alignnone size-full wp-image-2691" title="turing4" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/turing4.jpg" alt="turing4" width="487" height="364" /></span></p>
<p>4. adımda teypten okuduğumuz değer boşluk sembolü x oluyor. Bu değer makinemizin tasarımında <span class="b">q<sub>1</sub> </span><span class="b"> </span>durumuna gitmemiz olarak tasarlanmış ve teybe sola sarma emri veriyoruz.</p>
<p><span class="b"><img class="alignnone size-full wp-image-2692" title="turing5" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/2009/06/turing5.jpg" alt="turing5" width="586" height="322" /></span></p>
<p><span class="b">Makinenin son durumunda </span><span class="b">q<sub>1</sub> </span><span class="b"> durumu makinenin kabul ve bitiş durumu olarak tasarlanmıştı ( makinenin tasarımındaki F kümesi) dolayısıyla çalışmamız burada sonlanmış ve giriş olarak aaa girdisini kabul etmiş oluyoruz.</span></p>
<p><strong><span class="b">2. Örnek</span></strong></p>
<p><span class="b">Hasan Bey&#8217;in sorusu üzerine bir örnek makine daha ekleme ihtiyacı zuhur etti. Makinemiz {a,b} sembolleri için çalışsın ve ilk durum olarak bandın en solunda başlayarak bantta bulunan sembolleri silmek için tasarlansın. Bu tasarımı aşağıdaki temsili resimde görülen otomat ile yapabiliriz:</span></p>
<p><span class="b"><img class="alignnone" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/turing_silici.jpg" alt="" width="454" height="123" /></span></p>
<p><span class="b">Görüldüğü üzere makinemizde 4 durum bulunuyor, bunlardan en sağda olan h durumu bitişi (halt) temsil ediyor. Şimdi bu makinenin bir misal olarak &#8220;aabb&#8221; yazılı bir bantta silme işlemini nasıl yaptığını adım adım izah etmeye çalışalım. </span></p>
<p><span class="b">Aşağıda, makinenin her adımda nasıl davranacağı bant üzerinde gösterilmiş ve altında açıklanmıştır. Sarı renge boyalı olan kutular, kafanın o anda üzerinde durduğu bant konumunu temsil etmektedir.<br />
</span></p>
<p><span class="b"><img class="alignnone" src="http://www.bilgisayarkavramlari.com/wp-content/uploads/turing_silici_adimlar.jpg" alt="" width="374" height="590" /></span></p>
<p><span class="b">Netice olarak Hasan Bey&#8217;in sorusuna temel teşkil eden ve örneğin q1 üzerindeki döngülerden birisi olan b/a,R geçişi, banttan b okunduğunda banta a değerini yaz manasındadır.</span></p>
<p><span class="b">Yine bu yazıya yapılan yorumlarda sorulan bir sorunun cevabını aşağıdaki bağlantıda çözdüm. Soru, eşit a ve b içeren Turing makinesinin tasarımı idi, bağlantıya tıklayarak okuyabilirsiniz. </span></p>
<p><a href="http://www.bilgisayarkavramlari.com/2010/11/19/esit-a-ve-b-bulunduran-turing-makinesi-ornegi/">http://www.bilgisayarkavramlari.com/2010/11/19/esit-a-ve-b-bulunduran-turing-makinesi-ornegi/</a></p>

<p class="sayac_bilgi">1,677 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bilgisayarkavramlari.com/2009/06/27/turing-makinesi-turing-machine/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Özyineli Sayılabilir Diller (Recursively Enumerable Languages)</title>
		<link>http://www.bilgisayarkavramlari.com/2009/06/27/ozyineli-sayilabilir-diller-recursively-enumerable-languages/</link>
		<comments>http://www.bilgisayarkavramlari.com/2009/06/27/ozyineli-sayilabilir-diller-recursively-enumerable-languages/#comments</comments>
		<pubDate>Sat, 27 Jun 2009 12:33:24 +0000</pubDate>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
				<category><![CDATA[Automata (otomatlar, özdevinirler)]]></category>
		<category><![CDATA[Bilgisayar Kavramları]]></category>
		<category><![CDATA[Derleyiciler]]></category>
		<category><![CDATA[Doğal Dil İşleme (NLP)]]></category>
		<category><![CDATA[Programlama Dilleri]]></category>

		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/?p=2647</guid>
		<description><![CDATA[Yazan : Şadi Evren ŞEKER Muntazam dillerden (formal languages) birisi olan ve bu özelliği ile Mantık, Matematik ve Bilgisayar bilimlerinin çalışma alanına giren bir dil çeşididir. Sınıflandırma olarak Chomsky Hiyerarşisinde (Chomsky Hierarchy) 0. seviye olan (Type 0) bu dile uygun bütün diller birer düzenli ifade (regular expression) ile gösterilebilir. Muntazam dil (formal language) olması dolayısıyla [...]]]></description>
			<content:encoded><![CDATA[<p>Yazan : Şadi Evren ŞEKER</p>
<p><a href="http://www.bilgisayarkavramlari.com/2009/06/25/muntazam-diller-formal-languages/">Muntazam dillerden (formal languages)</a> birisi olan ve bu özelliği ile Mantık, Matematik ve Bilgisayar bilimlerinin çalışma alanına giren bir dil çeşididir. Sınıflandırma olarak <a href="http://www.bilgisayarkavramlari.com/2009/06/27/chomsky-hiyerarsisi-chomsky-hierarchy/">Chomsky Hiyerarşisinde (Chomsky Hierarchy)</a> 0. seviye olan (Type 0) bu dile uygun bütün diller birer düzenli ifade (regular expression) ile gösterilebilir.</p>
<p><a href="http://www.bilgisayarkavramlari.com/2009/06/25/muntazam-diller-formal-languages/">Muntazam dil (formal language)</a> olması dolayısıyla dilde üretilen her <a href="http://www.bilgisayarkavramlari.com/2009/06/25/ozyineli-sayilabilir-kume-recursively-enumerable-sets/">özyineli sayılabilir kelime kümesi (recursively enumerable set) </a> bütün kelimelerden çıkarılabilecek <a href="http://www.bilgisayarkavramlari.com/2009/06/24/guc-kumesi-kuvvet-kumesi-power-set/">güç kümesinin (power set)</a> bir alt kümesi olmak zorundadır. Bu anlamda bir özyineli sayılabilir dili aşağıdaki üç farklı tanımla tanımlamak mümkündür:</p>
<p>Bir dilde bulunan alfabeden üretilebilen bütük kelimeleri kabul eden dil yani Σ sembolü ile dilimizdeki alfabeyi yani harfler kümesini gösterecek olursak L ile gösterilen dilimiz Σ<sup>*</sup> ile üretilebilen kelimeler kümesidir.</p>
<p><a href="http://www.bilgisayarkavramlari.com/2009/06/27/turing-makinesi-turing-machine/">Turing makinesi (Turing machine) </a>ile işlenebilen veya<a href="http://www.bilgisayarkavramlari.com/2009/06/25/hesaplanabilir-fonksiyon-computable-function/"> hesaplanabilir bir fonksiyon (computable function)</a> bulunabilen dildir. Burada dikkat edilecek nokta dilin sonsuz olabileceğidir. Yani dilimizde sonsuz sayıda tekrar bulunabilir.<a href="http://www.bilgisayarkavramlari.com/2009/06/27/turing-makinesi-turing-machine/"> Turing makinesi</a> ve <a href="http://www.bilgisayarkavramlari.com/2009/06/25/hesaplanabilirlik-teorisi-computability-theory/">hesaplanabilirlik teorisi (computability theory)</a> dikkatle okunacak olursa dilin sonsuz olmasının bir sakıncası yoktur. Teorik olarak sonlu zamanda bitiyor olması yeterlidir ve dil sonsuz bile olsa sonlu zamanda işleyen bir makine veya fonksiyon bulunabilir.</p>
<p>Şayt bir dilde üretilen bir<a href="http://www.bilgisayarkavramlari.com/2008/08/02/dizgi-string/"> dizgi (string)</a> için bir <a href="http://www.bilgisayarkavramlari.com/2009/06/27/turing-makinesi-turing-machine/">Turing makinesi (turing machine)</a> veya <a href="http://www.bilgisayarkavramlari.com/2009/06/25/hesaplanabilir-fonksiyon-computable-function/">hesaplanabilir bir fonksiyon (computable function) </a>bulunuyorsa, diğer bir ifadeyle ürettiğimiz <a href="http://www.bilgisayarkavramlari.com/2009/06/27/turing-makinesi-turing-machine/">turing makinesi</a> şu üç durumdan birisini yapıyorsa:</p>
<ul>
<li><a href="http://www.bilgisayarkavramlari.com/2008/11/12/durma-problemi-halting-problem/">bitmek (halt)</a></li>
<li><a href="http://www.bilgisayarkavramlari.com/2008/09/08/dongu-loop/">döngü (loop)</a></li>
<li>red etmek (reject)</li>
</ul>
<p>bu durumda bu dil özyineli sayılabilir dildir denilebilir.</p>
<p>Özyineli sayılabilir diller temel olarak <a href="http://www.bilgisayarkavramlari.com/2009/06/27/chomsky-hiyerarsisi-chomsky-hierarchy/">chomsky hiyerarşisinde (chomsky hierarchy)</a> bulunan bütün diğer dilleri kapsar. Bu anlamda hiyerarşinin en alt seviye dilidir ve diğer dillere göre çok daha esnektir.</p>

<p class="sayac_bilgi">131 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bilgisayarkavramlari.com/2009/06/27/ozyineli-sayilabilir-diller-recursively-enumerable-languages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chomsky Hiyerarşisi ( Chomsky Hierarchy )</title>
		<link>http://www.bilgisayarkavramlari.com/2009/06/27/chomsky-hiyerarsisi-chomsky-hierarchy/</link>
		<comments>http://www.bilgisayarkavramlari.com/2009/06/27/chomsky-hiyerarsisi-chomsky-hierarchy/#comments</comments>
		<pubDate>Sat, 27 Jun 2009 12:15:53 +0000</pubDate>
		<dc:creator>Şadi Evren ŞEKER</dc:creator>
				<category><![CDATA[Automata (otomatlar, özdevinirler)]]></category>
		<category><![CDATA[Bilgisayar Kavramları]]></category>
		<category><![CDATA[Bilgisayar Standartları]]></category>
		<category><![CDATA[Derleyiciler]]></category>
		<category><![CDATA[Doğal Dil İşleme (NLP)]]></category>
		<category><![CDATA[Programlama Dilleri]]></category>

		<guid isPermaLink="false">http://www.bilgisayarkavramlari.com/?p=2674</guid>
		<description><![CDATA[Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinin özellikle dil alanında yapılan çalışmalarında muntazam dilleri (formal languages) tasnif etmek için kullanılan bir yapıdır. Literatürde Chomsky–Schützenberger hiyerarşisi olarak da geçmektedir. Bilindiği üzere ( muntazam diller (formal langauges) veya CFG yazısından da okunabileceği üzere) muntazam dillerin dört özelliği bulunur. Bunlar özellikle içerikten bağımsız dillerin (context free languages) da [...]]]></description>
			<content:encoded><![CDATA[<p>Yazan : Şadi Evren ŞEKER</p>
<p>Bilgisayar bilimlerinin özellikle dil alanında yapılan çalışmalarında <a href="http://www.bilgisayarkavramlari.com/2009/06/25/muntazam-diller-formal-languages/">muntazam dilleri (formal languages)</a> tasnif etmek için kullanılan bir yapıdır. Literatürde Chomsky–Schützenberger hiyerarşisi olarak da geçmektedir.</p>
<p>Bilindiği üzere ( <a href="http://www.bilgisayarkavramlari.com/2009/06/25/muntazam-diller-formal-languages/">muntazam diller (formal langauges)</a> veya <a href="http://www.bilgisayarkavramlari.com/2009/03/20/icerikten-bagimsiz-gramer-context-free-grammer-cfg/">CFG</a> yazısından da okunabileceği üzere) <a href="http://www.bilgisayarkavramlari.com/2009/06/25/muntazam-diller-formal-languages/">muntazam dillerin</a> dört özelliği bulunur. Bunlar özellikle <a href="http://www.bilgisayarkavramlari.com/2009/03/20/icerikten-bagimsiz-dil-context-free-language/">içerikten bağımsız dillerin (context free languages)</a> da temelini oluşturmuştur.</p>
<ul>
<li>sonlular (terminals)</li>
<li>devamlılar (nonterminals)</li>
<li>üretim kuralları ( devamlıların değerlerini belirleyen geçiş kuralları)</li>
<li>Başlangıç devamlısı</li>
</ul>
<p>Örneğin aşağıdaki <a href="http://www.bilgisayarkavramlari.com/2009/03/20/icerikten-bagimsiz-gramer-context-free-grammer-cfg/">içerikten bağımsız dilbilgisini (context free grammer)</a> ele alalım</p>
<p>S → AB</p>
<p>A → Aa | ε</p>
<p>B → b</p>
<p>Yukarıdaki bu <a href="http://www.bilgisayarkavramlari.com/2009/03/20/icerikten-bagimsiz-gramer-context-free-grammer-cfg/">CFG</a> tanımındaki sonlular (terminals) {a,b,ε } ,  devamlılar (nonterminals) { S,A,B } olarak tanımlanır. üretim kuralı olarak (production rules) S,A,B&#8217;nin açılımlarını gösteren ve → sembolü ile belirtilen satırlar bulunmaktadır. Son olarak başlangıç devamlısı (nonterminal) değeri olarak S kabul edilmiştir. Başlangıç devamlısı böyle bir kural bulunmamasına karşılık genelde S harfi (start kelimesinden gelmektedir) ile gösterilmekte ve ilk satırda bulunmaktadır.</p>
<p>Yukarıdaki bu <a href="http://www.bilgisayarkavramlari.com/2009/03/20/icerikten-bagimsiz-gramer-context-free-grammer-cfg/">CFG</a> şayet <a href="http://www.bilgisayarkavramlari.com/2007/04/14/regular-expression-regexp-duzenli-deyimler-ifadeler/">düzenli ifadeye (regular expression) </a>çevrilirse <span class="texhtml"><em>a</em><sup><em>*</em></sup><em>b şeklinde yazılabilir. Aslında burada anlatılan değer </em></span><span class="texhtml"><em>a</em><sup><em>n</em></sup><em>b</em></span> şeklinde de gösterilebilen istenildiği kadar a değeri alan (hiç almaya da bilir) ve sonra mutlaka b ile biten dildir.</p>
<p>Chomsky yukarıdaki şekilde tanımlanan <a href="http://www.bilgisayarkavramlari.com/2009/06/25/muntazam-diller-formal-languages/">muntazam diller (formal languages)</a> için bir sınıflandırmaya gitmiş ve 4 seviye belirlemiştir.</p>
<ul>
<li>Type-0 ( tip 0) Sınırlandırılmamış diller (unrestricted grammers)</li>
<li>Type-1 ( tip 1) İçerik duyarlı diller (context-sensitive grammers)</li>
<li>Type-2 ( tip 2)<a href="http://www.bilgisayarkavramlari.com/2009/03/20/icerikten-bagimsiz-dil-context-free-language/"> İçerikten bağımsız diller (context free languages)</a></li>
<li>Type-3 ( tip 3) <a href="http://www.bilgisayarkavramlari.com/2007/04/14/regular-expression-regexp-duzenli-deyimler-ifadeler/">Düzenli diller (regular grammers)</a></li>
</ul>
<p>şeklinde 4 seviye isimlendirilmiştir.Bu seviyelerde iler gidildikçe (seviye arttıkça) dili bağlayan kurallarda sıkılaşmakta ve dil daha kolay işlenebilir ve daha belirgin (deterministic) bir hal almaktadır.</p>
<p>Tip-0 dilleri bastiçe <a href="http://www.bilgisayarkavramlari.com/2009/06/27/turing-makinesi-turing-machine/">turing makinesi (turing machine)</a> tarafından çalıştırılabilen ve bir şekilde bitecek olan dillerdir (<a href="http://www.bilgisayarkavramlari.com/2009/06/25/hesaplanabilirlik-teorisi-computability-theory/">hesaplanabilir diller (computable languages)</a>. Örneğin <a href="http://www.bilgisayarkavramlari.com/2009/06/27/ozyineli-sayilabilir-diller-recursively-enumerable-languages/">özyineli sayılabilir diller (recusive enumerable languages) </a>bu seviyeden kabul edilir.</p>
<p>Tip-1 dilleri için içerk duyarlı diller örnek gösterilebilir. Basitçe αAβ → αγβ şeklindeki gösterime sahip bir dildir. Buradaki A devamlı (nonterminal) ve α,γ,β birer sonlu (terminal) terimdir. Bu sonlulardan α ve β boş harf (yani ε veya bazı kaynaklarda λ) olabilir ancak γ mutlak bir değere sahip olmalıdır (yani boş olamaz) Ayrıca bu tipte</p>
<p>S → ε</p>
<p>şeklinde bir kurala da izin verilmektedir. Burada S devamlısının sağ tarafta olmaması gerekmektedir. Bu diller doğrusal bağlı otomatlar (linear bounded automaton) ile gösterilebilir. Doğrusal bağlı otomatlar, <a href="http://www.bilgisayarkavramlari.com/2009/06/27/turing-makinesi-turing-machine/">turing makinelerinin</a> özel bir halidir ve <a href="http://www.bilgisayarkavramlari.com/2009/06/27/turing-makinesi-turing-machine/">Turing makinesinde</a> bulunan bantın sabit uzunlukta olduğu (çalışmanın sabit zaman sonra sona ereceği) kabul edilir.</p>
<p>Tip-2  diller ise <a href="http://www.bilgisayarkavramlari.com/2009/03/20/icerikten-bagimsiz-gramer-context-free-grammer-cfg/">CFG </a>ile ifade edilebilen <a href="http://www.bilgisayarkavramlari.com/2009/03/20/icerikten-bagimsiz-dil-context-free-language/">içerikten bağımsız dillerdir (context free languages)</a>. Bu dillerin özelliği A → γ şeklinde gösterilmeleridir. Buradaki γ değeri sonlular (terminals) ve devamlılar (nonterminals) olabilmektedir. Bu diller <a href="http://www.bilgisayarkavramlari.com/2007/05/04/pda-push-down-automata-asagi-suruklemeli-otomat/">aşağı sürüklemeli otomatlar (push down automata PDA) </a>tarafından kabul edilen dillerdir ve hemen hemen bütün programlama dillerinin temelini oluşturmaktadırlar. (programlama dillerinin neredeyse tamamı bu seviye kurallarına uymaktadırlar)</p>
<p>Tip-3 diller ise <a href="http://www.bilgisayarkavramlari.com/2007/04/14/regular-expression-regexp-duzenli-deyimler-ifadeler/">düzeli ifadeler (regular expressions)</a> ile ifade edilebilen (veya üretilebilen veya parçalanabilen (parse) ) dillerdir. Bu dillerin farkı</p>
<p>A → α ve</p>
<p>A → αB</p>
<p>şeklindeki kurallar ile göterilebilmeleridir.</p>
<p>Yukarıdaki bu tanımları bir tabloda toplamak gerekirse:</p>
<table border="0" cellpadding="0">
<tbody>
<tr>
<td>
<p align="center"><strong>Seviye</strong></p>
</td>
<td>
<p align="center"><strong>Dil Örneği</strong></p>
</td>
<td>
<p align="center"><strong>Otomat Uygulaması</strong></p>
</td>
<td>
<p align="center"><strong>Kuralları</strong></p>
</td>
</tr>
<tr>
<td>Type-0</td>
<td><a href="http://www.bilgisayarkavramlari.com/2009/06/27/ozyineli-sayilabilir-diller-recursively-enumerable-languages/"><span style="text-decoration: underline;">Recursively enumerable</span></a></td>
<td><a href="http://www.bilgisayarkavramlari.com/2009/06/27/turing-makinesi-turing-machine/"><span style="text-decoration: underline;">Turing machine</span></a></td>
<td>α → β</td>
</tr>
<tr>
<td>Type-1</td>
<td><a title="Context-sensitive grammar" href="http://en.wikipedia.org/wiki/Context-sensitive_grammar">Context-sensitive</a></td>
<td><span style="text-decoration: underline;">Linear-bounded non-deterministic Turing machine</span></td>
<td>αAβ → αγβ</td>
</tr>
<tr>
<td>Type-2</td>
<td><a href="http://www.bilgisayarkavramlari.com/2009/03/20/icerikten-bagimsiz-gramer-context-free-grammer-cfg/"><span style="text-decoration: underline;">Context-free</span></a></td>
<td>Non-deterministic <a href="http://www.bilgisayarkavramlari.com/2007/05/04/pda-push-down-automata-asagi-suruklemeli-otomat/"><span style="text-decoration: underline;">pushdown   automaton</span></a></td>
<td>A → γ</td>
</tr>
<tr>
<td>Type-3</td>
<td><a href="http://www.bilgisayarkavramlari.com/2007/04/14/regular-expression-regexp-duzenli-deyimler-ifadeler/"><span style="text-decoration: underline;">Regular</span></a></td>
<td><span style="text-decoration: underline;">Finite state automaton</span></td>
<td>A → α ve A → αB</td>
</tr>
</tbody>
</table>
<p>Yukarıdaki seviyeler bütün dilleri kapsamak için yeterli değildir ayrıca yukarıda gösterilen seviyelere giren yukarıdaki tablo dışında diller de bulunmaktadır.</p>

<p class="sayac_bilgi">489 views</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bilgisayarkavramlari.com/2009/06/27/chomsky-hiyerarsisi-chomsky-hierarchy/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

