Blog

Doğal Dİl İşleme (Natural Language Processing)

Merhaba,

Yapay zekanın ve dil biliminin alt kategorisi olan “Doğal Dil İşleme” konusuna hoşgeldiniz. Bu flood içerisinde doğal dil işlemenin ne olduğu, ortaya çıkış noktası, aşamaları, uygulama adımları ve karşılaşılan zorluklardan araştırmalarım ışığında bahsediyor olacağım.

Doğal Dil İşleme, sesli ve yazılı olarak gündelik hayat içerisinde sürekli olarak kullanılmakta olan ve doğal dil olarak nitelendirilen Türkçe, İngilizce, Arapça gibi iletişim dilinin bilgisayar sistemleri tarafından algılanıp, işlenerek elektronik ortama taşınmasıdır. Bilgisayar teknolojilerinin gelişmesiyle birlikte günlük yaşamın bir parçası olan elektronik cihazlar bir çok konuda insan hayatına yardımcı ve destek olmaktadır. Yapay zekanın bir kolu olarak ifade edilen doğal dil işleme, kullanıldığı bir çok sistemde otomatize ve temassız işlemlerin yapılmasına olanak sağlamaktadır. Doğal dil işleme, yapay zeka teknolojilerinin ve dil biliminin ortak çalışmaları sonucunda ortaya çıkmış ve her geçen gün hızla gelişmeye devam etmektedir.

Doğal Dil İşleme günlük yaşam içerisindeki konuşmalardan, söylenen şarkılardan, metinlerden, mesajlardan, kitaplardan, reklamlardan ve daha bir çok kaynaktan veri işleme yapabilmektedir. Mobil cihazlarda bulunan akıllı asistanlar, online müşteri hizmetlerinde yer alan otomatik sesli yanıt ve yönlendirme sistemleri, konuşmaların metinsel yapıya çevrildiği sistemler, toplumsal güvenliğin sağlanması noktasında kişilerin konuşma ve sosyal medya paylaşımlarının analiz edilerek saldırı ve tehlike durumlarının önceden tespit edilmesi gibi bir çok alanda Doğal Dil İşleme teknolojisi kullanılmaktadır.

Yazı içeriğinin sadece belirli kısımlarını okumak isterseniz aşağıya bırakacağım içerik kısmından istediğiniz bölüme giderek okuyabilirsiniz.Ayrıca içeriğin daha detaylı halini PDF Dokümanlar   sayfasından pdf formatında indirebilir ve inceleyebilirsiniz.

 

 

1) Doğal Dil Nedir?
2) Doğal Dil İşleme
2.1) Ön İşlemler
2.2) Normalizasyon
2.3) Kelime Sınıflandırma Algoritmaları
2.4) Doğal Dil İşleme Süreçleri
2.5) Morfolojik Analiz
2.6) Syntactic Analiz (Söz Dizimsel Analiz)
2.7) Anlamsal Analiz – Semantic Analysis
2.8) Edimbilim ve Söylem Analizi
3) Doğal Dil Anlama
4) Doğal Dil Üretimi
5) Doğal Dil İşleme Zorlukları
6) Doğal Dil İşleme Faydaları
7) Güvenlik Alanında Doğal Dil İşleme
8) Doğal Dil İşleme Araç ve Arayüzleri
9) Zemberek Aracı
10) İTÜ Doğal Dil İşleme Yazılım Zinciri
11) NLPTOOLKİT
12) En İyi 8 Python NLP Kütüphanesi

 


Doğal Dil

Literatürde bir doğal dil kullanıcılar tarafından bilinçli bir planlama olmaksızın tekrar edilerek evrilmiş dil olarak tanımlanmaktadır. Doğal dil konuşma ve şarkı olarak incelenebilmektedir. Bu kapsamda arıların motifsel hareketleri ve balinaların çıkarttığı seslerin (şarkıların) doğal dil olup olmadığını halen araştırmacılar için tartışma konusudur. Doğal dil günlük yaşam içerisinde diğer insanlarla iletişim kurmak, hayatta kalmak ve bir takım sorunların üstesiinden gelmek maksadıyla kullanılan ana özelliklerden birisidir.

Doğal Dil sesli (konuşma, şarkı söyleme, ifade etme, belirtme vs.) ve yazılı (metin, mesaj, SMS, kitap, reklam, tabela, yönlendirme, uyarı vb.) olarak sürekli ve aktif bir şekilde kullanılmaktadır. Bir insan konuşarak ve yazarak tüm her şeyi ifade edebilmekte ve sosyal yaşamını sürdürebilmektedir.

Dil Bilimci ve Bilişssel Bilimci Noam Chomsky’a göre dil; sözcük ve cümle birimleri aracılığıyla düşünceyi konuşmayla ilişkilendiren çok seviyeli bir sistemdir.

Doğal Dil İşleme

Doğal Dil İşleme, doğal dilde oluşturulan bir metin veya konuşmadan anlam çıkarmayı ya da konuşma veya metni bilgisayar sistemleri tarafından hesaplamalı yöntemlerin kullanılarak hesaplanmasını hedefleyen bir yapay zeka koludur. Doğal dil işlemenin amacı yalnızca kurallı bir dil yapısının çözümlenerek anlaşılmasını olmayıp aynı zamanda çözümlenebilen bir dile ait yapının yeniden üretilebilmesini sağlamaktır. Doğal dil alanında yapılan çalışmalar doğrudan dil bilimiyle ilgili olduğu için her bir özel dil için ayrı ayrı çalışmaların yürütülmesi ve analiz süreçlerinin ayrışık bir biçimde yeniden yapılması gerekmektedir. Bu nedenle bir dil üzerinde yapılan doğal dil işleme süreçleri başka bir dile doğrudan aktarılamayabilir.

