Stemming ve Lemmatization

Metin işlemeyle uğraşırken örneğin basit bir arama yaparken kelimenin ekli halinden daha çok kök haliyle ilgileniriz.

Kelime köküne erişmek için genel olarak iki yöntem vardır: stemming ve lemmatization. Her iki işlemin amacı da aynıdır: her kelimeyi eklerinden arındırıp ortak bir temel ya da köke dönüştürmek. Ancak, bu iki yöntem tam olarak aynı değildir. Bu yazıda bu farklılıkları ortaya çıkarmaya çalışacağız.

Stemming ve Lemmatization Arasındaki Temel Farklar

Hem stemming hem de lemmatization, genellikle veri ön işleme adımlarındandır ve aşina olmanız gereken şeylerdendir. Aralarındaki asıl farksa çalışma şekli ve dolayısıyla her birinin döndürdüğü sonuçtur.

Stemming algoritmaları, ekli bir kelimede bulunabilen ortak ön eklerin ve son eklerin bir listesini dikkate alarak kelimenin başlangıcını veya sonunu kesmeye çalışır. Bu ayrım gözetmeksizin kesim, bazı durumlarda başarılı olabilir, ancak her zaman değil, bu yüzden bu yaklaşım bazı sınırlamalar getirir. Aşağıda, yöntem hem İngilizce hem de İspanyolca için örneklenmiştir:

Biçim Ek Stem
studies -es studi
studying -ing study
niñas -as niñ
niñez -ez niñ

Stemming'in Dezavantajları

stemming, mükemmel olmaktan uzaktır. Temel olarak iki sorundan muzdariptir: aşırı sıkılama ve eksik sıkılama.

Aşırı sıkılama, bir kelime çok fazla kırpıldığı zaman oluşur. Bu, kelimenin bütün anlamlarının kaybolduğu veya karıştığı stem'lere neden olabilir. Veya, kelimelerin muhtemelen aynı stem'lere sahip olmamasına rağmen aynı stem'lere sahipmiş gibi çözümlenmesiyle sonuçlanabilir.

Eksik sıkılama, tam tersi durumdur. Birbirlerinin biçimleri şeklinde olan birkaç kelime söz konusu olduğunda meydana gelir.

Stemming Algoritma Örnekleri

  • Porter stemmer: Bu stemming algoritması en eski stemming algoritmalarından biridir. Asıl kaygısı, ortak bir biçimde çözülebilmeleri için kelimelerin ortak sonlarını çıkarmaktır. Çok karmaşık değildir ve artık geliştirimi sürmemektedir. Genellikle başlangıç için iyidir, ancak herhangi gerçek bir uygulama için kullanılması tavsiye edilmez. Ayrıca, diğerlerine kıyasla çok nazik bir stemming algoritmasıdır.
  • Snowball stemmer: Bu algoritma aynı zamanda Porter2 stemming algoritması olarak da bilinir. Neredeyse herkes tarafından Porter stemmer'dan daha iyi olduğu kabul edilir. Aynı zamanda Porter stemmer'dan daha agresiftir. Snowball stemmer'ına eklenen şeylerin çoğu, Porter stemmer'ında fark edilen konulardan kaynaklanmıştır.
  • Lancaster stemmer: Lancaster stemming algoritması kullanılabilecek bir başka algoritmadır. Bu, en agresif stemming algoritmalarından biridir. Ancak, NLTK'da kullanımında, bu algoritmaya özel kuralların eklenmesi çok kolaydır. Bu stemming algoritması hakkındaki şikayetlerden biri, bazen aşırı saldırgan olduğu ve kelimeleri gerçekten garip stem'lere dönüştürebilmesidir.
Lemmatization ise kelimelerin morfolojik analizini dikkate alır. Bunu yapmak için, algoritmanın, biçimi lemma'ya bağlayarak inceleyebileceği detaylı sözlüklere sahip olması gerekir. Yöntemin nasıl çalıştığına yine, aynı örnek kelimelerle bakacak olursak:


