Doğal Dil İşleme(NLP) Kavramlarına Giriş

Büşra Tural
Vakıf Katılım Ar-Ge Merkezi
8 min readJul 21, 2023

Gelişen teknoloji ile birlikte sık sık karşımıza çıkan NLP teknolojisine ve kavramlarına bu yazımızda değineceğiz.

Teknolojinin Yapay zeka alanına evrilmesi ile NLP kavramı daha sık karşımıza çıkar oldu. Peki nedir bu NLP? Natural Language Processing kısaca NLP Yapay zekanın bir alt koludur ve bilgisayarların insan dilini anlamasını, işlemesini ve kullanması amacıyla ortaya çıkan bir teknolojidir/bilim dalıdır.

NLP’nin amacı, bilgisayarların insan dilinin kurallı yapısını çözümleyerek anlaşılmasını ve doğal dildeki metinleri işleyerek, daha akıllı ve kullanıcı dostu yapay zeka sistemleri oluşturmaktır.

NLP büyük metin verilerini anlama işleme yeteneğine sahiptir. Bu sayede büyük verileri analiz ederek anlamlı bilgiler çıkartabilir. Metinleri belirlenen benzerliklere göre sınıflandırabilir ve metinlerden bilgi çıkarımı, otomatik metin tamamlama yapabilir. Bunların yanında çeviri sistemleri, duygu analizi, sesli yanıt sistemleri gibi alanlarda NLP kullanılmaktadır.

“NLP Her Yede Karşımıza Çıkıyor”

Günümüzde NLP teknolojisine birçok sektörde rastlamak mümkündür. Bunlardan başlıcaları,

Arama Motorları: Arama motorları NLP kullanarak kullanıcıların sorgularını doğru bir şekilde anlamak ve uygun sonuçları sunmak için metin analizleri yapmaktadır.

Finans: Finans alanında dolandırıcılık tespiti, risk analizi, raporlama, metin özetleme gibi alanlarda kullanılır. Finansal kurumlar ve yatırım şirketleri, büyük miktarda metin verisi üzerinde NLP tekniklerini kullanarak değerli bilgiler elde eder.

Müşteri Hizmetleri: Akıllı asistanlar ve Chatbotlar NLP araçlarını kullanarak müşterilerin sorularını cevaplamak yönlendirmek için kullanılır. Chatbotlar ile müşteri ile diyalog kurar böylelikle müşterilerin sorunlarına, taleplerine cevaplar bulunur. NLP ile müşteri iletişimi otomatikleştir, müşteri etkileşimi artırılır, bunun yanında verimliliğinde artırılmasını sağlar. Müşteriye 7/24 erişim imkanı sunduğundan müşteri memnuniyetini de artmasını sağlamış olur.

Sosyal Medya Ve E-ticaret: Trend analizi, kampanya etkileşimleri, müşteri deneyimleri ve geri bildirimleri gibi alanlarda NLP tekniklerine sıklıkla rastlanmaktadır.

İçerik Yönetimi: Dijital platformlarda, web sitelerinde, bloglarda, sosyal medya hesaplarında ve diğer dijital ortamlarda içeriklerin planlanması, oluşturulması, düzenlenmesi, yayınlanması ve yönetilmesinde, içeriklerin doğru ve tutarlı bir şekilde hedef kitleye ulaşmasında, NLP teknikleri sıklıkla kullanılır.

Sağlık ve Tıp: NLP teknikleri hastalık teşhisi, medikal rapor analizi, elektronik sağlık kayıtlarının analizi ve ilaç yan etkileri gibi birçok alanda kullanılır.

Lojistik: Nakliye rotalarının oluşturulması, teslimat zamanı planlama, stok ve ürün yönetimi ve lojistik maliyetlerin azaltılması gibi birçok alanda kullanılır.

Bu sektörlerin yanında özgeçmiş görüntüleme, mailleri sınıflandırma, dokümantasyon süreçlerini iyileştirme gibi bir çok alanda NLP teknolojisinden faydalanmaktadır.

