7 Şubat 2024 |

Doğal Dil İşleme (NLP) Nedir?

NLP (Natural Language Processing), Türkçe ismiyle Doğal Dil İşleme (DDİ), yapay zekanın altında yer alan ve amacı insanların ürettiği doğal dilin işlenebilmesi, anlaşılabilmesi, analiz edilerek çıktılara dönüştürülebilmesini sağlayan bir metin analitiği ve araştırma alanıdır.

Günlük hayatta sıkça başvurduğumuz akıllı asistanlar, dil çeviri uygulamaları, çağrı merkezlerinde kullanılan IVR (sesli yanıt) uygulamaları arkasında Doğal Dil İşleme teknolojilerini barındırmaktadır.

Bunlarla beraber en önemli kullanım alanlarını, Müşteri Memnuniyeti Analizi, Chatbot Konuşma Analizi, Sosyal Medya Analizi, Anlamsal Arama gibi çalışmalar oluşturmaktadır. 

 

Dilbilimin Alanları

Bir doğal dile ait tüm çalışmalar dil biliminde 6 başlıkta değerlendirilmektedir. Bu başlıklar şu şekilde sıralanabilir;

  1. Fonetik (Phonetics): İnsanların dili konuşurken ne gibi sesler kullandıkları, bu seslerde ne gibi örüntüler bulunduğu ile ilgilenen alan
  2. Fonoloji (Phonology): Dili meydana getiren ses birliktelikleri ile ilgilenen alan
  3. Morfoloji (Morphology):  Dildeki kelimelerin yapılarını inceleyen, anlam ifade eden en küçük kısmından (kökünden) itibaren hangi eklerle ve hangi durumlarda nasıl anlamlar kazandığı ile ilgilenen alan
  4. Söz Dizimi (Syntax): Cümle yapıları ile, sözcük grupları veya cümleler oluşurken kelimelerin hangi dizilimlerle bir araya gelebileceği ile ilgilenen alan
  5. Anlam Bilim (Semantics): Cümleler, cümle ögeleri, kelimeler, hatta kelime kökleri/eklerinin ve bunların bir araya geliş durumlarının anlamı nasıl etkilediği ile ilgilenen alan
  6. Edim Bilim (Pragmatics):  Niyetin ve bağlamın ifadenin anlamı üzerindeki etkisi ve ifadelerin dilin kullanımı sırasında kazandığı anlamlar ile ilgilenen alan

 

Doğal Dil İşleme (NLP) Adımları

Doğal dil işleme

Doğal dil işleme nedir sorusunun cevabını öğrendikten sonra doğal dil işleme adımlarından da bahsetmek önemli olacaktır. Doğal dil işlenirken günlük kullanımda olan bir ifade veya metnin sistematik kurallı bir metne çevrilmesi için pek çok aşamadan geçirilmesi gerekmektedir.

 

Konuşmayı Yazıya Dönüştürme (Speech-to-Text)

Ses kaydı olarak elde edilen bir ifadenin yazılı biçime dönüştürülmesidir. Yazıya dönüştürme algoritmalarında NLP alanının desteği sinyal işleme algoritmalarının tespit ettiği sesleri dil modeli üzerinde işleyerek en seslerle oluşturulabilecek en olası kelime ve cümleleri oluşturmaktır. Konuşmayı yazıya dönüştürme NLP kullanımına şu tarz durumlar örnek olarak verilebilir:

  • Yazıldığı şekilde okunmayan dillerde aynı seslerle telaffuz edilebilir kelimeler içinden cümle akışına göre en uygun anlamlı kelimenin seçilmesi,
  • Yazıldığı şekilde okunan dillerde algılanan sesler belirli bir kelimeye tekabül etmiyorsa veya bulunan kelime metnin anlamsal uyumunu bozuyorsa benzerlik algoritmalarından da destek alınarak en uygun olası kelimenin seçilmesi,
  • Konuşmanın kalitesinin kelimelerin çıkışlarını sinyal işleme algoritmalarıyla ayırt etmeye yetmediği durumlarda, harfler dizisinin en uygun noktalardan bölünerek sıralı kelimeler haline getirilmesi.

 

Dil Tespiti (Language Detection)

