Andrew D. Booth
Birkbeck College Hesaplama Laboratuvarı
University of London, Londra, İngiltere
Bu makalede, otomatik bir dijital bilgisayarın iki tür sınıflandırma probleminin çözümüne nasıl uygulanabileceğinin incelenmesi önerilmektedir. Birinci problem frekans analizidir ve özellikle “konkordans” olarak adlandırılabilecek olanın yapılmasıdır. İkinci problem ise bir metinde yer alan cümlelere benzetilebilecek sözcük gruplarının yapılarının analizine ilişkindir.
Başlangıçta, yeterli bir iç depolama alanı mevcutsa bilgisayarın bu problemlerin her ikisini de çözmek üzere programlanmasında hiçbir güçlük bulunmadığı açıkça belirtilmelidir. İlgi, depolama kapasitesinin sınırlı olduğu ve dilbilimsel uygulamalardan kaynaklandıkları için sınıflandırılacak öğe sayısının çok büyük olabildiği durumlarda ortaya çıkar.
Frekans Analizi
Önce frekans analizi problemi ele alınsın. Burada, dilbilimsel terimlerle, verilen bir metinde geçen farklı sözcüklerin sayılarının listelenmesi gereklidir. Analiz edilecek metnin makineye delikli ya da manyetik bant biçiminde sunulduğu ve bunun üzerinde her alfabetik ya da başka bir sembolün makine için kabul edilebilir kodlanmış bir biçimde temsil edildiği varsayılmaktadır.
Her sözcüğün bir boşluk sembolüyle ya da makine tarafından bir harfi temsil eden koddakinden farklı olduğu tanınabilen bir noktalama işaretiyle sonlandığı kabul edilir. Sınırsız iç depolama kapasitesi mevcutsa frekans analizi aşağıdaki gibi ilerleyebilir:
Metinde şu ana kadar n farklı sözcüğün karşılaşıldığı ve bunlara ait kod sembollerinin a + 1, a + 2, … a + n konumlarında saklandığı varsayılsın. Her konum şu şekilde doldurulacaktır:
- (Kod sembolleri)
- (Boş basamaklar)
- (Sayı sayacı)
Şimdi bir sonraki sözcük banttan okunur; sonu, bir boşluk ya da noktalama sembolünün varlığıyla tanınır. Ardından, sözcüğü a + 1, a + 2, … a + n konumlarında tutulan sözcüklerden biriyle özdeşleştirme girişiminde bulunulur; bu, yazar tarafından ilk kez tanımlanan parantezleme yöntemiyle (1) en elverişli biçimde gerçekleştirilebilir.
Eğer sözcüğün daha önce, örneğin a + k konumunda, geçtiği bulunursa, o konumda tutulan sayaç sayısına bir eklenir. Buna karşılık, sözcük daha önce geçmemişse, a + n + 1 konumunda saklanır ve ilgili sayaç konumuna 1 değeri yerleştirilir.
Bu süreç bandın sonuna ulaşılıncaya kadar sürdürülür; bu noktada sözcükler ve sayaç sayıları ya doğrudan çıktı olarak verilir ya da alfabetik ya da frekans sırasına göre sıralandıktan sonra yazdırılır.
Sınırlı Depolama Varyantı
Yalnızca sınırlı iç depolama mevcut olduğunda bu basit süreç olanaksızdır; ancak aşağıdaki varyantın tatmin edici sonuçlar verdiği bulunmuştur. Mevcut iç depolamanın a + 1 ile a + L arasında uzandığı varsayılmaktadır.
- Giriş bandından bir sonraki sözcüğü oku.
- Önceden saklanmış sözcüklerle karşılaştır.
- Daha önce karşılaşılmışsa, ilgili sayaç sayısına bir ekle ve adım 1’e dön.
- Daha önce karşılaşılmamışsa, kullanılabilir depolamanın dolu olup olmadığını denetle.
- Depolama mevcutsa, sözcüğü ve birim sayaç sayısını bir sonraki boş konuma kaydet. Ek depolama alanının dolduğunu kaydet ve adım 1’e dön.
- Depolama doluysa, sözcüğü çıkış bandına del veya başka bir yolla kaydet. Adım 1’e dön.
Bu sürecin sonucunun, metinde kullanılan ilk L farklı sözcüğün görülme sıklığının bir analizi ve bu sözcüklerin elendiği yeni bir bant olacağı açıktır. Süreç türetilmiş bant üzerinde yinelenir ve tüm metin işleninceye kadar çevrim tekrarlanır.
Konkordans Hazırlama
Bir konkordans hazırlamanın daha genel problemi, yukarıda tanımlanan istatistiksel analizi olduğu kadar, her sözcüğün geçtiği sayfa ve satır numaralarının listesinin sağlanmasını da içerir. Bu, tam olarak benzer bir biçimde ele alınabilir; ancak her metin sözcüğü için verileri tutmak üzere birden fazla bilgisayar depolama konumunun kullanılmasını gerektirir.
Giriş bandı artık sayfa ve satır sonu sembolleriyle donatılmıştır ve bunlar, incelenen sözcükle ilişkili depolama konumlarına gerekli konkordans verilerinin eklenmesi için kullanılır. İşlem programı aşağıdaki gibidir:
- Banttan sembol oku.
- Bunun aşağıdakilerden hangisi olduğunu incele:
- Satır başlangıç sembolü → geçerli satır sayaç sayısını bir artır, satır başlangıç sembolünü çıkış bandına del, geri dön.
- Sayfa başlangıç sembolü → geçerli sayfa sayaç sayısını bir artır; satır sayaç sayısını bire sıfırla, sayfa başlangıç sembolünü çıkış bandına del, geri dön.
- Alfabetik sembol → önceki sembollerle birlikte sakla ve devam et.
- Boşluk sembolü ya da noktalama işareti → karşılaştırmaya geç.
- Birleştirilmiş sözcüğü önceden saklanan sözcüklerle karşılaştır:
- Mevcutsa, frekans sayaç sayısını bir artır, sayfa ve satır sayaç sayılarını depolamaya ekle, geri dön.
- Mevcut değilse, kullanılan depolama sayaç sayısını incele.
- İzin verilen sınıra ulaşılmamışsa, bunu bir artır ve yeni sözcüğü, sayfa ve satır numaralarını ve birim frekans sayaç sayısını bir sonraki depolama konumunda sakla.
- İzin verilen sınıra ulaşılmışsa, sözcüğü çıkış bandına del ve geri dön.
Verilen programın, herhangi bir sözcüğün çeşitli biçimlerini (tekil, çoğul vb.) farklı varlıklar olarak ele alan bir çıktı üreteceği açıktır. Bundan kaçınılmak istenirse, makineye sözcüklerin çeşitli biçimlerinin tanınmasını sağlayacak bir kök sözlüğü (2) sağlamak yeterlidir.
Bununla birlikte, bu tür programlar genellikle kök-ek sözlüğünün oluşturulmasına ön hazırlık niteliğinde analizler yapmak için kullanıldığından, çoğu zaman tam çıktının alfabetik sırada üretilmesi daha yararlıdır. Bunun etkisi, genel olarak aynı kökten türetilmiş tüm biçimlerin bitişik konumlarda ilişkilendirilmesidir; bu da izleyen analiz için önemli bir yardımcıdır.
Cümlelerin Yapısal Sınıflandırılması
Başlangıçta belirtilen iki problemden ikincisi için, aşağıdaki tipik olarak ele alınabilir: Verilen bir metnin incelenmesi ve belirli bir yapıya sahip tüm cümlelerin (ya da ifadelerin) bir listesinin üretilmesi gereklidir. Burada da, sınırsız depolama alanı verildiğinde, problem doğrudan bir biçimde çözülebilir.
Makinenin, her sözcüğü bir söz türü ya da başka bir dilbilgisel sembolle ilişkilendiren bir sözlüğü depoda tuttuğu varsayılsın. Problem, girişte verilen belirli bir konfigürasyonu, örneğin (s₁, s₂, … sₙ), tanımak ve ortaya çıktığında bunu listelemektir. Basit bir program şu şekilde olabilir:
- Bir sonraki noktalama işaretine kadar olan tüm sözcükleri oku ve sakla.
- Sözcükleri sırayla sözlükle karşılaştır ve böylece dilbilgisel gösterge numaralarını elde et.
- Gösterge numaralarını (s₁, s₂, … sₙ) ile karşılaştır.
- Özdeşse, verilen cümleyi çıktı olarak ver ve adım 1’e dön.
- Değilse, doğrudan adım 1’e dön.
Çoğu modern makinede bu yaklaşım yöntemi oldukça uygulanabilirdir; çünkü yapısal gruplar genellikle çok büyük değildir. Dezavantaj, değişken uzunluklu cümleleri ele almak için gereken programın karmaşık olma eğilimidir.
Bunu aşmak için aşağıdaki yöntem geliştirilmiştir:
- Bir sonraki sözcüğü oku ve çıkış bandına del.
- Dilbilgisel sembolü elde etmek için sözlükle karşılaştır.
- Dilbilgisel sembolü uygun konfigürasyon sembolüyle, örneğin sᵣ, karşılaştır. sᵣ’nin ele alınacak yapının son birimi olup olmadığını sınayın.
- Konfigürasyon sembolleri özdeşse ve sᵣ yapının son birimi değilse, adım 1’e dön.
- Semboller özdeş değilse, bir sonraki noktalama işaretine ulaşılıncaya kadar okumaya ve delmeye devam et; bunu del ve adım 1’e dön.
- Semboller özdeşse ve …
Sr yapının son birimi ise, bir sonraki noktalama işaretine ulaşılıncaya kadar okumaya ve delmeye devam et. Bunu art arda iki kez del ve ardından (a)’ya dön.
Bu süreçle üretilen çıkış bandı, özgün metni, gerekli türdeki her yapısal birimin çift noktalama işaretiyle izlenecek şekilde işaretlenmiş olarak içerecektir. Bu bant daha sonra makineye ters yönden beslenir.
(devamı sayfa 37’de)
Bilgisayar Kullanımı
Basit bir program aşağıdaki etkiyi üretir:
- Bir sonraki sembolü oku.
- Eğer alfabetik bir karakterse:
- Önceki noktalama işareti iki kez kullanılmışsa, onu del.
- Önceki noktalama işareti iki kez kullanılmamışsa, 1. adıma dön.
- Eğer bir noktalama sembolüyse, bir sonraki karakteri incele:
- Bu da bir noktalama sembolüyse, 2(a) ve 2(b) adımlarını üretmek için uygun talimatları sakla. Sembolü del ve 1. adıma dön.
- Bir sonraki karakter bir noktalama sembolü değilse, 2(a) ve 2(b) adımlarını uygun biçimde değiştir ve 1. adıma dön.
Son işlem, yeni üretilmiş bandın içeriğini, yine yazdırma okuyucusuna ters yönde sunarak yazdırmaktır. Çıktı, özgün metinde yer alan izo-yapısal birimlerin bir listesi olacaktır.
Bu tür bir program, sayfa ve satır göstergeleri vermek ve ayrıca birden fazla farklı yapısal birim için eşzamanlı incelemeler yapılmasını sağlamak üzere genişletilebilir. Ancak yeni ilkeler söz konusu olmadığından, gereken program adımlarını ayrıntılandırmaya değmez.
Kaynakça
- Nature, A. D. Booth, 176 (1955), 565.
- Automatic Digital Calculators, A. D. Booth ve K. H. V. Booth, s. 221, 2. baskı, Butterworths, Londra (1956).