NLP Analizinde Kullanılan Teknikler

NLP analizi, metinlerin otomatik olarak işlenmesini sağlayan bir dizi teknik ve algoritmayı içerir. Bu teknikler arasında dil modellemesi, metin sınıflandırması, entity tanıma, bağlamsal anlama, duygu analizi, metin özeti gibi yöntemler bulunur. NLP analizi, metin verilerini anlamlandırmak, anlamlı bilgileri çıkarmak ve daha geniş bir metin tabanlı veri kümesiyle çalışabilmek için önemli bir araçtır.

Metinden anlamlı veriler çıkarmak için çeşitli algoritmalar kullanılır. Metinlerden elde edilen verilerle makinalara doğal dilin mantığı öğretilir.

Lexical Analysis (Sözcüksel Analiz): Metinin paragraflara, cümlelere, kelimelere bölümlenerek kelimelerin yapısını tanımlanması ve analiz edilmesidir.

Syntax Analysis (Sözdizimsel Analiz): Dilbilgisi ve kelimeler arasındaki ilişkiyi gösterecek şekilde düzenler ve analiz eder.

Semantic Analysis (Anlamsal Analiz): Kelimelerin sözlük anlamını metinin anlamlılığı bakımından ve sözcük yapılarıyla nesnelerin eşleşme durumunu kontrol eder.

Discourse Analysis (Söylemsel Analiz): Cümleler arasındaki anlamların birbirleriyle entegrasyonudur.

Pragmatic Analysis Pragmatik Analiz: Tüm bu adımlardan sonra oluşturulan sentezin gerçek hayatta cümlenin anlamını anlamayı öğretmektir.

NLP’de Sıklıkla Kullanılan Çözümler/Uygulama Alanları

NER (Name Entity Recognation): Metinden adlandırılmış varlıkları, kişi adları, lokasyon, yer, zaman ifadeleri, parasal değerler gibi önceden tanımlanmış kategorilerle eşleştirmeyi ve sınıflandırmayı sağlar. 3 temel kategoride tanımlamalar yapılmaktadır.

• Enamex: Kişi, yer, organizasyon gibi ifadeleri

• Numex: Parasal ve yüzdesel ifadeleri

• Timex: Gün ve tarih gibi zamansal ifadeleri tanımlamak için kullanılmaktadır.

Text Classification: Metinlerin içerisinde yer alan ifadelere, cümle ve kelimelere bakılarak, önceden belirlenen etiketlere göre bu metinlerin sınıflandırma işleminin yapılmasıdır.

POS (Part-of-Speech Tagging): Metinde bulunan her kelimenin sözcük türünün belirlenip işaretlenme işlemidir. Kelimeler fiiller, nesneler, sıfatlar vb. şekillerde işaretlenir.

Text Normalization: Metinler işlenmeden önce ayıklanması gerekmektedir. Metin verilerinde yer alan çeşitli dillerin yazım kurallarına uygun bir şekilde düzenlenmesini ve standartlaştırılmasını sağlar. Metin verilerindeki gürültüyü azaltır. Tekrar eden kelimeler, noktalama işaretleri, harf dönüşümü gibi işlemlerin yapılıp verinin hazır hale getirilmesidir.

Summarization: Metinden önemli bilgilerini çıkararak daha kısa bir özet oluşturma amacıyla kullanılır. Özetleme, metinlerin uzunluğunu azaltırken ana fikirleri ve önemli ayrıntıları korumayı hedefler.

NLP tabanlı özetleme sistemleri, metinlerin dil bilgisel yapısını anlama, içerik analizi yapma ve anlamlı bir özet oluşturma yeteneklerini kullanır. Bu sistemler, genellikle metinlerdeki önemli cümleleri belirler, bu cümleleri bir araya getirerek kısa bir özet oluşturur ve metindeki gereksiz ayrıntıları filtreler. Büyük metinlerde daha hızlı analiz yapmak için metindeki bilgilerin özetleme işleminin yapılmasıdır.