Bir metnin hangi dilde yazılmış olduğunun otomatik tespit edilmesidir. Bu işlemin yapılabilmesi için yaygın kullanılan çeşitli yöntemlerden bazıları alttaki gibidir:

  • Dil biliminin çıkarımsadığı dil kuralları kullanılarak metnin hangi dil olduğunun kural tabanlı bir sistemle belirlenmesi
  • Bir dile ait çok sayıda veriden oluşan bir veritabanında ngram analizi yapılarak test edilecek veride geçen kelime ve kelime gruplarının bu dilde kullanılanlarla uyumunun ölçülerek skorlanması
  • Yapay zeka algoritmaları yardımıyla her dil bir sınıf olacak şekilde eğitilen modellerin kullanımı

Ngram analizi, bir metin içinde art arda gelen kelimeler veya harfer dizisinin sıklıklarını dikkate alarak genellikle metin içinde hangi örüntülerin sıklıkla geçtiğini belirlemek için yapılan analizlerde kullanılır. 

Ngramlar aynı zamanda kelime dizilimlerinin önemli olduğu bazı NLP görevlerinde terim olarak kelimeler yerine kullanılır. N-gram kelimesindeki N kelime sayısını ifade eder. Mesela 1gram analizinde ‘bulaşık’ ve ‘makine’ kelimeleri ayrı ayrı dikkate alınırken 2gram analizinde ‘bulaşık makinesi’ ikilisinin ayrı bir anlamı ve kullanım alanı olduğu bilgi olarak eğitilecek modele otomatik olarak aktarılmış olur. 

Kullanım alanına bir örnek verecek olursak da 1gramlarla sadece terimin geçip geçmediğini dikkate alan bir duygu modeli eğitildiğinde ‘kötü değil’ ifadesi olumsuz olarak sınıflandırılacakken 2gramlar bu eğitimde terim olarak kullanılsa bu ifadenin bütün olarak olumlu anlamı olduğu rahatça model tarafından anlaşılabilecektir.

 

Karakter Düzeltme (Declassification)

Türkçe karakter kullanılmadan yazılmış ifadelerdeki bu karakterlerin doğru Türkçe versiyonları ile değiştirilmesidir. Bu işlem yapılırken Türkçe’nin yapısal özelliklerinden faydalanılmaktadır. 

Dilimizde bulunan en temelleri küçük ünlü uyumu, benzeşme vb. Olan yapısal kurallara uyum kontrol edilerek karakterlerde düzenleme yapılması en genel yöntemdir. Bu kurallara ek olarak metnin akışının da dikkate alınmasıyla yazım düzeltme gibi daha genel kullanımlı algoritmalar ortaya çıkmaktadır.

 

Yazım Düzeltme (Spelling Correction)

Yazım hatalarının otomatik olarak tespit edilip düzeltilmesidir. Bu düzenlemelerde genellikle benzerlik algoritmaları ve dil modelleri kullanılmaktadır.

Dil modelleri (Language Models) bir dilin yapay bir görev ile derin öğrenme methodlarıyla eğitilerek dil içindeki kelime, kelime grubu ve cümlelerin akışının makineye öğretilmesiyle oluşan hazır modellerdir. Bu modeller genellikle bir sonraki kelimenin veya bir sonraki cümlenin tahmin edilmesi veya cümle içinde maskelenmiş verilerin tahmin edilmesi gibi görevler ile eğitilir. 

Bu görevlerle yapılan eğitimlerde sistem görevi başarıyla tamamlamak için tüm kelime ve cümleler arasındaki bağlantıları kendince anlamış olmalıdır. Bu yapı oluşturulduktan sonra pek çok NLP görevinde yardımcı olarak rol alabilir.

Yazım düzeltme algoritmalarında da dil modelleri o zamana kadar gelen kelimelere göre bir sonraki muhtemel kelime için öneriler oluşturabilir. Ve bu öneriler içinden benzerlik algoritmasıyla hatalı yazıma en benzer olan öneri kullanılabilir.

 

Cümle Bölümleme (Sentence Segmentation)

Paragraf veya daha büyük bir bütün olarak bulunan metni cümlelere veya kullanım alanına göre fikir belirten daha küçük bölgelere (opinion unit) ayırma işidir.

Bu konuda yapılan çalışmalar başlangıçta kural tabanlı olarak, noktalama ve büyük harf kullanımı, söz dizimi yapısına uyum gibi analizlerle çözümler üretmiştir. Fakat bu yöntemler özellikle günümüzde git gide artan kuralsız sosyal medya, müşteri yorumu gibi verilerde yüksek başarı sağlayamamıştır. 

