Example #1
0
        public override String ToString()
        {
            StringBuilder ekStr = new StringBuilder();

            foreach (Ek ek in _ekler)
            {
                ekStr.Append(ek.ad()).Append(" + ");
            }
            if (ekStr.Length > 3)
            {
                ekStr.Remove(ekStr.Length - 3, 3);
            }
            return("{Icerik: " + _icerik + " Kok: " + _kok.icerik() + " tip:" + _kok.tip() + "} " +
                   " Ekler:" + ekStr);
        }
        private String getDuzMetinSozlukForm(Kok kok)
        {

        //icerik olarak icerigin varsa asil halini yoksa normal kok icerigini al.
        String icerik = kok.icerik();
        if (kok.asil() != null)
            icerik = kok.asil();

        StringBuilder res = new StringBuilder(icerik);
        res.Append(" ");
        // Tipi ekleyelim.
        if (kok.tip() == KelimeTipi.YOK) 
        {
            logger.Warn("tipsiz kok:" + kok);
            return res.ToString();
        }

        res.Append(kok.tip().ToString());
        res.Append(" ");
        res.Append(getOzellikString(kok.ozelDurumDizisi()));
        return res.ToString();
    }
        public void duzyaziOzelDurumOku(Kok kok, String okunanIcerik, String[] parcalar)
        {
            for (int i = 2; i < parcalar.Length; i++)
            {

                String _ozelDurum = parcalar[i];

                //kisaltma ozel durumunun analizi burada yapiliyor.
                if (_ozelDurum.StartsWith(TurkceKokOzelDurumTipi.KISALTMA_SON_SESLI.KisaAd))
                {
                    int loc = _ozelDurum.IndexOf(':');
                    if (loc > 0)
                    {
                        String parca = _ozelDurum.Substring(loc + 1);
                        char sonSesli = parca[0];
                        if (!alfabe.harf(sonSesli).sesliMi())
                            logger.Warn("Hatali kisaltma harfi.. Sesli bekleniyordu." + _ozelDurum);
                        kok.KisaltmaSonSeslisi = sonSesli;
                        if (parca.Length > 1)
                        {
                            kok.ozelDurumEkle(ozelDurumlar[TurkceKokOzelDurumTipi.KISALTMA_SON_SESSIZ]);
                        }
                        else
                            kok.ozelDurumCikar(TurkceKokOzelDurumTipi.KISALTMA_SON_SESLI);
                    }
                    else
                    {
                        char sonHarf = kok.icerik()[kok.icerik().Length - 1];
                        if (!alfabe.harf(sonHarf).sesliMi())
                        {
                            kok.KisaltmaSonSeslisi='e';
                            kok.ozelDurumEkle(ozelDurumlar[TurkceKokOzelDurumTipi.KISALTMA_SON_SESLI]);
                        }
                    }
                    continue;
                }

                //diger ozel durumlarin elde edilmesi..
                KokOzelDurumu oz = ozelDurum(_ozelDurum);
                if (oz != null)
                {
                    kok.ozelDurumEkle(oz);
                }
                else
                {
                    logger.Warn("Hatali kok bileseni" + kok.icerik() + " Token: " + _ozelDurum);
                }
            }

            //kisaltmalari ve ozel karakter iceren kokleri asil icerik olarak ata.
            if (kok.tip() == KelimeTipi.KISALTMA || kok.ozelDurumIceriyormu(TurkceKokOzelDurumTipi.OZEL_IC_KARAKTER))
                kok.Asil=okunanIcerik;
        }
 public void ozelDurumBelirle(Kok kok)
 {
     // eger bir fiilin son harfi sesli ise bu dogrudan simdiki zaman ozel durumu olarak ele alinir.
     // bu ozel durum bilgi tabaninda ayrica belirtilmedigi icin burada kok'e eklenir.  aramak -> ar(a)Iyor
     char sonChar = kok.icerik()[kok.icerik().Length - 1];
     if (kok.tip() == KelimeTipi.FIIL && alfabe.harf(sonChar).sesliMi())
     {
         //demek-yemek fiilleri icin bu uygulama yapilamaz.
         if (!kok.ozelDurumIceriyormu(TurkceKokOzelDurumTipi.FIIL_KOK_BOZULMASI))
         {
             kok.ozelDurumEkle(ozelDurumlar[TurkceKokOzelDurumTipi.SIMDIKI_ZAMAN]);
         }
     }
 }
 public bool kokGirisDegismiVarsaUygula(Kok kok, HarfDizisi kokDizi, HarfDizisi girisDizi) {
     //turkce'de sadece kisaltmalarda bu metoda ihtiyacimiz var.
     char c = kok.KisaltmaSonSeslisi;
     if (girisDizi.Length == 0) return false;
     if (kok.tip().Equals(KelimeTipi.KISALTMA) && c != 0) {
         TurkceHarf h = alfabe.harf(c);
         //toleransli cozumleyicide kok giristen daha uzun olabiliyor.
         // o nedenle asagidaki kontrolun yapilmasi gerekiyor.
         int kokBoyu = kok.icerik().Length;
         if (kokBoyu <= girisDizi.Length)
             girisDizi.ekle(kokBoyu, h);
         else
             girisDizi.ekle(h);
         kokDizi.ekle(h);
         if (kok.ozelDurumIceriyormu(TurkceKokOzelDurumTipi.KISALTMA_SON_SESSIZ)) {
             //gene toleransli cozumleyicinin hata vermemesi icin asagidaki kontrole ihtiyacimiz var
             if (kokBoyu < girisDizi.Length)
                 girisDizi.ekle(kokBoyu + 1, alfabe.harf('b'));
             else
                 girisDizi.ekle( alfabe.harf('b'));
             kokDizi.ekle( alfabe.harf('b'));
         }
         return true;
     }
     return false;
 }
Example #6
0
 public Kelime(Kok kok, HarfDizisi dizi)
 {
     this._kok    = kok;
     this._icerik = dizi;
     _tip         = kok.tip();
 }
Example #7
0
 public Kelime(Kok kok, Alfabe alfabe)
 {
     this._kok = kok;
     _icerik   = new HarfDizisi(kok.icerik(), alfabe);
     _tip      = kok.tip();
 }
Example #8
0
 public Kelime(Kok kok, HarfDizisi dizi)
 {
     this._kok = kok;
     this._icerik = dizi;
     _tip = kok.tip();
 }
Example #9
0
 public Kelime(Kok kok, Alfabe alfabe)
 {
     this._kok = kok;
     _icerik = new HarfDizisi(kok.icerik(), alfabe);
     _tip = kok.tip();
 }