Doğal dil ile üretilen metin ve konuşmalar (ses) belirli ön işlemlerden sonra benzer metodlarla işlenmektedir. Yazılı metinler doğal dil işleme modüllerine uygun bir hale getirildikten sonra bilgisayar sistemleri tarafından doğrudan işlenip analiz edilmektedir. Konuşmalar (ses), elektromanyetik dalgaların algılanması ile elde edildikten sonra öncelikle ses verileri yazılı metinlere dönüştürülmektedir. Yazılı metinlere dönüşümü tamamlanan ses verileri bu metinler üzerinden gerekli modülasyon işlemlerine tabi tutulduktan sonra işlenip analiz edilmektedir.

Doğal dil işlenmesi sırasında metnin gereksiz ifadelerden ve noktalamalardan ayrıştırılması, morfolojik analiz, söz dizimsel analiz ve anlam bilimsel analiz adımları sırasıyla farklı yorumlayıcı sistemler tarafından yapılmaktadır. Bu sürece dilin matematiksel analiz süreci adı verilmektedir.

   (Doğal Dil İşleme Süreci)

Ön İşlemler

Doğal dil ön işleme adımlarından ilki sözcüksel analiz (lexical Analys), kelimerin yapısını tanımlamayı ve analiz etmeyi içermektedir. Bu süreç içerisinde bir dildeki sözcüklerin ve ifadelerin toplanması işlemlerin yapıldığı ifade edilmektedir. Sözcüksel analiz, bir metnin tüm yığınlarının daha küçük parçalara, paragraf, cümle ve kelimelere ayrıştırılması anlamına gelmektedir.

Sesli veya yazılı olarak bilgisayar sistemine girdi olarak verilen metin (corpus-derlem) genellikle doğal dilin spontane gelişmesi nedeniyle yazım kurallarından yoksun, yazım ve imla hatalarının epey fazla olduğu bir veri olmaktadır. Girdi olarak yazılım hatalarının ve sözcük dizimi hatalarının yer aldığı veriler doğrudan analiz işlemine tabi tutulmamaktadır. Ham veri analiz öncesinde bir takım ön işlemlerden geçirilerek daha sonra asıl doğal dil işleme modüllerinde işlenmek üzere hazır hale getirilmektedir. Sesli olarak alınan veriler öncelikle yazısal metinlere dönüştürülür. Elde edilen metinler sisteme eğitim verisi olarak verilmeden önce metin içerisindeki tüm harflar küçük harfe dönüştürülmekte ve metin noktalama işaretlerinden arındırılmaktadır. Daha sonra dört farklı ön işlem aşamasından geçirilen metinler doğal dil işlemenin asıl modüllerinde işlenmektedir. Bahsi geçen ön işlemler şunlardır;

  1. Tokenization: Corpus yapısının kelimelere veya cümlelere ayrılması olarak ifade edilebilmektedir. Metnin işlenebilmesi için kelimere (word2vec) veya gerektiği durumlarda cümlelere (Seq2Seq) ayrılması gerekmektedir. Bu aşamada bütün bir metni oluşturan her bir sözcük tek tek ayrılmaktadır. Makine Öğrenmesi ile elde edilen vektörlerin doğal dil işleme tarafından gelimenin doğru temsiz edilmelerini etkileyen üç temel etken vardır. Bu temel etkenler şunlardır:

    • Eğitimde Kullanılan Derlemin Büyüklüğü: Derlem büyüklüğünün artması kelime vektörleri nin ağırlıkları üzerinde yapılacak olan hata düzeltme işlemleri arttıracaktır. Dolayısıyla eğitim süreside artacaktır.

    • Eğitilen Vektörlerin Boyutu: Word2vec’te vektörlerin boyutu 300 ile 1000 arasında olacak şekilde belirlenmesi optimum verimlilik için tavsiye edilmektedir.

    • Komşu Kelimelerin Sayısı: Word2vec için 5 ile 10 komşuluk adetleri önerilmektedir.

  1. Stop Words: Metni işlemeye başlamadn önce uygulanması gereken ön işlemlerden biriside Stop Words’lerin (gereksiz kelimelerin) çıkartılmasıdır. Her doğal dil için Stop Words listesi farklıdır dolayısıyla her bir dil için ayrı ayrı oluşturulmaladır. Türkçe için bazı Stop Words’ler şunlardır: “hangi, acaba, ve, böylece, madem, elbette, kadar, ise, henüz, hem”. Daha Stop Word listesine çeşitli internet sitelerinden ve GitHub depolarından ulaşılabilmektedir.

  2. Stemming: Kelimelerin köklerine yönelik yapılan bir ön işlem uygulamasıdır. Aynı kökten türeyen kelimelerin farklı kelimeler olarak algılanmaması için Stemming işleminin yapılması gerekmektedir. Kelimelerin köklerini alma işlemi olarakta ifade edilebilmektedir. Türkçe için Zemberek uygulaması Stemming işlemini gerçekleştirebilmektedir.

  3. Named Entity Recognation (NER): Metin içerisinde yer alan özel isimlerin tespit edilmesi yönelik gerçekleştirilen bir ön işlemdir. Cümle içerisindeki kişi, organizasyon, yer isimleri ve tarihler gibi kelimeleri bulma işlemi olarak ifade edilebilmektedir.