Özetlemenin haber, akademik makale, iş ilanı ve e-kitap özetleme gibi uygulama alanlarında oldukça faydası bulunmaktadır. Gereksiz, fazla bilgi yükünü azaltır, erişimi kolaylaştırır ve metinlerin anlaşılmasını sağlar.

Question Answering: NLP tabanlı Soru Cevaplama sistemleri, insanların doğal dilde sorulan soruların anlamlı ve otomatik bir şekilde cevaplanmasıdır. Kullanıcının bir soru sorduğu ve sistem tarafından bu sorunun doğru cevabının belirlendiği bir etkileşim sağlar. Bu sistemler, soruların anlamını anlamak, cevapları metinlerden çıkarmak ve uygun bir şekilde sunmak için dil anlama ve bilgi çıkarma yeteneklerini kullanır. Soru Cevaplama sistemleri, metin tabanlı kaynaklardan bilgi çekmeyi, soruları anlamayı, cevapları çıkarmayı ve sonuçları sunmayı içeren bir dizi NLP teknik ve algoritma kullanır.

Soru Cevaplama, bilgi erişiminde, müşteri hizmetlerinde, chatbotlar ve dijital asistanlar gibi birçok uygulamada kullanılır. Kullanıcıların sorularına hızlı, doğru ve anlamlı cevaplar sunma yeteneğiyle, bilgiye erişimi kolaylaştırır ve kullanıcı deneyimini iyileştirir.

Sentence Similarity: Cümle benzerliği, iki veya daha fazla cümlenin anlamsal benzerliğini veya yakınlığını ölçmek için kullanılır. Bu teknik, metin karşılaştırması, metin eşleştirme, metin sınıflandırması ve özetleme gibi birçok NLP uygulamasında önemli bir rol oynar.

Cümle benzerliği, metinler arasındaki anlam, yapı ve semantik ilişkileri anlama yeteneğine dayanır. Genellikle iki cümle arasındaki benzerlik skorunu hesaplamak için metin vektörleştirme ve benzerlik ölçüm yöntemleri kullanılır. Bu yöntemler, cümlelerin anlamsal temsillerini vektörlerle ifade eder ve bu vektörler arasındaki uzaklık veya benzerlik ölçümlerini kullanarak cümle benzerliği skorunu hesaplar.

Launge Model: Dilin yapısını ve olasılıklarını modellemek için kullanılan istatistiksel veya makine öğrenmesi temelli bir modeldir. Genellikle dilbilgisi ve semantik yapısını öğrenmek için büyük metin veri setleriyle eğitilir. Bu veri setleri, kelime ve cümle yapıları üzerinde istatistiksel analiz yaparak dilin kurallarını ve örüntülerini öğrenir. Ardından, belirli bir kelime veya cümle girişi verildiğinde, dil modeli bu girişin ardından en olası devam kelimelerini tahmin edebilir. Bu model text-to-speech, makine çevirisi sistemlerinde kullanılır.

Topic Detection: Konu modelleme bir dokümandaki sıklıkla görülen kelimeleri kümeleyerek soyut konular üretir ve metinler içerdikleri kelimelere bakılarak kendisi ile en yakın ilişkili olabilecek kümeye yerleştirilir. Metinlerin içeriğini anlamak ve anlamsal olarak benzer konuları gruplamak amacıyla kullanılır. Topic detection, birçok uygulamada kullanılmaktadır. Örneğin:

· Sosyal Medya Analizi

· Haber Analizi

· Pazar Araştırması

· İçerik Yönetimi

Keyword Extraction: Bu yöntem, bir metin belgesinden önemli anahtar kelimeleri çıkarmak için kullanılır. Anahtar kelimeler, metnin içeriğini özetleyen ve metnin ana konularını temsil eden kelimelerdir.

