Beispiel #1
0
        public void kelimeBicimlendir(Kelime kelime)
        {
            Kok        kok    = kelime.kok();
            HarfDizisi olusan = kelime.icerik();

            if (kok.tip().Equals(KelimeTipi.KISALTMA))
            {
                //cozumleme sirasinda eklenmis harf varsa onlari sil.
                int silinecek = kok.icerik().Length;
                if (kok.ozelDurumIceriyormu(TurkceKokOzelDurumTipi.KISALTMA_SON_SESSIZ))
                {
                    silinecek += 2;
                }
                if (kok.ozelDurumIceriyormu(TurkceKokOzelDurumTipi.KISALTMA_SON_SESLI))
                {
                    silinecek++;
                }
                //kelimenin olusan kismindan kokun icereigini sil.
                olusan.harfSil(0, silinecek);
                //simdi kokun orjinal halini ekle.
                olusan.ekle(0, new HarfDizisi(kok.asil(), alfabe));

                if (olusan.Length == kok.asil().Length)
                {
                    return;
                }
                //eger gerekiyorsa kesme isareti koy.
                if (!olusan.harf(kok.asil().Length - 1).Equals(alfabe.harf('.')))
                {
                    olusan.ekle(kok.asil().Length, alfabe.harf('\''));
                }
            }
            else if (kok.tip() == KelimeTipi.OZEL)
            {
                olusan.harfDegistir(0, alfabe.buyukHarf(olusan.ilkHarf()));
                if (kok.ozelDurumIceriyormu(TurkceKokOzelDurumTipi.KESMESIZ))
                {
                    return;
                }
                List <Ek> ekler = kelime.ekler();
                if (ekler.Count > 1)
                {
                    Ek ek = (Ek)ekler[1];
                    if (ek.iyelikEkiMi() || ek.halEkiMi())
                    {
                        int kesmePozisyonu = kok.icerik().Length;
                        olusan.ekle(kesmePozisyonu, alfabe.harf('\''));
                    }
                }
            }
            // ozel ic karakter iceren kokler icin bicimleme

/*        if (kok.ozelDurumlar().contains(TurkceKokOzelDurumlari.OZEL_IC_KARAKTER)) {
 *          //olusan ksimdan koku sil
 *          int silinecek = kok.icerik().length();
 *          olusan.harfSil(0, silinecek);
 *          //simdi kokun orjinal halini ekle.
 *          olusan.ekle(0, new HarfDizisi(kok.asil()));
 *      }*/
        }
Beispiel #2
0
        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());
        }
Beispiel #3
0
        public bool kelimeBicimiDenetle(Kelime kelime, String giris)
        {
            if (giris.Length == 0)
            {
                return(false);
            }
            Kok kok = kelime.kok();

            if (kok.tip().Equals(KelimeTipi.KISALTMA))
            {
                // eger giriskokun orjinal hali ile baslamiyorsa hatali demektir.
                String _asil = kok.asil();
                if (!giris.StartsWith(_asil))
                {
                    return(false);
                }
                if (giris.Equals(_asil))
                {
                    return(true);
                }
                //burada farkli kisaltma turleri icin kesme ve nokta isaretlerinin
                // dogru olup olmadigina bakiliyor.
                String kalan = giris.Substring(_asil.Length);
                if (_asil[_asil.Length - 1] == '.')
                {
                    return(kalan[0] != '\'');
                }
                return(kalan[0] == '\'');
            }
            else if (kelime.kok().tip() == KelimeTipi.OZEL)
            {
                if (Char.IsLower(giris[0]))
                {
                    return(false);
                }
                if (kelime.kok().ozelDurumIceriyormu(TurkceKokOzelDurumTipi.KESMESIZ))
                {
                    return(true);
                }
                List <Ek> ekler = kelime.ekler();
                if (ekler.Count > 1)
                {
                    Ek ek = (Ek)ekler[1];
                    if (ek.iyelikEkiMi() || ek.halEkiMi())
                    {
                        int kesmePozisyonu = kelime.kok().icerik().Length;
                        return(kesmePozisyonu <= giris.Length && giris[kesmePozisyonu] == '\'');
                    }
                }
            }
            // ozel ic karakter iceren kokler icin bicimleme

/*        if (kok.ozelDurumlar().contains(TurkceKokOzelDurumlari.OZEL_IC_KARAKTER)) {&
 *          //olusan ksimdan koku sil
 *          String _asil = kok.asil();
 *          if (!giris.startsWith(_asil))
 *            return false;
 *      }*/
            return(true);
        }