Normalizasyon

Doğal dil işleme aşamaları arasında verinin analiz edilmesi sürecinde önemli bir etkiye sahip olan kelimelerin köklerinin tespit edilmesi işlemi olarak bilinmektedir. Ön işlemler arasında yer alan Stemming uygulaması bir normalizasyon yöntemidir. Yalnızca basit fiil formları ile çalışmaktadır ve kelimelerin eklerini kaldırarak sezgisel ilerleyen bir süreçtir. Kelimelerin köklerine erişilmesi sırasında kullanılan iki farklı yöntem bulunmaktadır.

  1. Stemming: Ek almış olarak bulunan kelimede ön eklerin ve son eklerin bulunduğu bir listeyi referans alarak kelimenin başlangıcını veya sonunu kesmeye çalışmaktadır. Stemming normalizasyon aşamasının amacı ön işlem olarak ek almış olan aynı kelimelerin köklerinin tespit edilmesi ve bu kelimelerin farklı kelimeler olarak anlaşılmasının önüne geçilmesi için gerçekleştirilmektedir. Türkçe için Zemberek uygulaması stemming işlemini yapabilmektedir.

  2. Lemmatization: Temel olarak lemme kelimesi sözlükteki bir sözcüğün kökü veya en basit biçimi olarak tanımlanmaktadır. Bu metodolojinin anahtarı dilbilimidir. Doğru lemmayı ortaya çıkarmak için kelimenin morfolojik analizine bakmak gerekmektedir. Bu normalizasyon işleminde her bir dile ait sözlüklere ihtiyaç duyulmaktadır.

 

(Zemberek Kök Ağacı)

Kelime Sınıflandırma Algoritmaları

Doğal Dil işleme ön işlemlerinden geçen metin kelime vektörleri haline getirildikten sonra sınıflandırıcı algoritmalar yardımı ile model oluşturulur. Oluşturulan bu model metin sınıflandırma uygulamalarında kullanılabilir. Bazı kelime sınıflandırma algoritmaları şunlardır:

  • Naive Bayes (NB)

  • Artifical Neural Networks (ANN)

  • K-Nearest Neighbor (KNN)

  • Logistic Regression

  • C4.5 Classfier

  • Multi-Layer Perceptron (MLP)

  • AdaBoost, Support Vector machine (SVM)

  • Random Forest (RF)

Kmeans algoritması girdi olarak verilen bir veri seti üzerinden belirli sayıda kümeyi gruplamak için geliştirilmiş en sadece ve basit algoritmadır. K-Means algoritmasında gruplarında belirlenmesinde şu adımlar izlenmektedir.

  1. Kelime koordinatlarının alınması, grup sayısının belirlenmesi ve başlangıç grup merkezlerinin belirlenmesi (centroid)

  2. Her kelimenin en uygun gruba atanması ve her atama işleminden sonra centroid’in tekrar hesaplanması

  3. Yeni oluşan grubun geçmişteki grup ile kıyaslanması ve grupta değişme yoksa algoritmanın sonlandırılması. Eğer değişim devam ediyorsa 2 adıma tekrar dönülmesi sağlanmaktadır.

Doğal Dil İşleme Süreçleri

(Doğal Dil İşleme Piramidi)

Morfolojik Analiz

Morfolojik analiz doğal dil işlemenin ana süreçlerinin başlangıcıdır. Köklerin analizi olarakta ifade edilmektedir. Bu aşamada verilen cümle boşluklar dikkat alınarak kelime kelime ayrılmaktadır. Daha sonra her bir kelime köklerine göre ve aldıkları eklere ayrılmaktadır. Morfolojik analiz sonucunda çıktı olarak her bir kelimenin kullanıldığı tüm durumlar gösterilmektedir. Dolayısıyla bir kelime için birden fazla sonuç elde edilebilmektedir.

Muğlaklık Giderici, morfolojik analiz sonucunda elde edilen çıktının işlenmesiyle bir kelimenin birden fazla olan kullanımları arasında en yaygın durumu seçmektedir. Kelimenin en çok kullanılan ve doğru olan kullanımı sonuçlar arasında en üstte yer almaktadır.

(Morfolojik Analiz)

Syntactic Analiz (Söz Dizimsel Analiz)

Morfolojik analiz sonuç çıktıları kullanılarak cümle içerisindeki kelimelerin ve kelimeler arasında ilişkinin analizinin yapıldığı süreçtir. Cümle içerisindeki kelimelerin dizilişinin incelendiği aşama olarakta ifade edilebilmektedir. Özne, yüklem, nesne vb. cümle öğelerinin ayrıldığı aşamadır. Bir kelimenin cümle içerisindeki konumuna göre anlamının değişmesi muhtemeldir. Dil algılayabilen sistemler oluşturmak için Sözdizimsel Analiz ilk adım olarak mutlaka gerekli görülmektedir.

(Sözdizimsel Analiz)

Türkçe Karakter Dönüştürücü

