Doğal Dil İşleme+1: 7. Part of Speech Tagging ve Saklı Markov Modeli

POS

Doğal Dil İşleme – Konuşma Bölümü Etiketleme (Part of Speech Tagging) ve Saklı Markov Modeli

Bu yazımızda biraz hikâyelere yer verelim ne dersiniz? Dünyada ki en güçlü ülkelerin liderlerinin bulunduğu bir toplantıda bir ülke liderinin çevirmeni olarak görevlisiniz diyelim. Ülkenizin aleyhine siyaset güden diğer ülkelerin, ne söylediklerini hatasız bir şekilde anlamanız ve çevirmeniz hayati bir öneme sahip. Herhalde çok gergin olurduk değil mi ? Ya da 2 saattir trafikte olduğunuzu ve hayatınız için önemli bir toplantıya geç kaldığınızı düşünün. Karşınızda bir taksi şoförü size sorunun ne olduğunu ve ne zaman çözüleceğini anlatıyor ve siz kendi öfkenizden duymuyorsunuz bile. Birçok örnek ile size iletişimi daha da önemlisi iletişimde dinlemenin, anlamanın önemini ve böyle bir iletişimsizliğin hayatımıza vereceği zararları anlatabilirim ama şuan bunun için burada olmadığınızı biliyorum. Size bunları anlatmamın sebebi hazır Doğal Dil işleme alanında neredeyse veri ön işlemeyi bitirmiş ve yeni konulara girmeye başlamışken iletişimin ve karşımızdakinin ne dediğinin anlamanın önemini unuttuğumuz bu günlerde hatırlatmak ve birde bu konu üzerinden bir soru sormak. Bu kadar önemli bir olguyu insan – bilgisayar ilişkilerinde nasıl sağlayacağız?

 

Bundan sonra, bilgisayara kendimizi anlatmaya çalışacağız. Bunun için Bag of Words gibi birçok konuyu farklı şekillerde ele alacağız. İlk önce Part of Speech Tagging konusu ele almamızın sebebi ise NLTK Kütüphanesi ile de yapılıyor olabilmesi ve bazı kaynaklarda veri ön işleme kısmının içinde değerlendirilmesi. Konuyu yeterince uzattığımızın farkındayım. Buyurun yapay zekâya kendimizi nasıl anlatacağız  Konuşma Bölümü Etiketleme (Part Of Speech Tagging) konusu ile ele almaya başlayalım.

 

Part Of Speech Tagging metinlerimizin içinde ki kelimelerin sentaks yani sözdizim olarak öğeleri ile etiketlenmesidir. Önemini ise bir örnek ile ele alalım. Sadece Bag of Words tekniği ile bir duygu analizi projesi yaptığımızı düşünelim. İngilizce’de duygu belirten ve fiil olan ‘like’ kelimesi benzerlik anlamına gelen ve sıfat olan  ‘like’ kelimesinden farklı olduğunu belirtemememiz projemizin başarasını düşürecektir. Çoğu kelime cümle içeresinde kullanımına göre sıfat, fiil, isim olarak değişmektedir. Peki, Part of Speech Tagging (PoST)  nasıl yapılır? Temelde 4 farklı yöntem sayabiliriz ama bunlardan biri basit şekilde kelimenin, sözlükte en çok geçtiği şekilde etiketleme yapmasıdır. Bunu yöntemi bazı kaynaklar saymadığı için 3 yöntem vardır diyebiliriz.

  1. Kural Tabanlı Yöntemler: Dil bilgisi kurallarına göre yapılan etiketleme işlemleridir. Dillerin gramer yapılarına göre çalışırlar. Örneğin İngilizce dilinde ‘x’ türü bilinmeyen kelimemiz olsun. Zarf  + x + İsim şeklinde bir cümlemiz varsa x kelimemiz sıfattır.
  2. Olasılık Yöntemleri: Bu yöntemleri de kendi içersin de 2’ye ayırabiliriz.
    • Üretken (Generative) Modeller:
      1. Kelimeler ve etiketlerin ortak olasılıklarına dayanan modellerdir.
      2. Saklı Markov Modelleri (HMM) örnek olarak verebiliriz.
    • Ayırıcı (Discriminative) Modeller:
      1. Kelimelerin ve etiketlerinin koşullu olasılığının hesaplanması ile oluşturulan modellerdir.
      2. Conditional Random Fields (CRF) bu modellere örnektir.
  1. Derin Öğrenme Yöntemleri: Son zamanlarda RNN PoS tagging işlemlerinde kullanılmaktadır.

