blog image

Araştırmacılar, 19. yüzyılda Paskalya Adası’nda Rapa Nui dilinde yazılmış, Rongorongo adında gizemli glifler buldu. Ancak araştırmacılar bu gliflerin kodunu çözmeyi, hatta bu gliflerin bir dil mi yoksa dilden bağımsız semboller mi olduğunu anlamayı başaramadılar. Bu nedenle adada yer alan büyük insan figürü Moai taşlarının dikilme sebeplerini de henüz tam olarak keşfedemediler. Paskalya Adası Moai taşları örneğinde olduğu gibi eğer insanların yazdıklarını ya da bir şeyleri açıklama biçimlerini anlayamıyorsanız, büyük olasılıkla kim olduklarını, nasıl yaşadıklarını, ne yaptıklarını ve neden yaptıklarını da anlayamazsınız. Makinelerin hayatımızın vazgeçilmez olduğu bu günlerde insanların yazdıklarını anlamak işletmeler için kritik derecede önemlidir. İşte burada insanların yazdıklarını anlamak için devreye Doğal Dil İşleme (Natural Language Processing – NLP) girmektedir.

Doğal Dil İşleme (Natural Language Processing – NLP) Nedir?

Doğal Dil İşleme (Natural Language Processing – NLP), doğal dil verilerini işlemeye, analiz etmeye ve makinelere insanlarla Türkçe, İngilizce, Fransızca gibi doğal bir dilde etkileşim kurmayı öğretmeye çalışan yapay zekanın bir alt dalıdır. Bugün makineler, insanların sahip olduğu gibi bir zekaya kendi kendilerine sahip olacak bir aşamaya henüz gelmedikleri için insan dilini anlayabilmeleri ancak doğal dil işleme uygulamaları sayesinde gerçekleşmektedir.

Makineler, Doğal Dilleri Nasıl Anlar?

Aslında anlayamazlar. Makinelerin doğal dili anlamasını ve bu dil veriler üzerindeki işlemleri gerçekleştirmesini istiyorsanız, doğal dildeki kelimeleri sayılara çevirebilen bir sisteme ihtiyacınız bulunmaktadır. Bunu yapmak için 2 yöntemden yararlanabilirsiniz:

1- Word Embedding ile kelimeleri ve sayıları haritalandırmak

Word Embedding, kelimeleri sayılara atayan bir tekniktir. Kelimeler, her kelimenin anlamına karşılık gelen kelime vektörünün koordinatları arasında dağıtan gerçek sayı vektörleri ile eşlenir. Anlamları benzer kelimeler, bu tür bir vektör uzayında birbirlerine yakın bulunur ve bu anlamlar doğal dil işleme uygulamasının geliştirileceği sektöre göre seçilmelidir.

Kelimeleri, sayısal vektörlerle eşleştiren bir matrise sahip olduğunuzda, bu vektörler üzerinde aritmetik işlemler yapabilirsiniz. 

Örneğin, kelimelerin, cümlelerin ve hatta tüm belgelerin anlamsal benzerliğini (eş anlam) belirleyebilir ya da bu bilgilerle bir metnin neyle ilgili olduğunu anlayabilirsiniz.

2- Makine öğrenimini kullanmak

Bir öğrenme algoritması kullanarak da vektörlere yerleştirilecek sayıları oluşturabilirsiniz. Yapay zekanın bir alt dalı olan makine öğrenmesi, programlanmaya ihtiyaç duymadan, veriden otomatik olarak öğrenebilen bilgisayar sistemleri oluşturur.

Makine öğrenimi algoritmaları, sadece yazıda değil; ses ve görüntü işlemede de kullanılabilir. Bu sayede yeni veriler hakkında tahminlerde bulunabilir; görüntüleri ve konuşmaları tanımayı öğrenebilir; fotoğrafları ve metin belgelerini sınıflandırabilir; kontrolleri otomatikleştirebilir ve hatta oyun geliştirmeye yardımcı olabilir. 

Makine öğrenimi algoritmaları üzerine geliştirilen uygulamalar önceden tanımlanmış mantığa dayanmaz, bunun yerine geçmiş deneyimlerden öğrenme yeteneğini kullanır. 