Türkçe karakterler içeren metinlerin Türkçe karakterlerden arındırmak yada Türkçe karakterlerden arındırılmış bir metnin Türkçe karakterlerini geri kazandırmak için kullanılmaktadır. Bu araç, bir metni Türkçe karakterleden arındırmak için oldukça basit bir yol takip etmekte ve her bir Türkçe karaktere karşılık gelen Latince karakterlere dönüştürmektedir. Örneğin; ç harflari c harfine çevrilirken, ı harfleri i harfine çevrilmektedir.

Bir metne Türkçe karakterleri geri kazandırmak için ise araç iki farklı metod içermektedir. Bu yöntemlerden birincisi basit geri dönüştürücüdür (Simple Deasciifier). Bu yöntem bir kelimenin var olabilecek bütün Türkçe karakter karşılıklarını oluşturmakta ve bu seçeneklerden biçimbirimsel olarak çözümlenebilen bir tanesini rassal olarak seçip sonuç olarak sunmaktadır. Örneğin; cocuk kelimesi için, basit geri dönüştürücü cocuk, çocuk, coçuk ve çoçuk seçeneklerini oluşturacak fakat sadece çocuk çıktısı biçimbirimsel olarak çözümlenebileceği için “çocuk” kelimesi çıktı olarak sunulacaktır.

Diğer yöntem ise n-karakter geri dönüştürücü yöntemidir (ngram deasciifier). Bu yöntemde ise, yine her bir kelime için ilk yöntemdeki gibi bir aday listesi oluşturulur ve sonrasında her bir kelimenin Türkçe’deki n-karakter olasılıkları hesaplanarak en muhtemel aday çıktı olarak sunulmaktadır.

Birimlendirici | Cümle Bölücü

Serbest metnin cümlelerinin/birimlerinin saptanması amacıyla kullanılmaktadır. Bu bileşen kural tabanlı olarak çalışmaktadır. Girdi olarak verilen metni daha önceden belirlenmiş bir kural kümesini takip ederek cümlelere ve birimlere ayırmaktadır. Bu kurallar kümesi bir sonraki karakterin büyük/küçük harf olması durumu gibi cümle düzeyinde kurallar içerdiği gibi, bir girdinin Türkçe’deki yaygın kısaltmalar arasında olup olmadığını kontrol etmek gibi dil düzeyinde kurallar da içermektedir. Birimlenrici, girdi olarak serbest bir metin alarak daha sonra çıktı olarak birimlerine/cümlelerine ayrılmış bir cümle kümesi vermektedir.

Yazım Denetleyici

Girdi olarak alınan metin içerisindeki yazım hatalarını tespit ederek düzenlemeleri gerçekleştiren bir bileşendir. Her bir kelime için hatayı tespit ettikten sonra olası doğru aday kelimeler arasından uygun seçimi yapmaktadır. Basit yazım denetleyici ve n-karakter yazım denetleyici olmak üzere iki farklı yazım denetleyici içermektedir.

  • Basit Yazım Denetleyici (Simple Spell Checker): Basit geri dönüştürücü bileşen ile benzer bir metod kullanılmaktadır. Girdideki her kelime için her karakter gezildikten sonra bu karakter olası bütün karakterlerle değiştirilerek mümkün olabilecek bütün kelime ihtimalleri oluşturulmakta ve bunlardan biçimbilimsel olarak çözümlenebilenlerden bir tanesi rassal olarak seçilmektedir.

  • N-Karakter Yazım denetleyici (Ngram Spel Checker): Benzer olarak n-karakter geri dönüştürücü ile aynı mantık üzerinden hareket etmektedir. İlk olarak, basit yazım denetleyicide olduğu gibi kelimeler için aday listeleri hazırlanır. Daha sonra ise n-karakter modelinden bu adayla için olasılıklar hesaplanarak, her kelime için olasılığı en yüksek olan aday çıktı olarak verilmektedir.

Biçimsel Çözümleyici – Belirsizlik Giderici

Verilen girdinin çözümlenmesi işlemini gerçekleştirir, sonrasında ise bu çözümlemedeki belirsizlikleri gidermektedir. Örneğin; “Yarın doktora gidecekler.” cümlesinde biçimbilimsel çözümleyici her kelime için farklı çözümlemeler bulacaktır. “Yarın” kelimesi için olası iki çözümleme anlamı mevcuttur. Bunlar ertesi gün ve ikinci yada üçüncü tekil kişinin yarısı şeklinde olabilir. Biçimbillimsel belirsizlik giderici, bu belirsizliği ortadan kaldırarak Yarın kelimesi için ertesi gün anlamına gelen çözümlemeyi çıktı olarak vermektedir.

Türkçe dil kurallarından oluşan bir sonlu druum makinesi kullanılarak verilen metin çözümlenmektedir. Girdi için olabilecek belirsizlikler düşünülmeden olası bütün çözümlemeler verilmektedir. Girdi olarak çözümleme listesi almakta ve belirsizliği gidererek sadece doğru çözümlemeleri verir. Bu bileşen n-karakter modeller kullanmaktadır. Kelimeler ve çözümlemeleri için iki ayrı modelden faydalanılmatkadır. Öncelikle, her çözümleme için kelime ve çözümlemesinin n-karakter olasılıkları hesaplanarak en iyi kök kelime seçilmektedir. Sonrasında, çözümlemeler bu kökü içerenlere indirgenmektedir. Son olarakta kalan bu çözümlemelerden n-karakter modeline göre en olası olanlar bulunmakta ve üstlerde yer alacak şekilde çıktı olarak sunulmaktadır.