Bu konuda yapılan daha güncel çalışmalar daha çok güdümlü makine öğrenmesi yöntemleri ve dil modelleri ile cümleyi anlamsal olarak bölmeye önem veren derin öğrenme modelleri ile yapılmaktadır.

 

Küçük Harfe Dönüştürme (Lowercase Converter)

Büyük harf kullanımının önemli olmadığı durumlarda kelimelerin ortak olmasını daha rahat yakalayabilmek için tüm harfleri küçük harfe çevirir. En basit işlemlerden olan bu adımda bile dil parametresine dikkat edilmezse beklenmedik hatalar çıkabilir.

<p> Ör: Irmak -> İngilizce küçük harfe çevirme -> irmak

-> Türkçe küçük harfe çevirme -> ırmak

 

Terimlere Ayırma (Tokenization)

Metni kullanım amacına göre işlenebilir birimlere böler. Bu bölümler bazen kelimeler, bazen cümleler bazen de paragraflar veya tam ters yönde heceler vs olabilir. Kullanım alanlarının çoğunda anlam kelimelerin kullanımı ile belirlendiği için kelimeler terim olarak kullanılmaktadır. 

Kelimelere ayırma işlemi yapılırken yine ilgili göreve göre birleşik kelimelerin ayrılması, alfanumerik olmayan karakterlerin dahil edilmesi gibi durumlarda göreve özel karar verilmesi gerekebilir.

 

Gereksiz Kelime Ayıklama (Stopwords Removal)

Yapılacak analizlerde bir katkı sağlamayan ve çok sık geçtiği için analizlerde öne çıkan kelimelerin ayıklanması işlemidir. (ör: ve, ama, bir, şey…)

Bu kelimelerin ayıklanması özellikle veri içinde kelime bazlı bilgi çıkarılması gerektiği durumlarda önemlidir. 

Gereksiz kelimelerin ayıklanmadan analizlere dahil edilmesi durumunda Ngram analizlerinde özellikle gereksiz kelimelerin araya gelmesinden dolayı Ngramların sıklıkları doğru bir şekilde ölçülemeyebilir. Veya kelimelerin sadece varlıkları ile öğrenen modellerde konu ile ilgisi olmayan gereksiz kelimelerin metne eklenmesi atanacak sınıfı beklenmedik şekilde değiştirebilir.

 

İstenmeyen Örüntü Ayıklama (Unwanted Pattern)

Metnin kaynağına veya içeriğine bağlı olarak ortaya çıkıp metinlere anlamsal katkı sağlamayan örüntülerin ayıklanması işlemidir. (web sitesi linkleri, twitter etiketleri, hex karakterler vb.)

Özellikle internet sitelerinden otomatik olarak çekilen verilerde istenmeyen karakterler sıklıkla karşılaşılan bir durumdur. Bu verilerin ayıklanması sürecinde genellikle belirli örüntüleri yakalayan kurallar oluşturmakla beraber terimlerin sıklıkları ve anlamasal analizleri yapılarak bu örüntülerin tespitinin de otomatikleştirildiği algoritmalar kullanımdadır.

 

Normalizasyon (Text Normalization)

Metin içinde aynı anlamı paylaşan fakat cümle içindeki durumuna bağlı olarak farklı çekim ve yapım eki almış kelimelerin kullanım alanına göre ortaklaştırılmasını sağlayan adımlardır. 

Burada verilerin ortaklaştırılması, veri seyrekliği (data sparsity) nedeniyle algoritmaların veriyi yeterince gruplayıp anlamlandıramadığı durumlarda uygulandığında oldukça faydalı olmaktadır. 

Eğer kelimelerin cümle içinde kullanımı ek bir bilgi kaynağı değilse normalizasyon adımlarının uygulanması mevcut bir problem olmasa bile veri kalitesini arttırarak ilgili görevdeki başarıyı da arttıracaktır.

Gövdeleme (Lemmatization) kelimeyi çekim eklerinden ayıklayarak en geniş köküne indirger. Yapım eklerini ayıklamayarak aynı kökten de olsa anlamsal farklılıkları olan kelimelerin ayırt edilebilirliklerini korumaktadır.

Köke İndirgeme (Stemming) ise kelimeyi çekim ve yapım eklerinden tamamen ayıklayarak aynı anlamın en küçük köküne indirger.

 

Cümle Ögelerini Belirleme (Part of Speech Tagging)