Metindeki kelimeler frekans tabanlı yöntemler ile anahtar kelimeleri belirlemek için kullanılır. Örneğin, en sık kullanılan kelimeler veya belirli bir eşik değeri üzerindeki kelimeler anahtar kelime olarak seçilebilir.

Metin verilerindeki anahtar kelimeleri belirlemek için makine öğrenmesi algoritmaları kullanılır. Bu yöntemler, genellikle etiketli veri setleriyle eğitilir ve metindeki özelliklerden yararlanarak anahtar kelime tahminleri yapar.

NLP Metin Ön İşleme Adımları

Cümle Segmentasyonu (Sentence Segmentation): Metini paragraf paragraf işlemek yerine cümle cümle işlemek daha kolaydır. Bu yüzden metinler cümlelere ayrılır. Genellikle noktalama işaretleri göz önünde bulundurularak bu işlem yapılır.

Metinin parçalanması (Tokenization): Metinin daha küçük parçalara ayrılmasıdır. İki çeşit tokenize etme bulunur. İlki metni cümlelere parçalamak iken ikincisi cümleleri kelimelere ayrılması/parçalanmasıdır. Cümlelere ayırmada noktalama işaretlerinden yararlanılırken, kelimelere ayırmada cümle içerisindeki boşluklardan yararlanılır.

import nltk
from nltk.tokenize import word_tokenize, sent_tokenize

sentence="Gelecekte, konuşma sentezleyiciler ve konuşma anlama alanındaki gelişmeler " \
"ve makine-insan iletişiminin gelişmesi, insanın makineden beklentilerini yükseltecektir. " \
"İnsanlar makinelerin kendisini anlamalarını isteyecek, karmaşık kullanımı olan makineler " \
"pazar bulamayacaktır. Giderek gelişen ve insanı anlayan makinelerin daha zeki olması insanın " \
"yaşam kalitesini yükselteceğinden, vazgeçilmez olması kaçınılmazdır. Zeki makine kavramı, yapay" \
" zekâ çalışmalarının hızlanmasına yol açmıştır. Geleceğin en önemli sektörlerinden biri olan yapay " \
"zekâ ile insanın iletişim kuracağı tek araç dildir."
print(word_tokenize(sentence))

print(sent_tokenize(sentence))

************

['Gelecekte', ',', 'konuşma', 'sentezleyiciler', 've', 'konuşma', 'anlama', 'alanındaki', 'gelişmeler', 've', 'makine-insan', 'iletişiminin', 'gelişmesi', ',', 'insanın', 'makineden', 'beklentilerini', 'yükseltecektir', '.', 'İnsanlar', 'makinelerin', 'kendisini', 'anlamalarını', 'isteyecek', ',', 'karmaşık', 'kullanımı', 'olan', 'makineler', 'pazar', 'bulamayacaktır', '.', 'Giderek', 'gelişen', 've', 'insanı', 'anlayan', 'makinelerin', 'daha', 'zeki', 'olması', 'insanın', 'yaşam', 'kalitesini', 'yükselteceğinden', ',', 'vazgeçilmez', 'olması', 'kaçınılmazdır', '.', 'Zeki', 'makine', 'kavramı', ',', 'yapay', 'zekâ', 'çalışmalarının', 'hızlanmasına', 'yol', 'açmıştır', '.', 'Geleceğin', 'en', 'önemli', 'sektörlerinden', 'biri', 'olan', 'yapay', 'zekâ', 'ile', 'insanın', 'iletişim', 'kuracağı', 'tek', 'araç', 'dildir', '.']