Anlamsal Analiz | Semantic Analysis

Anlamsal analiz aşamasında kelime ve cümle aşamalarından geçmiş olan veriler üzerinden cümlelerin tek bir bütün olarak hangi anlama geldiğinin tespit edilmesi aşaması gerçekleştirilmektedir. Metinin anlamlandırılması için öncesinde metin içerisindeki kelimelerden veya sözlükten toparlanan kelimelerin tam anlamını veya sözlük anlamını sistem üzerinde oluşturulması gerekmektedir. Temel olarak sözdizimsel yapıların ve nesnelerin eşleştirilmesiyle yapılmaktadır. Anlambilimsel çözümleyici, “sıcak dondurma” gibi cümleleri göz ardı etmektedir. Anlamsal analiz aşamasında doğal insanların yapacağı gibi yorumlanmaya çalışılmaktadır. Varlıkları tanımlayan çeşitli verileri vehedef alandaki belirli kavramları ve aralarındaki ilişkileri bütünleştirmektedir. Cümleler arasındaki anlamları birbirlerine entegrasyonu aşamasına Açık Entegrasyon (Söylem Bütünleşmesi) adı verilmektedir. Varlık İsmi Tanıma ise kişi, yer, organizasyon gibi önceden tanımlanış kategorilerin metin dokümanları üzerinden çıkarılma işlemi olarak ifade edilmektedir.

Edimbilim ve Söylem Analizi

İngilizce “Pragmatics and Discourse Analysis” olarak ifade edilmektedir. Söylem ve söylem analizi arasında bazı farklar mevcuttur. Söylem(Discourse), sözdizimi ve anlam bilimi tümce bazında çalışmaktadır. Söylem analizi ise birden çok cümle üzerinde çalışmaktadır. Sözcük ve cümleleri kullandkları bağlam içerisinde değerlendirmektedir. Sırasıyla sözcükler, cümleler, paragraflar ve dokümanlar olarak sıranabilmektedir.

Birden fazla cümleden oluşan yazılı veya sözlü söylemler incelenmektedir. Bu aşamada cümleler arasındaki ilişkiler ortaya çıkarılmaktadır. Örnek bir cümle üzerinden incelemek gerekirse şu şekilde olacaktır. “Feribot hareket halindeyken araçlara binmek yasaktır” cümlesi 3 farklı açıdan yorumlanabilmektedir.

  1. İlçede feribot duruyorsa araçlara binilebilir.

  2. Bu ilçede feribot yoksa araçlara binilmez.

  3. Bu ilçede feribot hareket halindeyken araçlar boştur.

Şeklinde bir cümle içerisinden çıkartılabilecek üç farklı anlamı sıralayabilmekteyiz. Geleneksel olarak kalıplaşmı bazı ifadelerde bu aşamada problem çıkarabilmektedir. Örneğin bir kişiye saatin kaç olduğu sormak isterken “Saatiniz var mı?” gibi geleneksel ve kalıpsal bir soru ifadesi kullanılabilmektedir. Bu ifadeye verilmesi gereken normal cevap “Evet saatim var” yada “Hayır saatim yok” şeklinde olması beklenirken, bu soru ifadesinde asıl sorulan durum o anki saat bilgisini öğrenmek amacıyla yöneltilmiş bir soru yöneltme durumudur.

Edimbilim (pragmatics) bir kelimenin hangi alanda ne anlama geldiğinin bilinmesi gerekmetkedir. Cümle içerisinde kullanılmakta olan bir kelime farklı branşlarda farklı anlamlara gelebilmektedir. Doğru bir analiz sonucu üretilebilmesi için kelimelerin terminolojik anlamlarının bilinmesi gerekmektedir.

  • Kişi: Ahmet çok güzel piyano çalar.

  • Sistem: Çalma fiilini hırsızlık olarak yorumlarsa Ahmet adlı kişi hakkından hatalı bir kanıya varmış olacaktır.

  • Ev sahibi: Öğrenci misiniz?

  • Kiracı: Evet. Yüksek Lisans yapıyorum.

  • Ev sahibi: Allah muvaffak etsin.

  • Kiracı: Bir de bağlama çalmayı öğreniyorum.

  • Ev sahibi: Bu kötü.

Doğal Dil Anlama

İngilizce Natural Language Understanding (NLU) olarak ifade edilen doğal dil anlama, doğal işleme terminolojisinin bir alt kümesidir. Doğal dil anlama, doğal dil işleme araştırmacıları tarafından zor bir alt küme olarak kabul edilmektedir. Doğal dil anlama, yazılı metnin arkasındaki anlamı çıkartabilmek amacıyla girdi verilerini yapılandırmak için çalışmaktadır. Burada ifade edilmek istenen makinelerin bir insan gibi davranış sergilemesi ve önüne getirilen bir metinsel ifadeyi yorumlama yeteneği kazandırılmaya çalışılmasıdır. Sesli yanıt sistemlerinde kullanılan sesli girdiler, cihaz tarafından elektromanyetik dalgaların algılanmasının sonrasında yazılı ifadeye çevrilmekte ve NLU tarafından bu metin anlamı çözülmek üzere işleme alınmaktadır. Doğal dil algılama sistemlerine girdi olarak verilen metinlere içerisinde farklı kelimelerin aynı veya farklı anlama sahip ifadelerin yer alması, kelimeler arasındaki ilişkilerden dolayı anlamın değişmesi, üzerinde analiz yapılan dil kurallarının ve yapısının tam olarak bilinmesi gibi durumlar doğal dil işleme sistemlerinin karşılaşmış olduğu zorluklardan bazıları olarak ifade edilmektedir.