Örneğin, makine öğrenimine dayalı bir satranç uygulaması, önceki oyunlardan hatırladığı pozisyonları arar ve en iyi pozisyona götüren hamleyi yapar. 

Makine Öğrenimi Sisteminin Aşamaları

1. Aşama: Model eğitimi

Bu aşamada algoritma büyük miktarda metinsel veri ile beslenerek eğitilir. Bu algoritmaların size güvenilir sonuçlar vermesi için, büyük miktarda girdi sağlanmalıdır. Doğal dil işleme söz konusu olduğunda, Wikipedia ve Google Haberler gibi platformlar, neredeyse tüm makine öğrenimi algoritmalarını beslemek için yeterli miktarda metinsel veri sağlar. 

Ancak bu verileri kullanarak işletmeniz için belirli bir soruna çözüm bulmak amacıyla model oluşturmak istiyorsanız muhtemelen çok verimli olmayacaktır. Verimli bir model elde etmek için kendi probleminize özgü, alakalı ve yapılandırılmış veriler ile modeli eğitmelisiniz.

2. Aşama: Test yapma

Algoritma modelinin eğitiminden sonra, modelin ne kadar iyi bir performans göstereceğini öğrenmek için model test edilir. Eğitim sırasında modele öğretilen anlam bilimsel (semantic) ve diğer özelliklerin başarılı bir şekilde tanımlanıp tanımlanamayacağını kontrol etmek için daha önce görmediği metinsel veriler kulllanılmalıdır.

3. Aşama: Tahmin yapmak

Model beklenildiği gibi çalışırsa, aynı model doğal dil işleme uygulamasında tahminler yapmak için kullanılabilir. 

Örneğin, modelinizi bir metnin, bağımsal çözümleme ağacı’nı (dependency parsing tree) ortaya çıkarmak için kullanabilirsiniz.

Doğal Dil İşlemede Neden Makine Öğrenmesi Kullanılır?

Bunun en büyük nedeni algoritma tahminlerinin kesin olmayan sonuçlar vermesidir.Algoritma tahmini sonuçları bir kesinlik/doğruluk derecesine göre hesaplanır. Sonuçların yüksek kesinlik/doğruluk derecesine göre getirilmesi için daha az verimli ve uygulaması pratik olmayan karmaşık algoritmalar kullanılır. Buradaki amaç, kesinlik ve performans arasında bir denge kurabilmektir.

Bu durum, doğal dil işleme için makine öğrenmesinin doğru bir yöntem mi sorusunu akla getirse de daha güvenilir bir yaklaşım olmadığını söyleyebiliriz.

Örneğin; Java dili, her biri önceden tanımlanmış 61 ayrı kelimeden oluşur. Buna karşılık Oxford Sözlüğü 1989 yılında 171.476 giriş içermekteyken; 2010 yılında Harvard Üniversitesi ve Google’daki araştırma ekibi şimdiye kadar yayınlanmış olan kitapların sadece %4’ünü içeren dijitalleştirilmiş metinlerden oluşan veride 1.022.000 kelime saymıştır ve dilin yılda birkaç bin kelime büyüyeceğini tahmin edilmiştir. Bu nedenle her bir kelimeye karşılık gelen sayı vektörü atamak oldukça uzun sürer. 

Ancak bu yapılmaya çalışılsa bile doğal bir dilde kullanılan kelimelerin sayısını belirlemek oldukça bazı zorluklar nedeniyle uzun sürer. 

Bu zorluklardan ilki bir kelimenin kaç farklı kelime olarak sayılacağının bilinmemesidir.

Örneğin, “saymak” fiili, farklı anlamlara sahiptir. Bir cümlede “saygı göstermek” anlamına gelirken; bir diğer cümlede “varsaymak, tutmak, farz etmek” anlamına gelebilir. Üstelik “saymak” fiilinin bu anlamları haricinde başka anlamları da bulunur.

Bir diğer zorluk, çekim eki almış kelimelerin nasıl sayılması gerektiğidir.