Biçim Morfolojik Bilgi Lemma
studies üçüncü kişi, tekil, study fiilinin şimdiki zamanı study
studying study fiilinin isim-fiili study
niñas dişil cinsiyet, niño isminin çoğulu niño
niñez niñez isminin tekili niñez

Vurgulanması gereken bir diğer önemli farksa, bir lemma'nın, tüm ekli biçimlerinin temel biçimi olması, stem içinse böyle bir durumun söz konusu olmamasıdır. Bu nedenle normal sözlükler, lemmalar listesidir. Bunun iki sonucu vardır:
  1. İlk olarak, bir stem, farklı lemma'ların ekli biçimleri için aynı olabilir. Bu, arama sonuçlarında gürültüye dönüşür.
  2. Ayrıca aynı lemma, farklı stem'lere sahip biçimlere karşılık gelebilir, bunların aynı kelime olarak ele alınması gerekir.

Nasıl çalışırlar?

  • Stemming: stemming sürecinde kullanılabilecek farklı algoritmalar vardır, İngilizce'de en yaygın olanı Porter stemmer'dır. Bu algoritmada yer alan kurallar 1 ile 5 arasında numaralandırılmış beş farklı aşamaya bölünmüştür. Bu kuralların amacı kelimeleri köküne kadar azaltmaktır.
  • Lemmatization: Bu metodolojinin anahtarı dilbilimdir. Doğru lemma'yı çıkarmak için her kelimenin morfolojik analizine bakmak gerekir. Bu, böyle bir analiz sağlanacak her dil için sözlüklere sahip olunmasını gerektirir.

Hangisi en iyisi: Lemmatization mı Stemming mi?

Sonuç olarak, bir stemmer geliştirmenin lemmatizer geliştirmekten çok daha basit olduğu söylenebilir. Lemmatizer'da, algoritmanın sözcüğün uygun biçimini aramasını sağlayan sözlükleri oluşturmak için derin dilbilim bilgisi gereklidir. Bu yapıldığında, gürültü azaltılacak ve bilgi alma sürecinde sağlanan sonuçlar daha doğru olacaktır.

Sözlük

Henüz yaygın olarak kullanılıp kullanılmadığını bilmediğim için yazıda İngilizce halleriyle kullandığım stemming ve lemmatization için Türkçe yazılardan derlediğim karşılıklar aşağıdaki gibidir:
  • stemming: sıkılama, gövdeleme
  • lemmatization: kök çözümleme, sözbirimleştirme

Kaynaklar ve Ek Okumalar


Not: Yazıya ilk başladığım zaman yeteri kadar araştırma yapmadığım için gözümden kaçan Özlem Karagedik'in Normalleştirme ve Genişletme Yöntemleri Kullanılarak Bilgiye Erişim Sürecinin İyileştirilmesi başlıklı tezindeki ilgili bölümleri de daha çok kişiye ulaşması için aşağıda alıntılıyorum. Benim yukarıda yazdıklarımdan çok daha derli toplu.

Hem yukarıda yazılanların hem de aşağıdakilerin bu iki kavramla ilk kez karşılaşacak kişiler için yeterince basit ve açıklayıcı olmadığını düşünüyorsanız ve bu durumu düzeltmek için fikirleriniz varsa yorum olarak belirtmekten veya konuyla ilgili yeni yazılar yazmaktan çekinmeyin.

Kelimeyi Yalın Haline İndirme İşlemleri

Bir dilde, aynı kelimenin birden farklı biçimi bulunabilmektedir. Bunlar, bir kelimeden türetilerek oluşturulmuş kelimeler veya bir kelimenin ek almış halleri olabilmektedir. Bu yüzden belgelerde, aslında aynı temele sahip kelimelerin farklı biçimleri kullanılabilmektedir.