Biz bu yazımızda Saklı Markov Modelleri (HMM) üzerinde duracağız. En çok rakibi olan CRF modelini bir sonra ki yazımız olan Named Entity Recognition (NER) işleminde anlatacağız. RNN için ise biraz daha beklememiz gerekmektedir.

Saklı Markov Modelleri

Markov zinciri ismini Rus Matematikçi Andrew Markov’dan alan Stokastik bir süreçtir. Markov zincir modelleri sadece şuan ki duruma bakarak bir sonraki duruma geçiş olasılığını hesaplayan bir modeldir. Saklı Markov Modelleri ise Markov zincirlerine bazı özellikler eklenerek oluşturulmuştur. Basit bir örnek ile daha iyi anlayalım.

 

İki farklı durumumuz vardır. Yağmurlu hava ve güneşli hava. Bu durumda 4 farklı olasılığımız vardır.

  1. Durum: 0.8 olasılık ile güneşli hava, güneşli kalmaya devam edecek.
  2. Durum: 0.2 olasılık ile güneşli hava, yağmurlu havaya dönüşecek.
  3. Durum: 0.6 olasılık ile yağmurlu hava, yağmurlu kalmaya devam edecek.
  4. Durum: 0.4 olasılık ile yağmurlu hava, güneşli havaya dönüşecek.

Bu durumda 2×2’lik bir ‘P’ matrisimiz oluşmaktadır. Eğer 2 gün sonrasını tahmin etmek istiyorsak.

Şeklinde hesaplama yapabiliriz. Peki HMM Part of Speech nasıl kullanıyor? Çok basit. Kelimelerin pozisyonuna göre etiketlenebileceği öğeler olasılıksal olarak hesaplanıyor. Resimde ki gibi tüm yol permitasyonlarının olasılığı hesaplanır. En yüksek olasılığa sahip yolu sonuç olarak verir.

‘B’ cümle başlangıcını, ‘S’ ise cümle sonunu temsil etmektedir. ‘F’ fiileri, ‘S’ sıfatları ve ‘İ’ isimleri temsil etmektedir. Yine resimde ki örnek üzerinden işlemlerimize devam edelim. İşlem kalabalığı yapmamak için sadece yüksel olasılığa sahip 2 yol için işlem yapacağız.

B = S = İ = F = S => 3/8*9/16*5/9*2/3*1/2*3/4*7/8 = 0,026

B = İ = İ = F = S => 1/2*3/8*4/9*2/3*1/2*3/4*7/8 = 0,018

İşlemlerimizin sonucuna göre seçeceğimiz yol aşağıdaki gibi olacaktır.

Yani kelimelerimizin öğeleri sıfat, isim ve fiil olarak etiketlenecektir.

 

HMM Optimizasyonu Ve Viterbi Algoritması

Örneğimizde 3 kelime ve 3 sözcük türü mevcuttu. Çok daha büyük corpuslarda, HMM modelinin hafızası olmadığı için çokta başarılı bir etiketleme işlemi yapamayabiliriz. Bunun için bir optimizasyon algoritmasına ihtiyaç duyarız. Bu kahramanımızın adı ise Viterbi. Viterbi algoritması genellikle bilgisayar bilimlerinde karşımıza çıkan, orijinalinde karmaşık çözümlemeli kodların analizinde kullanılan bir dinamik programlama algoritmasıdır. En basit tanımı ile büyük problemleri küçük parçalara bölerek çözmek için kullanılır diyebiliriz. İşte bu sebeple Saklı Markov Modellerinde karşımıza çıkmaktadır. Her bir kelime için olasılık hesaplama işleminden sonra bir sonra ki adım adım için en başa dönüp tüm işlemleri tekrar yapmayız. 1. katmanda ki düğüm için olasılıklar hesaplanır ve hafızaya kaydedilir, sonrasında 2. katmanda ki düğümün olasılık hesapları için 1. katmanda ki  olasılıklar kullanılır.