Örneğin, çoğul eki almış bir isim ya da zaman eki almış bir fiil, her bir çekim için ayrı ayrı sayılmalıdır mı? 

Bir başka zorluk ise bilimsel terimlerin, argo kelimelerin, kısaltmaların ayrı ayrı sayılıp sayılmayacağıdır.

Diğer bir zorluk doğal dilde dil bilgisinin kesin kurallara bağlı olarak kullanılmamasıdır. 

Tüm bu zorluklar bize doğal bir dilin kelime dağarcığının çok geniş olduğunu ve kurallara bağlı olmadığını göstermektedir. Oysa ki herhangi bir programlama dilinde biçimsel kurallar kesin olarak tanımlanmıştır. Bu nedenle programlama dilleri, doğal dil problemlerini çözmek için uygun değildir.

Her kelimeyi önceden belirlenmiş bir sayıya atayarak bir dili kodlamak (kural tabanlı bir yaklaşımı) yerine, makine öğrenimi algoritmaları, büyük hacimli metinsel verilerdeki kalıpları algılayan ve ardından daha önce görmediği metinsel verilerdeki söz dizimsel (syntactic) yapı hakkında tahminler yapan istatistiksel modeller üretilmesine imkan verirler. Böylece doğal dil işleme uygulaması, analiz edilmek istenen metnin anlamı hakkında tahminlerde bulunmak için temel bir istatistik model kullanır ve ardından uygun bir yanıt üretir.

Doğal Dil İşlemede İstatistiksel Model Nedir?

Doğal dil işlemede istatistiksel model, sözcükler ve tümlecikler gibi dil birimlerinin olasılık dağılımına ilişkin tahminleri içerir ve bunlara belirli özelliklerin atanmasına izin verir. 

İstatistiksel dil modeli, doğal dil üretme (Natural Language Generation – NLG) ve doğal dil anlama (Natural Language Understanding – NLU) gibi birçok doğal dil işleme görevi için önemlidir. 

Sinir ağı modelleri (Neural Network Model)

Bir sinir ağı, bir dizi tahmin algoritmasıdır. Bir beyindeki nöronlar gibi, komşu düğümlere sinyal gönderip alarak etkileşime giren çok sayıda basit işlem öğesinden oluşur. 

Tipik olarak bir sinir ağındaki düğümler, bir giriş katmanı, bir çıkış katmanı ve aradaki bir veya daha fazla gizli katman dahil olmak üzere katmanlar halinde gruplanır. Bir katmandaki çıktı katmanı hariç tüm düğümler, bir bağlantı aracılığıyla ardışık katmandaki bir düğüme bağlanır. Bir bağlantının kendisiyle ilişkilendirilmiş bir ağırlık değeri vardır. Algoritma, model eğitim süreci boyunca, tahminlerde yaptığı hatayı en aza indirmek için ağırlıkları ayarlar. Bu mimari sayesinde bir sinir ağı, karmaşık veri girişlerinde bile kalıpların tanımasını sağlar. 

Bir sinyal geldiğinde, gerçek bir sayı olan ağırlık değeri ile çarpılır. Bir sinir ağına aktarılan girdi ve ağırlık değerleri genellikle ağ eğitimi sırasında üretilen kelime vektörlerinden gelir. Sinir ağı, her bir düğüm için çarpımların sonuçlarını birbirine ekler, daha sonra toplamı bir aktivasyon işlevine aktarır. Aktivasyon fonksiyonu, tipik olarak 0 ile 1 arasında değişen bir sonuç üretir.

Evrişimli sinir ağı modelleri (Convolutional Neural Networks – CNN)

Gerçek bir sinir ağı modelinin mimarisi oldukça karmaşık olabilir; bir dizi farklı katmandan oluşabilir. Bu tür sinir ağı modeline, evrişimli sinir ağı modeli (Convolutional Neural Networks – CNN) denmektedir. Bu evrişimli katmanda yer alan temel işlemlerden bazıları sözcük türü etiketleme (Part of Speech tagger), bağımsal çözümleme (dependency parsing) ve Named Entity Recognition’dır. 