Cümle içindeki kelime veya kelime gruplarının cümlenin hangi öğesine hangi görevle bağlı olduğu bilgisi ile etiketlenmesidir. Bu işlem için dil içindeki söz dizimi kuralları kullanılabildiği dil modelleri veya kelime vektörlerinin yardımıyla eğitilen güdümlü öğrenme algoritmaları da sıklıkla bu işlem için kullanılmaktadır.

 

Morfolojik Analiz (Morphological Analysis)

Kelimeleri tipine göre (isim, fiil, sıfat vb) sınıflandırarak cümledeki olası kullanım görevinin tespitine yardımcı olur. Bu bilgi özellikle varlık tanıma gibi kelimenin tipi ile yakından ilgili olan tasklarda çok önemlidir.

Bu analiz için mevcut pek çok kural tabanlı sistem vardır. Bu sistemler dil üzerindeki söz dizimi kurallarına ek olarak dile ait sözlüklerden de faydalanarak kelimeleri gruplandırabilmektedir. 

Bu sistemlerin zayıf yanı ise kural tabanlı olarak olası anlamlardan hangisinin metne uygun olduğunun çözümlenememesidir. Bu çözümlemenin yapılabilmesi için genellikle morfolojik analiz algoritmaları kelime anlam çözümlemesi algoritmaları ile beraber çalıştırılır.

 

Kelime Anlam Çözümlemesi (Word Sense Disambiguation)

Metinde kullanılan kelimelerin olası anlamları arasında doğru anlamın seçilmesi işlemidir. Bu işlemin sağlıklı işletilebilmesi için kullanılacak algoritmada sağlam bir dil modeli bulunması önemlidir. 

Alternatif olarak söz dizimleri ile de kelime tipine göre seçim yapan algoritmalar bulunmakla beraber genel başarıları dil modeli kullanan sistemlere göre zayıf kalmaktadır. Örnek: Yüz verdik tepemize çıktılar. Numaram beş yüz on. Sporcuyu daha hızlı yüzsün diye yüreklendirmeye çalıştılar.

Mesela yukarıdaki metinlerde yüz kelimesi farklı anlamlarda kullanılmıştır. Bu anlamların birbirinden ayrılması kelime anlam çözümlemesinin konusudur.

 

Özdeşik Çözümleme (Coreference Resolution)

Bir metinde aynı varlığa gönderme yapan tüm ifadelerin belirlenmesi işlemidir.

Örnek: Ahmet Kerim’den kapıyı açmasını istedi. O da ayağa kalkıp kapıyı açtı.

Mesela yukarıdaki metinde “O” zamiri ile belirtilen kişinin Ahmet mi Kerim mi olduğu bilgisinin çıkarılması özdeşlik çözümlemenin konusudur.

 

Doğal Dil İşleme Kullanım Alanları

Doğal dil işleme nedir? Doğal dil işleme adımları nelerdir? sorularının cevaplarından sonra sıra doğal dil işleme kullanım alanlarında. Doğal dil işleme çalışma hayatında ve günlük hayatta hepimizi ilgilendirebilen pek çok aktif kullanım alanına sahiptir.

 

Sınıflandırma (Classification)

Metinlerin belirli konulara göre gruplanması için yapılan çalışmaların tamamdır. Güdümlü (supervised) sınıflandırma yöntemlerinde gruplar önceden belirlenir ve her gruba ait belirli sayıda veri kümesi elle işaretlenir, ardından bu eğitim verisi ile model eğitilir. 

Güdümsüz (unsupervised) yöntemlerde is istenen grup sayısı verilerek ilgili algoritmanın verileri kendine çıkarımlarına göre en uygun gruplara ayırması beklenir. Sınıflandırma çalışmaları pek çok alana uygulanabilir olduğu için NLP ve diğer veri bilimi alanlarında en sık kullanılan çalışmadır.

 

Duygu Analizi (Sentiment Analysis)

Metinlerin ifade ettikleri duyguya göre sınıflandırılması işlemidir. Duygular pozitif, negatif, nötr gibi 3 gruba ayrılabileceği gibi, kullanım alanına göre sevinç, üzüntü, öfke, hayal kırıklığı vb.gibi alternatif gruplara da ayrılabilir. 

Dil modelinin dili yeterinde anlamamasından veya dil modelinin kullanılamamasından kaynaklı olarak ironiler, değillemeler (iyi değil, yok yok, kötü sayılmaz vb.) gibi insan gözüyle rahat anlaşılan duygu durumlarının algoritmalar tarafından anlaşamaması gibi durumlar klasik duygu analizi çalışmalarında en sık karşılaşılan problemlerdir. 