['Gelecekte, konuşma sentezleyiciler ve konuşma anlama alanındaki gelişmeler ve makine-insan iletişiminin gelişmesi, insanın makineden beklentilerini yükseltecektir.', 'İnsanlar makinelerin kendisini anlamalarını isteyecek, karmaşık kullanımı olan makineler pazar bulamayacaktır.', 'Giderek gelişen ve insanı anlayan makinelerin daha zeki olması insanın yaşam kalitesini yükselteceğinden, vazgeçilmez olması kaçınılmazdır.', 'Zeki makine kavramı, yapay zekâ çalışmalarının hızlanmasına yol açmıştır.', 'Geleceğin en önemli sektörlerinden biri olan yapay zekâ ile insanın iletişim kuracağı tek araç dildir.']

Metin Temizleme (Text Cleaning): Metinin noktalama işaretlerinden ve özel karakterlerden temizlenme işlemidir.

import string

sentence="Doğal dil işlemede kullanılan kütüpjaneler: nltk, spacy, CoreNLP, scikit-learn... vb."

print(sentence.translate(str.maketrans("","",string.punctuation)))

************

Doğal dil işlemede kullanılan kütüpjaneler nltk spacy CoreNLP scikitlearn

Tekrarlı Kelimelerin Çıkarılması (Stop Word): Metinde tekrarlı veya gereksiz kelime varsa bu kelimelerin çıkarılmasıdır. Türkçede “de”, ”da”, ”ve”, ”ama”, ”ile” gibi kelimeler gereksiz olarak görülmektedir. Gereksiz olarak görülen bu ifadelerin filtrelenmesi ile o cümlelerin NLP ile anlaşılması daha kolay olmaktadır.

from nltk.corpus import stopwords
stopWords=set(stopwords.words('turkish'))
text= "Kültür dediğimiz insanlık birikimi, dil kullanan ve iletişim kuran insanın sosyalleşme sürecinin ürünüdür."
words=word_tokenize(text)
wordsList=[]
for w in words:
if w not in stopWords:
wordsList.append(w)
print(wordsList)

************

['Kültür', 'dediğimiz', 'insanlık', 'birikimi', ',', 'dil', 'kullanan', 'iletişim', 'kuran', 'insanın', 'sosyalleşme', 'sürecinin', 'ürünüdür', '.']

Gövdeleme (Stemming) ve Kök Bulma (Lemmatization): Stemming kelimelerin eklerinin kaldırılmasıdır. Lemmatization ise kelimelerin morfolojik analizi ile köklerine ulaşılmasıdır.

Bilgisayar metin ile çalışırken her iki kelimenin de aynı şeyi ifade ettiğini bilmesi için kelimelerin yalın halinin bulunması gerekmektedir. “Okul” kelimesi “okulun”, “okulların”, “okullarda” gibi farklı şekillerde yazılabilir ama özünde hepsi aynı kelimeden oluşmaktadır. Bilgisayarın bu kelimelerin aynı kelime olduğunu anlaması için kelimelerin kökünün bulunma işlemidir. Bu işlem dil yapılarına göre farklılık göstermektedir örneğin İngilizcede fiillerin V1, V2, V3 halleri farklı olduğu için İngilizce de kök çözümleme Türkçeye göre daha sayılabilir.

from snowballstemmer import TurkishStemmer

kok_bul=TurkishStemmer()
print(kok_bul.stemWord("geride"))
print(kok_bul.stemWord("okulun"))
print(kok_bul.stemWord("devamında"))

************

geri
okul
devam

Bag of Words (Kelime Çantası) : Metinlerdeki kelimelerin geçme sıklığına bakılarak kelimeleri vektör olarak temsil etme mantığı ile çalışan bir NLP metodudur.

from sklearn.feature_extraction.text import CountVectorizer

corpus=['Bu madde ilk sorudur',
'Bu madde ikinci sorudur.',
'Ve üçüncü madde.',
'Bu madde ilk soru mu?',]

vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)
vectorizer.get_feature_names_out()
print(X.toarray())

************

[[1 0 1 1 0 0 1 0 0]
[1 1 0 1 0 0 1 0 0]
[0 0 0 1 0 0 0 1 1]
[1 0 1 1 1 1 0 0 0]]

--

--