Doğal Dil Üretimi

İngilizce Natural Language Generation (NLG) olarak ifade edilen doğal dil üretimi, doğal dilin anlaşılması ve analiz edilmesinde sarf edilen enerjinin doğal dil kurallarına uygun olarak dil üretilmesi, ifade oluşturulması için sarf edilmesi anlamına gelmektedir. Doğal dil üretimi, doğal dil anlama tarafından yapılandırılmış verileri insan tarafından anlaşılabilir bir dile dönüştürmek amacıyla işlem yapmaktadır. Dolayısıyla doğal dil üretimi, doğal dil anlama sürecinin tam tersini ifade etmektedir.

Mobil cihazlarda yer alan sessli girdilere sesli yanıt üreten asistan uygulamalar bu süreçlere en iyi örnektir. Bu uygulamalar sesli olarak aldıkları girdileri doğal dil anlama süreciyle dönüşümünü yapıp analizleri gerçekleştirdikten sonra çıktı olarak verilmesi gereken cevabı üretir ve insanların anlayabileceği bir forma dönüştürmek amacıyla doğal dil üretimi sürecini kullanmaktadır. Aşağıdaki diyaloglar Doğal dil anlama ve Doğal dil üretme süreçlerine örnek niteliğindedir.

  • Hey Siri, Bursa’da hava durumu nasıl?

  • Bursada hava durumu sağanak yağışlı ve yer yer bulutlu.

  • Bursa-Antalya arası kaç kilometre?

  • Bursa – Antalya arası 571 kilometredir.

Doğal dil üretimi öncesinde şablonlardan dinamik cümle oluşturma yaparken şimdilerde Doğal Dil Üretimi, insan enzeri metinler üretebilmekte olan belirli bir dizi algoritmaya dayanmaktadır. Bu algoritmalar şunlardır;

  • Markov Zinciri

  • Tekrarlayan Sinir Ağı (RNN)

  • Uzun kısa süreli bellek (LSTM)

  • Transformatör

 

Doğal Dil İşleme Zorlukları

Doğal dil sürekli gelişmesi, değişmesi ve mutasyona uğramöası bakımından canlı bir varlık gibi görülmektedir. Tek bir dilin farklı coğrafyalarda, farklı ortamlarda bir çok kulalnım çeşidi bulunmaktadır. Bir doğal dile ait herhangi bir kelime veya ifade aynı dil içerisinde birden fazla karşılığa sahip olabilmektedi ve durumsal farklılıklara göre anlamsal farklılıklar göstermektedir.

Bir kelimenin cümle/ifade içerisinde ki yerinin değişmesiyle anlatılmak istenen temek ifade çok farklı bir ifadeye dönüşebilmektedir. Gündelik konuşmalarda kelimelerin cümle içerisinde doğru kullanım oranı daha düşüktür. Aktif konuşma sırasında doğru kelimenin seçilememesi bilgisayar programları açısından karmaşıklığa ve yanlış anlam çıkarımına sebep olabilmektedir. Bazı dillerde dil yapısı gereği topnlama, vurgu ve sesteki uzatmalar anlamı değiştirebilmektedir. Örneğin, Arapçada vurgu ve uzatma bir kelimenin zaman çekimleri ve anlamlarını etkilemektedir. Türkçe’de eşsesli kelimelerin veya hem fiil hemde isim olarak kullanılabilen kelimelerin doğru bir şekilde işlenmesi zordur. Aynı zamanda doğal dilde yer alan belirsizlikler (Ambiguity) doğal dilin bilgisayar sistemleri tarafından anlaşılabilirliğini zorlaştırmaktadır.

  • Lexical: Kelime köklerine gelen eklerin anlaşılamamasıdır. Bazı dillerde bir kelimeye birden fazla ek getirilebilmektedir.

  • Syntactic: Bir kelime cümlenin farklı yerlerinde farklı anlamlarda kullanılabilmektedir. Bu noktada anlam karmaşası yaşanabilmektedir.

  • Pronouns: Zamirlerin hitap ettiği nesnelerin anlaşılması noktasında problem olabilmektedir.

  • Context: Kelime farklı alanlarda birbirindenf arklı anlamlara gelebilir. Bazen bir cümle yerine/duruma göre birden fazla anlam kazanabilmekte ve birden fazla durumu ifade edebilmektedir. Bazende bu durumun tam tersi şekilde bir çok cümle aynı ifadeyi temsil edebilmektedir.

  • Kuralsız ve anlaşılmaz konuşmalar (sa. Inş. Konuyu çakmışsınızdır.)

  • Kuralsız ve bozuk yazılar (bbu yazılkarımı algoritmalar düzeltrebiliyor.)

  • Konuşmayı bölme (Birden fazla cümle var durmadan konuşmak zor değil mi?)

  • Metni Bölme (Paragraflardan anlama, bağlama uygun cümleler oluşturmak)

  • Anlam belirsizliklerini giderme (Aralıkta yapılacak toplantının yeri değişti.)