Örneğin "çalışmak", "çalıştılar" ve "çalışıyor" kelimeleri "çalış" kelimesinin farklı ek almış halleridir. "Demokratik" ve "demokratikleşme" kelimeleri ise "demokrasi" kelimesinden türetilmiş olan yeni kelimelerdir. Bilgiye erişim sistemlerinde bir kelime için arama yapıldığında bu kelimeden türeyen veya bu kelimenin ek almış hallerini de içeren belgelere de erişilebilmesi istenen bir durumdur.

Sözdizimsel olarak gövdeleme (stemming) ve anlamsal köküne inme (lemmatization) işlemlerinin amacı; bir kelimenin çekim hallerini ve türetilmiş biçimlerini azaltarak daha temel ortak bir biçime sokmaktır. Kelimelerin ortak bir biçime sokulmasına bir örnek aşağıda verilmiştir:

came, coming, comes -> come
children, children's, child's,child -> child

the children came home -> the child come home

Gövdeleme ve anlamsal köke inme işlemlerinin amaçları aynı olsa da, kelimeleri kök veya gövdelerine indirme mantıkları birbirlerinden farklıdır. Gövdeleme algoritması, genel olarak kelimelerin son eklerini keserek amacına ulaşmaya çalışmaktadır.

Anlamsal köke inme ise bir sözlük kullanarak ve kelimelerin anlamsal analizlerini yaparak en temel hallerine ulaşmayı amaçlamıştır (Manning et al., 2009).

Şimdi gövdeleme ve anlamsal olarak köke inme işlemlerinin detaylarından bahsedelim:

Gövdeleme (Stemming)

Çoğu durumda, kelimelerin yapısal çeşitleri, benzer anlamlara sahiptir ve bilgiye erişim sistemlerinde aynı anlamda sayılabilmektedir. Bu sebeple bir takım gövdeleme algoritmaları geliştirilmiştir (Porter, 1980; Lovins, 1968; Paice, 1990). Bu algoritmalar sonucunda kelimeler gövdelerine veya köklerine ayrılmaktadırlar.

Bilgiye erişim sistemlerinde, belgelerdeki ve sorgulardaki terimler, orijinal hallerinde kullanılmayıp gövde halleriyle temsil edilmektedirler. Bu aynı zamanda belgelerde geçen farklı kelime sayısında ve belge kümesinin sözlüğündeki kelime sayısının da azalmasını sağlayarak bellekte kelimelerin kaplayacağı yeri ve işlem süresini de azaltmaktadır.

Gövdeleme işlemi, kelimelerden ön ekleri ve son ekleri atma işlemidir. Bu yöntemle, kelimelerin çekilmiş veya türetilmiş hallerinden, kök veya gövde biçimine getirilmesi amaçlanmıştır. Gövdeleme işlemi sonucunda ortaya çıkan gövdenin, kelimenin biçimsel köküyle aynı olması şartı yoktur. Birbiriyle ilgili kelimelerin aynı gövdeyle eşleşmesi yeterlidir. Gövdeleme algoritmaları, bilgisayar bilimlerinde uzun bir zamandan beri süregelen bir problemdir. Stemming süreci, bilgiye erişim sistemlerinde ve doğal dil işleme problemlerinin çözülmesinde faydalıdır.

Bilgiye erişim sistemleri kapsamında; gövdeleme, bir kelimenin birbirinden farklı biçimlerine bir araya getirerek, anma seviyesinde düşmeye sebep olan kelimelerin birbiriyle eşleşememesi problemini önlemeye çalışmaktadır. Basit bir örnek vermek gerekirse "How to drive" başlıklı bir belgenin arandığı düşünüldüğünde, kullanıcı "drive" kelimesi yerine "driving" kelimesini kullanarak arama yaptığında başlık ve arama arasında bir eşleşme olmayacaktır. Fakat sorgu gövdelenerek "driving" kelimesi "drive" haline getirildiği zaman, belgeye erişilebilecektir.