Örnekte de görüldüğü üzere Viterbi algoritması 1. Katmanda ki düğümde maksimum geçiş olasılığını yani 0,21 hesaplar ve hafızasına kaydeder. Sonrasında 1. Katmanda yer alan her düğüm için bir sonraki katmana geçiş olasılığı hesaplanır ve yine en yüksek olasılık kaydedilir. Bu işlem her kelime için tekrar edilir. Viterbi algoritmasının hafızasında tutma işlemi Saklı Markov Modellerinin işlem yükünü büyük oranda azaltmaktadır.

 

Teorik olarak size Part of Speech Tagging konusunu olabildiğince anlatmaya çalıştık. Birde pratikte bir örneğini ele alalım.

 

NLTK İle Örnek

Her zaman ki gibi ilk önce kütüphanemizi dahil ederek başlıyoruz.

Eğer daha önce Part of Speech Tagger fonksiyonunu kullanmadıysanız indirmeniz gerekmektedir.

Metni tanımlıyoruz.

Part of Speech Tagging yapmadan önce tokenleştirme işlemini yapmalıyız.

Sonrasında ise etiketleme işlemini yapalım ve etiketlenmiş 10 kelimeye bakalım.

Görüldüğü üzere noktalama işaretini saymaz isek kelimelerden ve etiketlerinden oluşan başarılı Tupleelde ettik. Etiketler size yabancı gelmiş olabilir. Onun içinde bir yöntemimiz var. Birlikte bu yöntemi öğrenirken etiketleme işlemimiz doğru yapılmış mı birde ona bakalım.

Yine bir indirme işlemi gerçekleştiriyoruz. Sonrasında sorgularımızı gerçekleştiriyoruz. Mesela ‘project’ kelimesine ‘NN’ etiketi atamış.  Nedir bu ‘NN’?

‘project’ kelimesinin noun yani isim olarak, doğru bir şekilde etiketlendiğini görebiliyoruz. Bir örnek daha yapalım ve ‘human-like’ kelimesine atanan ‘JJ’ etiketinin ne olduğunu sorgulayalım.

Adjective yani sıfat olarak, doğru bir şekilde etiketlendiğini görebiliyoruz.

Aslında bu yazımız 5 serilik Veri Ön İşleme konusunun 3. Yazısıdır diyebiliriz. Daha öncede bahsettiğimiz gibi Part of Speech Tagging birçok kaynakta veri ön işleme içerisinde yer alır ve Nltk Kütüphanesi ile basit bir şekilde gerçekleştirilebilinir. Biz size, farklı problemler karşısında sorun çözebileceğiniz farklı yolları da göstermek ve bunların arkasında çalışan mantığı olabildiğince anlatmak istedik. Belki ilerleyen yazılarımızda sadece HMM kullanarak bir Part of Speech Tagging projesi yaparız. Bunun için takipte kalın!

Serinin Diğer Yazıları;
Doğal Dil İşlemeye Giriş
DDİ’nin Arka Planı, Zorlukları, Geleceği
Doğal Dil İşleme ve String İşlemleri
Doğal Dil İşleme Kütüphaneleri
DDİ’de Veri Ön İşleme-1
DDİ’de Veri Ön İşleme-2

Yazarlar: Mustafa Selim ÖZEN, Saygın YILDIZ

Kaynaklar

https://dergipark.org.tr/tr/download/article-file/646050

https://medium.com/analytics-vidhya/pos-tagging-using-conditional-random-fields-92077e5eaa31

BTK Akademi DDİ POS Tagging

https://www.mygreatlearning.com/blog/pos-tagging/

İlk Fotoğraf: https://medium.com/analytics-vidhya/hidden-markov-models-for-time-series-in-r-studio-5ae2b9fb0701