NLP – Natural Language Processing

Günümüzde sosyal medyanında gelişimiyle beraber internet ortamında işlenen veya işlenmeyi bekleyen yüksek miktarda data bulunuyor. “Natural language processing” kavramı bu noktada ortaya çıkıyor. Natural language processing (NLP) Türkçe, İngilizce, Almanca gibi doğal dillerin işlenmesini, kullanılmasını, bilgisayarların insan dillerini anlamalarına ve manipüle etmelerine yardımcı olmayı amaçlayan bir yapay zeka dalıdır. Sentiment analysis, machine translation, chatbot, text summarization gibi uygulamalar hem yapay zeka alanını hem de text datası işleme alanlarını kapsar.

Dil Modelleme

Kelime ve cümleleri tokenleştirme

Tokenleştirme bir paragrafın cümlelere, cümlelerin, kelimelere bölünmesi işlemidir. NLP de üzerinde çalışma yapılan metinlere corpus deniliyor. Örneğin “Natural Language is branch of artifical intelligence.” cümlesini boşluklardan böldüğümüzde kelimelerden oluşan bir token listesi elde etmiş oluruz. Corpus üzerinde ki metinleri tokenleştirebilmek için nltk kütüphanesinde bulunan tokenize fonksiyonundan yararlanabiliriz. Metin üzerinde çalışabilmek için ilk yapmamız gereken işlemlerden biri tokenizing işlemidir. Tokenize fonksiyonu yerine cümleleri boşluklardan bölmemiz sağlayan split fonksiyonunu da kullanabiliriz.

Stemming ve Lemmatization

Stemming türetilmiş kelimeleri kelime köklerine indirgeme işlemine deniyor. Örneğin gone, goes, going kelimelerine stemming işlemi uyguladığımızda kelime kökü olarak “go” kelimesini elde ederiz. Stemming uyguladığmız bazı kelimelerde bir problem karşımıza çıkıyor. Örneğin intelligent ve intelligence kelimelerinin ortak kökleri intelligen olarak bulunuyor. Fakat intelligen kelimesinin bizim için bir anlam ifade eden bir kelime olmadığı görülüyor.

Bu problemi çözen yönteme ise NLP’de lemmatization ismi veriliyor. Lemmatization stemming’le aynı şekilde türetilmiş kelimeleri kelime köklerine indirgiyor. Bunu yaparken stemming’ten farklı olarak kelime anlamını korunmasını sağlıyor. Örneğin işleme aldığımız kelimeler intellengence, intellegently ise kelime kökü olarak intellegent bulunuyor. Her iki yönteminde kullanıldığı farklı durumlar olabiliyor. Örneğin metin üzerinde stemming işlemi uygulamak lemmatization işlemine göre daha işlem gücü gerektiyor, aynı zamanda daha az zaman alıyor. Diğer taraftan metin analizimizde kelimelerin anlamları önemli ise lemmatization yöntemini tercih etmek uygun olacaktır. Stemming işlemi için Nltk kütüphanesinde yer alan PorterStemmer nesnesinin stem fonksiyonu kullanabiliriz. Benzer şekilde WordNetLemmatizer sınıfının lemmatize fonksiyonunu kullanarak kelimelere lemmatize işlemi uygulayabiliriz.

Kaynak: https://nlp.stanford.edu/IR-book/html/htmledition/stemming-and-lemmatization-1.html

Görsel: https://www.blumeglobal.com/learning/natural-language-processing/

Stop Words

Stop words bir metin üzerinde analiz çalışması yapmadan önce metinden çıkarılan etkisiz kelimelerdir. Genel olarak o dilde en çok kullanılan kelimeler, bağlaçlar, kısaltma olarak kullanılan kelimelerden oluşur. İngilizce için  “a,about,at,the,are,is” gibi kelimeleri örnek olarak gösterebiliriz. Türkçe içinse benzer şekilde “bir,birçok,kimi,kime,nerede,nereden,önce” gibi kelimeler stop words listesine dahil kelimelerdir. Nltk kütüphanesi stopwords.words(‘English’) fonksiyonuna English parametresini vererek İngilizcedeki stopwords listesini elde edip işlem yapabiliyoruz.

Parts of Speech Tagging

Parts of speech tagging metinde geçen kelimeleri fiil, sıfat veya özne şeklinde etiketlenmesine deniyor. Nltk kütüphanesinde pos_tag fonksiyonunu kullanarak bu işlemi yapabiliriz.

Named Entity Recognition

Corpus’ta cümlelerden yer isimleri, kişi isimleri, organizasyon isimlerini veya şirket isimlerini bulmak isteyebiliriz. Named entity recognition yöntemleriyle bir cümlede geçen belli özellikteki kelimeleri bulabiliriz. Metin üzerinde named entity recognition işlemi yapabilmek için önce metni pos_tag fonksiyonuyla öğelerine göre tag ataması yapıyoruz. Ardından ne_chunk fonksiyonunu kullanarak etiketlenmiş kelime için named entity recognition işlemini gerçekleştiriyor.

Bu yazıda kısaca nlp nedir sorusunu cevaplamaya bunun yanında dil modelleme kavramlarından bahsetmeye çalıştım. Sonraki makalelerimde verilen bir metni nasıl analiz edebileceğimizi veya nasıl bir dil modeli oluşturabileceğimizi anlatacağım.Buradan ulaşabilirsiniz.. Sonraki yazılarda görüşmek üzere 🙂

Murat.

By mgm

Bir yanıt yazın

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