İngilizce'de gövdeleme işlemi için kullanılan en yaygın algoritma Porter Stemmer algoritmasıdır (Porter, 1980). Porter Stemmer algoritması çok uzun ve karmaşık bir algoritmadır. Algoritma 5 aşamadan oluşmaktadır. Her bir aşama, ardışık olarak uygulanmaktadır. Her aşamada kelimeye uygulanacak kural seçilir. Örneğin kural grupları içerisinde en uzun son ek'e uygulanacak olan kural seçilerek kelimeye uygulanır. İlk aşamadaki bu kural gruplarının örneği ve kelimelere uygulanışı aşağıda yer almaktadır.

Kural Örnek
SSES -> SS caresses -> caress
IES -> I ponies -> poni
SS -> SS gloss -> gloss
S -> S dogs -> dog

Stemmer algoritmaları, kelimelerin dilbilimsel analizlerine ve anlamlarına bakmadan, dil özelindeki bir takım kuralları kullanarak, kelimelerin ön eklerini ve son eklerini atmaktadır. Bu kuralları uygularken stemmer algoritmaları bir takım hatalara yol açabilmektedir. Bu hataları başlıca iki grup altında toplamak gerekirse:
  1. Aynı kavramsal kümeye ait iki kelime, aynı gövdelere indirgenmeleri gerekirken, farklı gövdelere indirgenebilmektedir.
  2. Farklı kavramsal kümelere ait iki kelimenin, gövdelenmiş hallerinin de farklı olması beklenirken, iki kelime aynı gövdeye indirgenebilmektedir.
Bu durumda birinci gruba bakıldığında, aslında aynı gövdeye veya köke sahip iki kelime, hatalı bir gövdeleme işlemi sonucunda ayrı iki gövde halinde kalacağı için bu kelimeleri içeren sorgular ve belgeler eşleşemeyecektir. İkinci grupta ise birbirinden farklı iki kelime, gövdeleme işlemi sonucunda aynı gövdelere sahip olacağı için, belgeler ve sorgular arasında yanlış bir eşleşme olabilecektir.

Sadece belirli kurallara dayanarak kelimelerin ön ve son eklerini kesen bir gövdeleme algoritması yerine dilbilimsel analizlere dayanarak kelimelerin köklerine inen bir algoritma da tercih edilebilmektedir.

Anlamsal olarak köke inme (Lemmatization)

Dilbiliminde, anlamsal olarak köke inme, bir kelimenin birbirinden farklı biçimlerinin bir araya getirilerek tek bir unsurmuş gibi analiz edilmesi sürecidir.

Sayısal dilbiliminde ise, anlamsal olarak köke inme, bir kelimenin en yalın biçimini belirleme sürecinin algoritmasıdır. Bu süreç, kelimenin içeriğini anlama, kelimenin cümle içerisindeki türünü belirleme gibi karmaşık kısımları içermektedir.

Çoğu dilde, kelimeler birçok farklı biçimde yer almaktadır. Örneğin, "koş" kelimesi; "koşmak", "koşacak", "koştu", "koşuyor" gibi değişik biçimlerde görülebilmektedir. Sözlükte bu kelimelerin en temel biçimine bakıldığında, bunun koş kelimesi olduğu görülecektir.

Gövdeleme ve anlamsal olarak köke inme arasında fark, gövdeleme algoritmalarının kelimelerin içeriğini bilmeden işlem yapması ve bir kelimenin türüne göre farklı anlamlar ifade edebileceğini ayıramamasıdır.

Örneğin İngilizcedeki better kelimesinin kökü good'tur. Ve köke inme işlemi sonucunda, bu kök bulunacaktır. Fakat gövdeleme bunu bulamayacaktır. Veya meeting kelimesi hem fiil (we are meeting tomorrow) hem de toplantı anlamında isim (in our last meeting) olarak kullanılabilir. Anlamsal olarak köke inme işlemi ile içeriğe bakılarak doğru kök seçilebilecektir.

Yorumlar

Bu blogdaki popüler yayınlar

Diğer Dillerde Hoşçakal

Mızıka Tabları Nasıl Okunur

conio.h