Doğal Dil İşleme Faydaları

  • Yazım yanlışlarının kolayca düzeltilmesi.

  • Yazılı dokümanların bir dilden başka bir dile yarı otomatik olarak çevrilmesi.

  • Soru-Cevap Makineleri (Bir veritabanına SQL syntax ile değilde, bir doğal dil ile sorgu yöneltme ve sistemin bunu çözümleyerek bir SQL sorgusuna çevirdikten sonra sonuçları kullanıcıya vermesi)

  • Bilgisayar yardımıyla dil öğrenmek

  • Doğal dilde cümle ve metin üretmek

  • Bilginin enformasyonun getirilmesi (Aranan bir bilginin sözel olarak sisteme yöneltilmesi ve bilginin metinler içerisinde aranarak bulunması ve kullanıcıya sunulması.)

  • İnternette doğrudan arama yapılması ve sonuçların getirilmesi. (“Sakarya ile Bursa arası kaç kilometredir?”)

  • Yardımcı Asistan Uygulamalar. Sesli girdilere sesli çıktı veren uygulamalar. (Siri, Alexa.)

  • Metinlerin işlenmesi ve gruplandırılması.

  • Finansal ve istatistiksel raporlamarın yapılması.

  • Chat ortamlarında otomatik yanıt sistemlerinin kullanılması. (Bankacılık ve müşteri destek ortamları. Talla gibi)

  • Metinlerin özetini çıkartan yazılımların kullanılması. Aranan bilgi 1.000.000 tane kaynak içerisinde tespit edilirse bunların özetinin bir rapor olarak çıkartılması işlemi.

  • Argümanların birleştirilmesi ve raporlanması. Sosyal ağlar gibi ortamlarda gerçekleşen yazışmaların analiz edilerek kişilerin taraflarının belirlenmesi hatta tarafsal haritanın çıkartılması. Kimlerin hangi ifade ve görüşü savunduğunun tespit edilmesi. Kimlerin birbiriyle ilişkili olduğunun tespit edilmesi.

Güvenlik Alanında Doğal Dil İşleme

Doğal dil bir çok alanda insana fayda sağladığı gibi toplumsal ve bireysel güvenliğin sağlanması hususunda önceden tespit etme, tedbir alma veya olay sonrası hızlı analiz yapabilme, yalan makinesi gibi uygulamalar içinde fayda sağlamaktadır. Kişilerin siber zorbalık mağduru olduğunun tespit edilmesi, saldırgan eylemlerin öncesinde kişinin sosyal medya paylaşımlarının otomatik olarak incelenmesi ve saldırgan eylemin öncesinde tespit edilmesi gibi uygulamaların gerçekleştirilmesi söz konusudur.

  • Sosyal medya üzerinden yapılan analizlerde (atılan tweetler, gönderi açıklamaları ve yorumları, karşılıklı atışma ve tartışmalar vb.) kişilerin tehlike altında olup olmadığının veya saldırgan bir eylem planı içerisinde olup olamayacağının tespitleri yapılabilir. Kısacası kişilerin interaktif ortamlardaki söylemleri (sesli ve yazılı) işlenip, analiz edilip bir sonuç çıkarımı yapılarak toplumsal düzen ve güven ortamına katkıda bulunulabilir.

  • Firmalar hakkında sosyal medya üzerinde yazılan yorum ve ifadelerin firmaya karşı bir hakaret, kötü söylem, yalanlama, iftira vs. gibi durumlar söz konusu olursa bunların tespit edilmesi.

  • Toplumsal duygu analizinin yapılması.

  • Chatbot türevi olan Woebot uygulaması kullanıcıları ile bir terapist gibi yazışmalar yaparak kişinin psikolojik durumu hakkında çıkarımlar yapabilmektedir. Bu durum toplumsal güven ve politik stratejiler amacıyla kullanılabilmektedir.

Doğal Dil İşleme Araç ve Arayüzleri

Doğal dil işleme alanında çok sayıda araç ve arayüz geliştirilmiştir. Bir çok dili destekleyen açık kaynaklı ve popüler araçlar şunlardır:

  • Programlama Arayüzü Sunan

    • SpaCy

    • NLTK [2]

    • Stanford CoreNLP

  • Kullanıcı Arayüzüde Sunan

    • Princeton WordNet

  • Türkçeye Özgü Olan Araçlar

    • Zemberek (Programlama Arayüzü Sunmaktadır.)

    • ITU Türkçe Doğal Dil İşleme Yazılım Zinciri (ITU Turkish NLP Pipeline)

Zemberek Aracı

Türkçeye özgü olan ve programlama arayüzü imkanı sağlamakta olan Zemberek doğal dil işleme aracının temel işlevleri şunlardır:

  • Yazım denetleyici (spell checker)

  • Biçimbilimsel çözümleyici (Morphological Analyzer)

  • Türkçe karakter dönüştürücü (asciifier / deasciifier)

  • Birimlendirici (Tokenizer)

Zemberek aracı açık kaynak kodlu olup çeşitli doğal dil işleme bileşenlerinden oluşan bir yazılım kütüphanesidir. Kullanıcı arayüzü bulunmadığından kullanıcı kitlesi yazılım geliştiricilerden oluşmaktadır.

İTÜ Doğal Dil İşleme Yazılım Zinciri