Duygu analizi diyaloglarda yapıldığı durumlarda ise duygu değişimlerinin tespiti, karşı tarafın konuşmasının bir sonraki konuşma üzerinde yarattığı duygusal etkinin analizi mevcut algoritmaların en zayıf yanıdır.

 

Makine Çevirisi (Machine Translation)

Bir dilde yazılmış metnin başka bir dile bilgisayar algoritmaları ile çevrilmesidir. Makine çevirisi algoritmalarında aralarında çeviri yapılacak idi dili ve iki dil arasındaki ilişkileri sistemin anlaması gerekmektedir. 

Bu durum sayesinde makine çevirisi için eğitilen modeller dil modeli olarak da kullanılabilmektedir. Makine çevirisi modellerinin eğitimi için iki veya daha fazla dilde aynı metnin çevirilerinden oluşan parekek veri setleri kullanılır.

 

Yapay Metin Üretme (Text Generation)

Bir konu üzerinde bulunan mevcut verilerden çıkarımlar yaparak makinenin aynı konu üzerine daha önce görülmemiş metinler üretmesidir. 

Bu üretim işlemi yapılırken verilerin kullanıldığı görevde sorun yaratacak yanlış bilgi içermiyor olması, doğal dil yapısının doğru kurulması ve üretilen verinin birebir kopya olmaması en önemli noktalardır. Yapay metin üretme, NLP görevleri için yeterli sayıda eğitim verisi bulunmadığı durumlarda veri sayısını artırmak için sıklıkla kullanılan bir yöntemdir.

 

Benzerlik (Similarity)

Arama motorları (search engines) başta olmak üzere pek çok alanla kullanımı bulunan benzerlik analizi birden fazla metnin benzerlik oranlarını ölçerek en alakalı metinleri bulmayı veya metinleri benzerliklerine göre gruplandırmayı sağlar. 

Benzerlik algoritmaları aynı zamanda daha mikro düzeyde yazım hatalarının düzeltilmesi gibi temel görevlerde de kullanılmaktadır. Bu tarz karakter bazlı benzerlik algoritmalarında genellikle hatalı yazılmış bir kelimenin sözlükte bulunan adaylardan hangi kelimeye en çok benzediği, içerdiği harflere harf ekleme, çıkarma veya işlemleri yapıldığında en az kaç işlem ile diğer kelimeye ulaşılabildiği hesaplanarak ölçülür. 

Bu işlemlerde kelime uzunluğu, karakterin bilgisayar klavyesinde yanlışlıkla yakındaki bir harfle karıştırılmış olma ihtimali gibi durumlar da dikkate alınmaktadır. 

Birden fazla metni kıyaslayan algoritmalara geri dönersek istatistiksel çalışan benzerlik algoritmaları genellikle metin içinde geçen Ngramların örtüşme oranlarına göre bir benzerlik oranı hesaplar. 

Son zamanlarda kullanımı popüler olan kelime vektörleri bu alanda yapılan çalışmalarda terimsel olarak örtüşmezse de anlamsal olarak örtüşen metinler için daha doğru benzerlik skorları hesaplanmasına katkı sağlamıştır.

 

Özetleme (Summarization)

Bir metnin önemli noktalarını belirtecek ve bilgi eksikliğine neden olmayacak şekilde kısaltılması işlemidir. 

Özetleme algoritmalarının bir kısmı paragraf içinde öneli cümlelerin aynen filtrelenmesi şeklinde, bir kısmı ise tüm paragrafın algoritma tarafından anlaşılıp dil modelleri desteği ile önemli kısımların yorumlanarak özgün bir veya birkaç cümle olarak kısaltılması şeklinde çalışmaktadır.

 

İsimlendirilmiş Varlık Tespiti (Named Entity Recognition)

Metin içerisinde geçen varlıkların belirlenmesi işlemidir. Tespit edilmeye çalışılan varlıklar özel isimler, yer isimleri ,organizasyon isimleri, tarihler, para birimleri gibi pek çok farklı gruptan seçilebilir.

 

Niyet Tespiti (Intent Recognition)

Chatbot’lar ve akıllı asistanlar başta olmak üzere pek çok alanda önemli işlev gören niyet tespiti bir metinde bulunan ifadenin pragmatik analizini yaparak metin sahibinin bu ifade ile ne ifade etmeye çalıştığını veya ne elde etmek istediğini ortaya çıkarır.

Related Resources