-
Notifications
You must be signed in to change notification settings - Fork 210
Metin Normalizasyonu
Eldeki derlemler iki gruba ayrılır. Haber, kitap, alt-yazı türü derlemler temiz (clean), forum, tweet türü derlemler gürültülü (noisy) olacak şekilde.
Daha sonta morfolojik analiz kullanarak her iki derlem için doğru (correct) ve yanlış (incorrect) kelime listeleri üretilir. Bunu yaparken morfolojik analiz aracı içindeki köy-mahalle isimlerini içeren kısmı iptal ettim. Rakamlar, url, hashtag vs ise ihmal edilen kelimeler (ignored) listesine girer. Listeye girmeden kelimeler küçük harfe dönüştürülür ve kesme işaretleri silinir. Listeler aynı zamanda frekans bilgisi de içerir.
Bu listelerden bazı yararlı veriler kurallar ve dil modeli kullanarak elde edilebilir.
- Türkçe karakter kullanılmayan kelimelerin türkçe karakter kullanılan hallerinin bulunması (sadece adaylar)
- Yanlışıkla bitişik yazılan kelimelerin büyük oranda bulunması
- Soru eklerinin bulunması
- Temiz-doğru ve gürültülü-doğru içerisinde aslında doğru olmayan ama morfolojik analizden geçen kelimelerin bir kısmı bulunur. Bunlar "muhtemelen yanlış (possibly incorrect)" listesi olarak elde edilir. temiz-doğru ve gürültülü-doğru birleştirilir, oluşan listeden "muhtemelen yanlış" çıkarılır. Temiz-yanlış ve gürültülü-yanlış birleştirilir.
Sonuçta elimizde üç liste oluşur (ihmal edilen kelimeleri kullanmıyoruz).
- Doğru
- Yanlış
- Muhtemelen Yanlış
Hatalı kelimelerin yerine gelebilecek doğru keliemlerin bulunması için yapılan işlerden birisi özel bir graf üzerinde rasgele yürüme algoritmasının işletilmesidir. Bu oldukça yüksek işlem gücü ve bellek gerektiren bir iştir. Bunun için kelime listelerinin çıkarıldığı derlemler ve üretilen kelime listeleri kullanılır. Derlemler baştan sonra taranır. Paragraflar cümlelere ayrılır. Her cümle içindeki kelimelerin sıra ile taranır. Eğer bir kelime kelime listelerinin birine dahilse, bağlama bakılır. Bağlam, farklı şeyler olabilir. Örneğin kelimenin sol ve sağındaki kelimeler olsun. "Bu akşam baılk var !" cümlesi için kelime ve bağlamlar:
Bu: <s>,akşam
akşam: Bu,baılk
baılk: akşam,var
var: baılk,!
sonra çift taraflı (bipartite) bir bağlam-kelime ağı çıkarılır. Sol tarafta bağlamlar, sağ tarafta kelimeler yer alır. Her bağlamdan o bağlam içinde geçen kelime düğümlerine bir bağlantı vardır. Bu bağlantının değeri ise o kelimenin o bağlamda kaç kez geçtiği bilgisidir.
Örneğin
[akşam,var] --- 35 ---> ziyafet
[akşam,var] --- 12 ---> parti
[akşam,var] --- 5 ---> balık
[akşam,var] --- 1 ---> baılk