Online bir platform olarak sunulmakta olan hizmete açık özellikleri mevcuttur. Çevrimiçi kullanıcı arayüzü sunmasına rağmen, açık kaynak kodlı olmadığı için bu araçları değiştirmek ve geliştirmek mümkün değildir. Bu program hem bir web arayüzününe hemde bir uygulama programlama arayüzüne (API) sahip olduğundan farklı seviyelerdeki kullanıcılar bu platformdan faydalanabilmektedir. İTÜ Doğal Dil İşleme yazılım zincirinin temel işlevleri şunlardır:

  • Türkçe Karakter Dönüştürücü (Asciifier // Deasciifier)

  • Birimlendirici / Cümle Bölücü (Tokenizer / Sentence Splitter)

  • Yazım Denetleyici (Spell Checker)

  • Biçimbilimsel Çözümleyici (Morphological Analyzer)

  • Belirsizlik Giderici (Disambiguator)

  • Varlık ismi tanıma (Named Entity Recognizer)

  • Bağımlılık Çözümlemesii (Dependecy Parser)

NLPTOOLKİT

NLPTOOLKIT, türkçe versiyonunun bir çok bileşeni teknik nedenlerden dolayı kısıtlıdır. Hem açık kaynak kodlu olup hem de çevrimiçi kullanıcı arayüzüne sahiptir. Dolayısıyla bir yandan geliştiricilere bu araçları geliştirme ya da kendi projelerinde kullanma imkanı verirken öte yandan arayüzü ile yazılım alt yapısı olmayan kullanıcıların bu araçlardan faydalanmasına imkan tanımaktadır. NLPTOOLKIT temel bileşenler şunlardır:

  • Türkçe karakter dönüştücü (Asciifier // Deasciifier)

  • Birimlendirici / Cümle Bölücü (Tokenizer / Sentence Splitter)

  • Yazım Denetleyici (Spell Checker)

  • Biçimbilimsel Çözümleyici (Morphological Analyzer)

  • Belirsizlik Giderici (Disambiguator)

En İyi 8 Python NLP Kütüphanesi

  1. Natural Language Toolkit (NLTK) (nltk.org/)

  2. TextBlob (textblob.readthedocs.io/en/dev/)

  3. CoreNLP (stanfordnlp.github.io/CoreNLP/)

  4. Gensim (github.com/RaRe-Technologies/gensim)

  5. spaCy (spacy.io)

  6. polyglot (polyglot.readthedocs.io/en/latest/index.html)

  7. scikit-learn (scikit-learn.org/)

  8. Pattern (clips.uantwerpen.be/pages/pattern)

 

 

Kaynaklar

[1] J. Y. Chai and A. Biermann, “The use of lexical semantics in information extraction,” in Proceedings of the ACL Workshop on Natural Language Learning, 1997.

[2] R. Basili, M. T. Pazienza, M. Vindigni, P. Bank et al., “Corpusdriven learning of event recognition rules,” in In Proceedings of Machine Learning for Information. Citeseer, 2000.

[3] E. Agichtein and V. Ganti, “Mining reference tables for automatic text segmentation,” in Proceedings of the tenth ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2004, pp. G. Şahin, “Turkish document classification based on Word2Vec and SVM classifier,” in 2017 25th Signal Processing and Communications Applications Conference (SIU), 2017, pp. 1–4 20–29.

[4] Khan Aurangzeb et al. A review of machine learning algorithms for textdocuments classification. J Adv Inform Technol 2010;1(1):4–20.

[5] D. M. Bikel, S. Miller, R. Schwartz, and R. Weischedel, “Nymble: a high-performance learning name-finder,” in Proceedings of the fifth conference on Applied natural language processing. Association for Computational Linguistics, 1997, pp. 194–201.

[6] V. Borkar, K. Deshmukh, and S. Sarawagi, “Automatic segmentation of text into structured records,” in ACM SIGMOD Record, vol. 30, no. 2. ACM, 2001, pp. 175–186.

[7] K. Seymore, A. McCallum, and R. Rosenfeld, “Learning hidden markov model structure for information extraction,” in AAAI- 99 Workshop on Machine Learning for Information Extraction, 1999, pp. 37–42.

[8] Celik. D, Karakas. A, Bal. G, Gultunca. C, Elci. A, Buluz. B, Alevli. M.C.” Towards an Information Extraction System Based on Ontology to Match Resumes and Jobs” Computer Software and Applications Conference Workshops (COMPSACW), 2013 IEEE.

[9] Sak, H., Güngör, T. ve Saraçlar, M. “Resources for Turkish Morphological Processing”, Bildiri, 5221,417-427,2008

[10] İ. SEL, D. HANBAY, E-Mail Classification Using Natural Language Processing, 2019 27th Signal Processing and Communications Applications Conference (SIU);2019

[11] Hongjia Ren, Xianchang Wang, “Scalable Structure Learning of K-Dependence Bayesian Network Classifier”


Not: Bilgi paylaştıkça çoğalır. Paylaşırken kaynak gösterirseniz sevinirim.

Teşekkür ederim.

Doğal Dİl İşleme (Natural Language Processing)” üzerine 2 yorum

  1. Hocam elinize sağlık benim bir sorum olacak doğal dil işleme teknikleri yabancı dil öğretme üzerine nasıl kullanabilirim? Teşekkürler

    1. Merhaha,
      Öncelikle doğal dil işlemenin tam olarak ne olduğunu, hangi alanlarda ne şekilde kullanıldığını anlamanız gerekiyor. Daha sonra sorduğunuz sorunun cevabını kendiniz anlayacaksınız. Bu noktada doğrudan bir algoritma (sözde) verebilmem hak verirsiniz ki çok zor.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir