Doğal dil işleme ya da kısaca NLP (Natural Language Processing), bilgisayarların insan dilini anlamasına, yorumlamasına ve işlemesine yardımcı olan bir yapay zeka dalıdır. NLP, insan iletişimi ve bilgisayar anlayışı arasındaki boşluğu doldurmak için bilgisayar bilimi ve bilişimsel dilbilimi dahil olmak üzere birçok disiplinden yararlanmaktadır.
İçindekiler
Doğal Dil İşlemenin Gelişimi
Doğal dil işleme yeni bir bilim dalı olmasa da insan-makine iletişimine artan ilginin yanı sıra; büyük veri kullanılabilirliği, güçlü bilgi işlem ve gelişmiş algoritmalar sayesinde teknolojiyi hızla ilerletmektedir.
Biz insan olarak Türkçe, İngilizce, Almanca, Çince ya da başka bir dilde konuşabilir ve yazabiliriz. Ancak bilgisayarın ana dili, makine kodu veya makine dili olarak bilinir. Cihazınızın en düşük seviyelerde iletişimi bile kelimelerle değil, milyonlarca 0 ve 1 ile gerçekleşir.
Bundan yaklaşık 70 yıl önce, programcılar ilk bilgisayarlarla iletişim kurmak için delikli kartlar kullandılar. Manuel olarak yapılan bu zorlu süreç çok az insan tarafından biliniyordu. Ama durum şimdi çok farklı: “Alexa, bu şarkıyı beğendim” dersiniz ve Alexa, “Tamam. Şarkıyı çalma listenize ekliyorum.” deyip sizin için bu şarkıyı kaydeder. Hatta size bir şarkı açarken bile kendi algoritmasını beğendiğiniz şarkıya göre uyarlar.
Şimdi bu etkileşime daha yakından bakalım. Cihazınız siz konuştuğunuzda sizi anladı, bir eylem gerçekleştirdi ve iyi biçimlendirilmiş bir dilde yaklaşık 5 saniye içinde size geri bildirim sağladı. Peki bu işlemler nasıl gerçekleşti? Bütün bu işlemler makine öğrenmesi ve derin öğrenme gibi yapay zeka alanlarıyla birlikle NLP sayesinde mümkün oldu.
Doğal Dil İşleme Sistemi Nasıl Çalışır?
NLP’nin uygulanması için yapılandırılmamış dil verilerinin bilgisayarların anlayabileceği bir forma dönüştürülmesi gerekir. Metin bilgisayara sağlandığında cümleleri parçalara ayırır, parçalar arasındaki ilişkileri anlamaya çalışır ve parçaların anlam yaratmak için birlikte nasıl çalıştıklarının araştırır. Bazen bilgisayar bir cümlenin anlamını iyi anlayamayabilir ve belirsiz sonuçlara yol açabilir.
Örneğin, 1950’lerde İngilizce ve Rusça dilleri arasında bazı kelimelerin çevirisi sırasında mizahi bir olay meydana geldi:
Çevrilmek istenen İncil cümlesi:
“Ruh istekli ama beden güçsüzdür.” (“The spirit indeed is willing, but the flesh is weak.”)
Bu cümlenin önce Rusçaya daha sonra tekrar İngilizceye çevrilmesinin sonucu:
“Votka iyi ama et çürümüş.”
Doğal Dil İşleme Hattının Oluşturulma Adımları
Adım 1: Cümle Segmentayonu
Bir doğal dil işleme hattında yapılacak ilk adım; verilen metni cümlelere ayırmaktır. Bunu yapmak bize şunları verir:
- “London is the capital and most populous city of England and the United Kingdom.”
(“London, İngiltere’nin ve Birleşik Krallığın başkenti ve en kalabalık şehridir.”) - “Standing on the River Thames in the south east of the island of Great Britain, London has been a major settlement for two millennia.”
(“Büyük Britanya adasının güney doğusunda Thames Nehri üzerinde duran Londra, iki bin yıl boyunca önemli bir yerleşim yeri oldu.”) - “It was founded by the Romans, who named it Londinium.”
(“Londinium adını veren Romalılar tarafından kuruldu.”)
Kod yazarken tüm paragrafı değil de cümleler halinde alırsak işler çok daha kolay ilerleyecektir.
Cümle segmantasyonu yaparken cümleleri noktalama işaretlerine göre ayırmak basit bir yöntemdir. Modern NLP hatlarında çok daha karmaşık teknikler kullanılır.
Adım 2: Kelime Tokenizasyonu
Artık dokümanı cümlelere böldüğümüze göre, bu cümleleri teker teker işleyebiliriz. Belgemizdeki ilk cümle ile başlayalım.
“London is the capital and most populous city of England and the United Kingdom.”
Hattımızdaki bir sonraki adım, bu cümleyi ayrı kelimelere ya da daha doğrusu “token” lara bölmektir. Buna tokenizasyon diyoruz. Sonuç:
“London”, “is”, “ the”, “capital”, “and”, “most”, “populous”, “city”, “of”, “England”, “and”, “the”, “United”, “Kingdom”, “.”
Tokenization işleminin İngilizcede yapılması gayet kolaydır. Cümleler boşluklara göre ayrılır. Ayrıca noktalama işaretlerinin de anlamı olduğu için ayrı simgeler olarak ele alıyoruz.
Adım 3: Her token için sözcük türü tahmini
Sıradaki adım olarak, her tokenın sözcük türünü tahmin etmeye çalışacağız – bir isim, bir sıfat ya da bir fiil vb. Cümledeki her kelimenin rolünü bilmek, o cümleyi anlamamızı kolaylaştıracaktır.
Bu işlemi, her kelimeyi önceden eğitilmiş bir sözcük türü modeline besleyerek yapabiliriz.
Bu bilgileri kullanarak bile bazı temel anlamlar çıkartabiliriz. Örneğin, yukarıdaki cümlede “London” ve “başkent” kelimelerini içerdiğini görüyoruz. Bu yüzden cümlede muhtemelen Londra’dan bahsediliyor.
Adım 4: Metin Lemmatizasyonu
İngilizce ve birçok dilde, kelimeler farklı formlarda görünür. Mesela şu iki cümleye bakalım:
Benim arabam vardı.
Benim arabalarım vardı.
Aslında iki cümlede de isim olan “araba” hakkında konuşuluyor ama farklı çekimlere sahip. Bir bilgisayarda metinle çalışırken her iki cümlenin de aynı kavramdan bahsettiğini bilmemiz için kelimenin yalın halini bilmemiz gerekmektedir. Aksi takdirde “arabam” ve “arabalarım” kelimeleri bilgisayar için tamamen iki farklı kelimedir.
NLP’de her kelimenin en yalın halini bulma işlemine lemmatizasyon diyoruz.
Aynı işlem, sadece kelimeler için değil, aynı zamanda filler için de uygulanabilir. “vardı” ve “varmış” fiilleri bilgisayar için yine iki farklı fiildir. Biz bu fiili, en yalın hali olan “var”a çevirmemiz gerekmektedir.
Yukarıdaki cümlede “is” fiili en yalın hali olan “be” ye dönüştürülecektir.
Adım 5: Stopwords Belirleme
Yapılacak son işlem ise, stopwords dediğimiz, en çok tekrar eden ve bir cümlede çok önem teşkil etmeyen kelimelerdir. Yukarıda örnekte görülen “is, the, and, most” gibi kelimeleri filtrelemek istatistiksel analiz yapmadan önce halledilmesi gereken önemli bir iştir.
Kullanım Alanları
Doğal dil işleme alanının, makine öğrenmesi ve derin öğrenme ile birlikte çok sayıda kullanım alanı vardır. En çok kullanılan alanlar ise:
- İçerik sınıflandırılması: İçinde arama,indeksleme (dizinleme) ve duplicate detection (yineleme algılama) içeren dil tabanlı belge özetidir.
- Makine çevirisi: Metin veya konuşmanın bir dilden diğerine otomatik çevirisidir.
- Speech-to-text ve Text-to speech dönüşümü: Sesli komutları yazılı metne dönüştürme veya tam tersi işlemidir.
- Duygu Analizi: Belirli bir metin içindeki ruh hali veya öznel görüşlerin belirlenmesidir.
- Belge özetleme: Otomatik olarak büyük metinlerin özetlenmesidir.