Örneğin, evrişimli katman, her bir kelimeyi kendi başına analiz etmek yerine önce cümleyi parçalarına ayırır, ardından sözcük türünü etiketleyebilir. 

Doğal Dil İşlemenin Temel Metotları Nelerdir?

Doğal dil işlemenin temel metotları sayesinde girdi olarak verilen metin yapılandırılarak girdiden daha iyi ve verimli çıktılar alınmasını sağlanır.

Doğal dil işlemenin temel metotlarının şunlar olduğunu söyleyebiliriz:

POS Tagging (Kelime Türü Etiketleme)

Metinde yer alan kelimelerin türlerinin (isim, fiil, sıfat, bağlaç vb.) etiketlenmesidir.

Stemming and Lemmatization (Kök Bulma ve Kök Çözümleme)

Kök bulma, eklerin ayrıştırılarak kelime kökünün bulunma işlemidir. Kök çözümleme ise kök bulma ile yakın anlamlıdır ancak bir kelimenin kökünü cümlede geçen anlamına göre belirlenmesidir.

Örneğin: “Gözlükçüye gideceğim.” cümlesindeki “gözlükçüye” kelimesi kök bulma işleminde “göz”; kök çözümleme işleminde ise “gözlükçü” olarak belirlenecektir.

Named-Entity Recognition (Varlık İsmi Tanımlama)

Metinde bulunan her kelimenin önceden tanımlanmış olan kategorilere (kişi ismi, tarih, kurum ismi, konum, zaman, para, vb.) göre ayırma ve etiketlendirme işlemidir. 

Örneğin: “İstanbul’da en iyi otel Raffles İstanbul’dur.” cümlesindeki İstanbul konum olarak; Raffles İstanbul ise kurum ismi olarak etiketlenir.

Stop Words (Etkisiz Kelimeler)

Metinde yoğun bir şekilde kullanılan, anlamı olmayan (ve, gibi, vb.) kelimelerin belirlenmesidir. Etkisiz kelimeleri belirlemek, veriyi temizlemek için çok önemlidir. Anlamsız verilerin kaldırılarak metni anlamlandırılmasına yardımcı olur.

Dependency Parsing (Bağlılık Analizi)

Bir cümlede var olan kelimeler arasındaki ikili ilişkilerin saptanarak, bu ikili ilişkilere göre cümlenin çözümlenmesine bağlılık analizi denir.

Noun Chunks (İsim Öbekleri)

Cümlenin içindeki isim ve sıfat tamlamalarının belirlenmesidir.

Finding Similarity (Benzerlik Bulma)

Benzer ve aynı anlamlı kelimelerin bulunmasıdır.

Tokenization (Kelimelere Ayırma)

Metnin anlamlı bütünlere ayrılmasıdır.

Doğal Dil İşleme Hangi Alanlarda Kullanılmaktadır?

Bugün, anlam bilim (semantik) ve dil bilgisi (gramer) kuralları iyi bilinen doğal dili anlayabilen uygulamalar çok farklı alanlarda geliştirilebilmektedir. Kısaca söylemek gerekirse metinsel verinin girdi olarak kullanıldığı tüm uygulamalarda doğal dil işleme kullanılması mümkündür.

Doğal dil işleme uygulamalarının en sık kullanıldığı alanlardan biri işletmelerdeki tekrarlayan ve sıkıcı işlerin otomatikleştirmektir.

Örneğin, bu uygulamalar sayesinde insan emeğine gerek kalmadan yemek siparişi alınabilir veya teknik destek isteyen müşteri soruları anlaşılarak yanıt verebilir. 

Günümüzde sürekli kullandığımız bir çok uygulamada (Siri, Google Translate gibi) doğal dil işleme kullanılmaktadır.

  • Chatbotlar 
  • Sanal Asistanlar
  • Arama Motorları
  • Otomatik Çeviri Sistemleri
  • Yazım Düzeltme Programları

bu uygulamalardan bazılarıdır.

İşletmenizin alanına özel doğal dil işleme uygulaması geliştirmek istiyorsanız bize ulaşabilirsiniz.