public override HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici) {
     if (kelime.sonEk().ad().Equals(TurkceEkAdlari.FIIL_KOK)
          && kelime.kok().ozelDurumIceriyormu(TurkceKokOzelDurumTipi.GENIS_ZAMAN))
         return ekUretici.cozumlemeIcinEkUret(kelime.icerik(), giris, uretimBilesenleri());
     else
         return null;
 }
Example #2
1
 public override HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici)
 {
     if (this.onEkler.Contains(kelime.sonEk()))
         return ekUretici.cozumlemeIcinEkUret(kelime.icerik(), giris, _uretimBilesenleri);
     else
         return null;
 }
        public void testCiftleme()
        {
            HarfDizisi dizi = hd("hat");

            dilBilgisi.kokOzelDurumlari().ozelDurum("CIFT").uygula(dizi);
            Assert.AreEqual("hatt", dizi.ToString());
        }
        public void testYumusama()
        {
            HarfDizisi dizi = hd("kitap");

            dilBilgisi.kokOzelDurumlari().ozelDurum("YUM").uygula(dizi);
            Assert.AreEqual("kitab", dizi.ToString());
        }
        public void testAraSesliDusmesi()
        {
            HarfDizisi dizi = hd("burun");

            dilBilgisi.kokOzelDurumlari().ozelDurum("DUS").uygula(dizi);
            Assert.AreEqual("burn", dizi.ToString());
        }
Example #6
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()));
 *      }*/
        }
Example #7
0
 public void uygula(HarfDizisi dizi)
 {
     if (dizi.Length >= 2)
     {
         dizi.harfSil(dizi.Length - 2);
     }
 }
Example #8
0
 public void uygula(HarfDizisi dizi)
 {
     if (dizi.aradanKiyasla(dizi.Length - 2, NK))
     {
         dizi.harfDegistir(dizi.Length - 1, alfabe.harf('g'));
     }
 }
Example #9
0
        public HarfDizisi cozumlemeIcinEkUret(HarfDizisi ulanacak, HarfDizisi giris, List <EkUretimBileseni> bilesenler)
        {
            HarfDizisi sonuc    = new HarfDizisi(4);
            TurkceHarf sonSesli = ulanacak.sonSesli();

            for (int i = 0; i < bilesenler.Count; i++)
            {
                EkUretimBileseni ekUretimBileseni = bilesenler[i];
                TurkceHarf       harf             = ekUretimBileseni.harf();
                switch (ekUretimBileseni.kural())
                {
                case UretimKurali.HARF:
                    sonuc.ekle(harf);
                    break;

                case UretimKurali.KAYNASTIR:
                    if (ulanacak.sonHarf().sesliMi())
                    {
                        sonuc.ekle(harf);
                    }
                    break;

                case UretimKurali.SERTLESTIR:
                    if (ulanacak.sonHarf().sertMi())
                    {
                        sonuc.ekle(harf.sertDonusum());
                    }
                    else
                    {
                        sonuc.ekle(harf);
                    }
                    break;

                case UretimKurali.SESLI_AE:
                    if (i == 0 && ulanacak.sonHarf().sesliMi())
                    {
                        break;
                    }
                    else
                    {
                        sonSesli = sesliUretici.sesliBelirleAE(sonSesli);
                        sonuc.ekle(sonSesli);
                    }
                    break;

                case UretimKurali.SESLI_IU:
                    if (i == 0 && ulanacak.sonHarf().sesliMi())
                    {
                        break;
                    }
                    else
                    {
                        sonSesli = sesliUretici.sesliBelirleIU(sonSesli);
                        sonuc.ekle(sonSesli);
                    }
                    break;
                }
            }
            return(sonuc);
        }
Example #10
0
        public void testDiziEkle()
        {
            HarfDizisi dizi2 = new HarfDizisi("ler", alfabe);

            dizi1.ekle(dizi2);
            Assert.AreEqual(dizi1.ToString(), "kalemler", "dizi1 ekleme problemi " + dizi1.ToString());
        }
        public Kelime[] cozumle(String strGiris)
        {
            String strIslenmis = alfabe.ayikla(strGiris);

            if (strIslenmis.Length == 0)
            {
                return(Collections.BOS_KELIME_DIZISI);
            }
            List <Kok>    kokler   = kokBulucu.getAdayKokler(strIslenmis);
            List <Kelime> cozumler = new List <Kelime>();

            if (logger.IsInfoEnabled)
            {
                logger.Info("Giris: " + strIslenmis + ", Adaylar: " + kokler);
            }

            HarfDizisi girisDizi     = new HarfDizisi(strIslenmis, alfabe);
            bool       icerikDegisti = false;

            for (int i = kokler.Count - 1; i >= 0; i--)
            {
                Kok        kok     = kokler[i];
                HarfDizisi kokDizi = new HarfDizisi(kok.icerik(), alfabe);
                if (icerikDegisti)
                {
                    girisDizi = new HarfDizisi(strIslenmis, alfabe);
                }
                //int kokHatasi=MetinAraclari.editDistance(kok.icerik(), strGiris.substring(0,kok.icerik().length()));
                int kokHatasi = 0;

                icerikDegisti = yardimci.kokGirisDegismiVarsaUygula(kok, kokDizi, girisDizi);
                if (logger.IsInfoEnabled)
                {
                    logger.Info("Aday:" + kok.icerik() + " tolerans:" + kokHatasi);
                }
                if (MetinAraclari.inEditDistance(kok.icerik(), strIslenmis, TOLERANS))
                {
                    cozumler.Add(new Kelime(kok, alfabe));
                }
                IList <Kelime> sonuclar;
                if (TOLERANS > kokHatasi)
                {
                    sonuclar = coz(kok, kokDizi, girisDizi, TOLERANS - kokHatasi);
                }
                else
                {
                    sonuclar = coz(kok, kokDizi, girisDizi, 0);
                }
                cozumler.AddRange(sonuclar);
            }
            foreach (Kelime kel in cozumler)
            {
                yardimci.kelimeBicimlendir(kel);
                if (Char.IsUpper(strGiris[0]))
                {
                    kel.icerik().harfDegistir(0, alfabe.buyukHarf(kel.icerik().ilkHarf()));
                }
            }
            return(cozumler.ToArray());
        }
        private bool ozelDurumDenetle(Kelime kelime, HarfDizisi girisDizi, Ek ek, int tolerans)
        {
            if (!kelime.kok().yapiBozucuOzelDurumVarmi())
            {
                return(true);
            }
            HarfDizisi testKokIcerigi = kelime.kok().ozelDurumUygula(alfabe, ek);

            //if (log.isTraceEnabled()) log.trace("Ozel durum sonrasi:" + testKokIcerigi + "  ek:" + ek.getIsim());
            if (testKokIcerigi == null)
            {
                return(false);
            }
            if (MetinAraclari.isInSubstringEditDistance(testKokIcerigi.ToString(), girisDizi.ToString(), tolerans))
            {
                kelime.setIcerik(new HarfDizisi(testKokIcerigi));
                //if (log.isTraceEnabled()) log.trace("basari, kelime:" + kelime.icerik());
                return(true);
            }
            else
            {
                kelime.setIcerik(new HarfDizisi(kelime.kok().icerik(), alfabe));
            }
            //if (log.isTraceEnabled()) log.trace("kelime:" + kelime.icerik());
            return(false);
        }
Example #13
0
        private Kelime kelimeUret(Kok kok, HarfDizisi dizi)
        {
            Kelime kelime = new Kelime(kok, dizi);

            kelime.ekEkle(ekYonetici.ilkEkBelirle(kelime.kok()));
            return(kelime);
        }
Example #14
0
 public void uygula(HarfDizisi dizi)
 {
     if (dizi.Length > 0)
     {
         dizi.ekle(dizi.harf(dizi.Length - 1));
     }
 }
Example #15
0
        /**
         * Verilen kelime için sonHeceHarfSayisi indekslerini bir dizi içinde döndürür
         *
         * @param giris : Hece indeksleri belirlenecek
         * @return Hece indekslerini tutan bir int[]
         *         Örnek: "merhaba" kelimesi için 0,3,5
         *         "türklerin" kelimesi için 0,4,6
         */
        public int[] heceIndeksleriniBul(String giris)
        {
            giris = alfabe.ayikla(giris);
            HarfDizisi kelime = new HarfDizisi(giris, alfabe);

            int[] tmpHeceIndeksleri = new int[50];
            int   heceIndeks        = 0;

            while (kelime.Length > 0)
            {
                int index = heceBulucu.sonHeceHarfSayisi(kelime);
                if (index < 0)
                {
                    return(null);
                }
                int basla = kelime.Length - index;
                tmpHeceIndeksleri[heceIndeks++] = basla;
                if (heceIndeks > 50)
                {
                    return(null);
                }
                kelime.kirp(basla);
            }
            int[] heceIndeksleri = new int[heceIndeks];
            for (int i = 0; i < heceIndeks; i++)
            {
                heceIndeksleri[i] = tmpHeceIndeksleri[heceIndeks - i - 1];
            }
            return(heceIndeksleri);
        }
Example #16
0
        public void testHarfDegistir()
        {
            HarfDizisi kelime = new HarfDizisi("kedicikler", alfabe);

            kelime.harfDegistir(0, alfabe.harf('c'));
            kelime.harfDegistir(3, alfabe.harf('a'));
            Assert.AreEqual(kelime.ToString(), "cedacikler");
        }
Example #17
0
 public override HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici)
 {
     if (kelime.gercekEkYok() && kelime.kok().ozelDurumIceriyormu(TurkceKokOzelDurumTipi.SU_OZEL_DURUMU))
     {
         return(ekUretici.cozumlemeIcinEkUret(kelime.icerik(), giris, uretimBilesenleri()));
     }
     return(null);
 }
 public override HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici) {
     TurkceHarf son = kelime.sonHarf();
     if (son.sesliMi() || ((son.charDeger()=='r') || son.charDeger()==('l'))
             && kelime.icerik().sesliSayisi() > 1) {
         return T;
     }
     return null;
 }
 public override HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici)
 {
     TurkceHarf sonSesli = kelime.icerik().sonSesli();
     if (sonSesli.charDeger() == 'u' || sonSesli.charDeger() == Alfabe.CHAR_uu)
         return ekUretici.cozumlemeIcinEkUret(kelime.icerik(), giris, _uretimBilesenleri);
     else
         return null;
 }
Example #20
0
        public void testIlkSesli()
        {
            HarfDizisi kelime = new HarfDizisi("saatte", alfabe);

            Assert.AreEqual(kelime.ilkSesli(0), alfabe.harf('a'));
            Assert.AreEqual(kelime.ilkSesli(1), alfabe.harf('a'));
            Assert.AreEqual(kelime.ilkSesli(3), alfabe.harf('e'));
            Assert.AreEqual(kelime.ilkSesli(6), Alfabe.TANIMSIZ_HARF);
        }
Example #21
0
 public void uygula(HarfDizisi dizi)
 {
     String kelime = kokDonusum[dizi.ToString()];
     if (kelime != null)
     {
         dizi.sil();
         dizi.ekle(new HarfDizisi(kelime, alfabe));
     }
 }
Example #22
0
        public void testBastanKarsilastir()
        {
            HarfDizisi dizi = new HarfDizisi("merhaba", alfabe);

            Assert.IsTrue(dizi.bastanKiyasla(new HarfDizisi("m", alfabe)));
            Assert.IsTrue(dizi.bastanKiyasla(new HarfDizisi("merha", alfabe)));
            Assert.IsTrue(dizi.bastanKiyasla(new HarfDizisi("merhaba", alfabe)));
            Assert.IsTrue(dizi.bastanKiyasla(new HarfDizisi("merhabal", alfabe)) == false);
        }
Example #23
0
        public void uygula(HarfDizisi dizi)
        {
            String kelime = kokDonusum[dizi.ToString()];

            if (kelime != null)
            {
                dizi.sil();
                dizi.ekle(new HarfDizisi(kelime, alfabe));
            }
        }
Example #24
0
        public void testToStringIndex()
        {
            HarfDizisi dizi = new HarfDizisi("merhaba", alfabe);

            Assert.AreEqual(dizi.ToString(4), "aba");
            Assert.AreEqual(dizi.ToString(0), "merhaba");
            Assert.AreEqual(dizi.ToString(7), "");
            Assert.AreEqual(dizi.ToString(-1), "");
            Assert.AreEqual(dizi.ToString(6), "a");
        }
        public override HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici)
        {
            TurkceHarf son = kelime.sonHarf();

            if (son.sesliMi() || ((son.charDeger() == 'r') || son.charDeger() == ('l')) &&
                kelime.icerik().sesliSayisi() > 1)
            {
                return(T);
            }
            return(null);
        }
Example #26
0
 public override HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici)
 {
     if (this.onEkler.Contains(kelime.sonEk()))
     {
         return(ekUretici.cozumlemeIcinEkUret(kelime.icerik(), giris, _uretimBilesenleri));
     }
     else
     {
         return(null);
     }
 }
Example #27
0
 /**
 * en son kalin sesli harfi bulup onu ince formu ile degistirir.
 * ornegin saat -> saAt haline donusur. ince a harfi icin TurkceAlfabe sinifini inceleyin
 *
 * @param dizi
 */
 public void uygula(HarfDizisi dizi)
 {
     for (int i = dizi.Length - 1; i >= 0; i--)
     {
         TurkceHarf h = dizi.harf(i);
         if (h.sesliMi() && !h.inceSesliMi())
         {
             dizi.harfDegistir(i, _alfabe.kalinSesliIncelt(dizi.harf(i)));
         }
     }
 }
 public override HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici)
 {
     if (kelime.icerik().sesliSayisi() < 2)
     {
         return(ekUretici.cozumlemeIcinEkUret(kelime.icerik(), giris, uretimBilesenleri()));
     }
     else
     {
         return(null);
     }
 }
Example #29
0
        public void testKirp()
        {
            HarfDizisi dizi = new HarfDizisi("merhaba", alfabe);

            dizi.kirp(5);
            Assert.AreEqual("merha", dizi.ToString());
            dizi.kirp(5);
            Assert.AreEqual("merha", dizi.ToString());
            dizi.kirp(0);
            Assert.IsTrue(dizi.Length == 0);
        }
Example #30
0
 /**
  * en son kalin sesli harfi bulup onu ince formu ile degistirir.
  * ornegin saat -> saAt haline donusur. ince a harfi icin TurkceAlfabe sinifini inceleyin
  *
  * @param dizi
  */
 public void uygula(HarfDizisi dizi)
 {
     for (int i = dizi.Length - 1; i >= 0; i--)
     {
         TurkceHarf h = dizi.harf(i);
         if (h.sesliMi() && !h.inceSesliMi())
         {
             dizi.harfDegistir(i, _alfabe.kalinSesliIncelt(dizi.harf(i)));
         }
     }
 }
Example #31
0
        public void testHarfSil()
        {
            HarfDizisi kelime = new HarfDizisi("kedicikler", alfabe);

            kelime.harfSil(9);
            Assert.AreEqual(kelime.ToString(), "kedicikle");
            kelime.harfSil(0);
            Assert.AreEqual(kelime.ToString(), "edicikle");
            kelime.harfSil(3);
            Assert.AreEqual(kelime.ToString(), "ediikle");
        }
 public override  HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici) {
     if (kiyaslayici == null) return null;
     // eki olustur.
     HarfDizisi ek = ekUretici.cozumlemeIcinEkUret(kelime.icerik(), giris, uretimBilesenleri());
     TurkceHarf ekHarfi = sesliUretci.sesliBelirleIU(kelime.icerik());
     HarfDizisi olusum = new HarfDizisi("yor", alfabe);
     olusum.ekle(0, ekHarfi);
     int harfPozisyonu = kelime.boy() + ek.Length;
     if (kiyaslayici.aradanKiyasla(giris, olusum, harfPozisyonu))
         return ek;
     return null;
 }
Example #33
0
        public void testAradanEkle()
        {
            HarfDizisi dizi = HarfDizisiYap("kale");
            HarfDizisi ek   = HarfDizisiYap("ku");

            dizi.ekle(2, ek);
            Assert.AreEqual(dizi.ToString(), "kakule");
            ek = HarfDizisiYap("kara");
            dizi.ekle(0, ek);
            Assert.AreEqual(dizi.ToString(), "karakakule");
            dizi.ekle(20, ek);//Bu satýrda hata atmalý
        }
Example #34
0
        public void testCharSequenceMethods()
        {
            HarfDizisi dizi = new HarfDizisi("armut", alfabe);

            Assert.AreEqual(dizi.Length, 5);
            Assert.IsNull(dizi.subSequence(3, 1));
            Assert.AreEqual(new HarfDizisi("arm", alfabe), dizi.subSequence(0, 3));
            Assert.AreEqual(new HarfDizisi("rm", alfabe), dizi.subSequence(1, 3));
            Assert.AreEqual(new HarfDizisi("", alfabe), dizi.subSequence(3, 3));
            Assert.AreEqual(dizi.CharAt(0), 'a');
            Assert.AreEqual(dizi.CharAt(4), 't');
        }
Example #35
0
        public void testSesliSayisi()
        {
            HarfDizisi dizi = new HarfDizisi("merhaba", alfabe);

            Assert.IsTrue(dizi.sesliSayisi() == 3);
            dizi = new HarfDizisi("aarteetytye", alfabe);
            Assert.IsTrue(dizi.sesliSayisi() == 5);
            dizi = new HarfDizisi("art", alfabe);
            Assert.IsTrue(dizi.sesliSayisi() == 1);
            dizi = new HarfDizisi("rrt", alfabe);
            Assert.IsTrue(dizi.sesliSayisi() == 0);
        }
 public override HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici)
 {
     if (kelime.sonEk().ad().Equals(TurkceEkAdlari.FIIL_KOK) &&
         kelime.kok().ozelDurumIceriyormu(TurkceKokOzelDurumTipi.GENIS_ZAMAN))
     {
         return(ekUretici.cozumlemeIcinEkUret(kelime.icerik(), giris, uretimBilesenleri()));
     }
     else
     {
         return(null);
     }
 }
Example #37
0
        public void testHarfEkleHarf()
        {
            HarfDizisi dizi = new HarfDizisi("armut", alfabe);

            dizi.ekle(2, alfabe.harf('n'));
            Assert.AreEqual(dizi.ToString(), "arnmut");
            dizi.ekle(1, alfabe.harf('c'));
            Assert.AreEqual(dizi.ToString(), "acrnmut");
            dizi.ekle(0, alfabe.harf('s'));
            Assert.AreEqual(dizi.ToString(), "sacrnmut");
            dizi.ekle(8, alfabe.harf('a'));
            Assert.AreEqual(dizi.ToString(), "sacrnmuta");
        }
 public override HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici)
 {
     HarfDizisi ek = ekUretici.cozumlemeIcinEkUret(kelime.icerik(), giris, _uretimBilesenleri);
     // XXXX gibi Turkce harf tasimayan stringler icin koruma.
     // TODO: Daha dogru bir yontem bulunmali.
     if (ek == null)
     {
         return null;
     }
     int harfPozisyonu = kelime.boy() + ek.Length;
     if (giris.harf(harfPozisyonu).sesliMi())
         return ek;
     return null;
 }
Example #39
0
 public void testSonHece() {
     HeceBulucu heceBulur = new TurkceHeceBulucu();
     String[] strs = {"turk", "ara", "sarta", "siir", "siiir", "kanat", "kanaat",
             "yaptirt", "artti", "arttir", "arttirt", "sirret", "siirt", "teleskop"};
     int[] sonuclar = {4, 2, 2, 2, 2, 3, 2,
             4, 2, 3, 4, 3, 3, 3};
     HarfDizisi[] girisler = new HarfDizisi[strs.Length];
     for (int i = 0; i < strs.Length; i++)
         girisler[i] = hd(strs[i]);
     for (int i = 0; i < girisler.Length; i++) {
         HarfDizisi harfDizisi = girisler[i];
         Assert.AreEqual(heceBulur.sonHeceHarfSayisi(harfDizisi), sonuclar[i],harfDizisi.ToString());
     }
 }
Example #40
0
  public HarfDizisi cozumlemeIcinEkUret(HarfDizisi ulanacak, HarfDizisi giris, List<EkUretimBileseni> bilesenler)
  {
     HarfDizisi sonuc = new HarfDizisi(4);
     TurkceHarf sonSesli = ulanacak.sonSesli();
     for (int i = 0; i < bilesenler.Count; i++) {
         EkUretimBileseni ekUretimBileseni = bilesenler[i];
         TurkceHarf harf = ekUretimBileseni.harf();
         switch (ekUretimBileseni.kural()) {
             case UretimKurali.HARF:
                 sonuc.ekle(harf);
                 break;
             case UretimKurali.KAYNASTIR:
                 if (ulanacak.sonHarf().sesliMi())
                     sonuc.ekle(harf);
                 break;
             case UretimKurali.SERTLESTIR:
                 if (ulanacak.sonHarf().sertMi())
                     sonuc.ekle(harf.sertDonusum());
                else
                     sonuc.ekle(harf);
                 break;
             case UretimKurali.SESLI_AE:
                 if (i == 0 && ulanacak.sonHarf().sesliMi())
                     break;
                 else {
                     sonSesli = sesliUretici.sesliBelirleAE(sonSesli);
                     sonuc.ekle(sonSesli);
                 }
                 break;
             case UretimKurali.SESLI_IU:
                 if (i == 0 && ulanacak.sonHarf().sesliMi())
                     break;
                 else {
                     sonSesli = sesliUretici.sesliBelirleIU(sonSesli);
                     sonuc.ekle(sonSesli);
                 }
                 break;
         }
     }
     return sonuc;
 }
 public override HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici) {
     TurkceHarf son = kelime.sonHarf();
     if(son.sesliMi())
       return new HarfDizisi(0);
     HarfDizisi sonuc = new HarfDizisi();
     if (kelime.kok().ozelDurumIceriyormu(TurkceKokOzelDurumTipi.FIIL_ARA_SESLI_DUSMESI)) {
         //eger ara sesli dusmesi olmussa eklenecek seslinin dusen sesliye gore
         //belirlenmesi gerekir. yani, "kavurmak" koku ve "kavrulmuS" girisini dusunelim,
         //ara sesli dusmesi ozel durumu nedeniyle "u" harfi kokten duserek "kavr" haline
         //gelir. Ancak koke bu haliyle edilgenlik ekini eklemeye kalkarsak "kavrIlmIS"
         //seklinde yanlis bir kelime ortaya cikardi. Bu nedenle burada dusen eke gore hangi
         // harfin eklenecegi belirleniyor.
         HarfDizisi kok = new HarfDizisi(kelime.kok().icerik(), alfabe);
         TurkceHarf kokAsilSesli = kok.sonSesli();
         sonuc.ekle(sesliUretici.sesliBelirleIU(kokAsilSesli));
     } else
         sonuc.ekle(sesliUretici.sesliBelirleIU(kelime.icerik()));
     if (son.Equals(alfabe.harf('l')))
         sonuc.ekle(alfabe.harf('n'));
     else
         sonuc.ekle(alfabe.harf('l'));
     return sonuc;
 }
    public Kelime[] cozumle(String strGiris) {
        String strIslenmis = alfabe.ayikla(strGiris);
        if (strIslenmis.Length == 0)
            return Collections.BOS_KELIME_DIZISI;
        List<Kok> kokler = kokBulucu.getAdayKokler(strIslenmis);
        List<Kelime> cozumler = new List<Kelime>();
        if (logger.IsInfoEnabled) logger.Info("Giris: " + strIslenmis + ", Adaylar: " + kokler);

        HarfDizisi girisDizi = new HarfDizisi(strIslenmis, alfabe);
        bool icerikDegisti = false;
        for (int i = kokler.Count - 1; i >= 0; i--) {
            Kok kok = kokler[i];
            HarfDizisi kokDizi = new HarfDizisi(kok.icerik(), alfabe);
            if (icerikDegisti) {
                girisDizi = new HarfDizisi(strIslenmis, alfabe);
            }
            //int kokHatasi=MetinAraclari.editDistance(kok.icerik(), strGiris.substring(0,kok.icerik().length()));
            int kokHatasi = 0;

            icerikDegisti = yardimci.kokGirisDegismiVarsaUygula(kok, kokDizi, girisDizi);
            if (logger.IsInfoEnabled) logger.Info("Aday:" + kok.icerik() + " tolerans:" + kokHatasi);
            if (MetinAraclari.inEditDistance(kok.icerik(), strIslenmis, TOLERANS))
                cozumler.Add(new Kelime(kok, alfabe));
            IList<Kelime> sonuclar;
            if (TOLERANS > kokHatasi)
                sonuclar = coz(kok, kokDizi, girisDizi, TOLERANS - kokHatasi);
            else
                sonuclar = coz(kok, kokDizi, girisDizi, 0);
            cozumler.AddRange(sonuclar);
        }
        foreach (Kelime kel in cozumler) {
            yardimci.kelimeBicimlendir(kel);
            if (Char.IsUpper(strGiris[0]))
                kel.icerik().harfDegistir(0, alfabe.buyukHarf(kel.icerik().ilkHarf()));
        }
        return cozumler.ToArray();
    }
Example #43
0
 public override HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici) {
     if(kelime.gercekEkYok() && kelime.kok().ozelDurumIceriyormu(TurkceKokOzelDurumTipi.SU_OZEL_DURUMU))
        return ekUretici.cozumlemeIcinEkUret(kelime.icerik(), giris, uretimBilesenleri());
     return null;
 }
Example #44
0
 public void testSonHarfYumusat()
 {
     HarfDizisi kelime = new HarfDizisi("kitap", alfabe);
     kelime.sonHarfYumusat();
     Assert.AreEqual(kelime.sonHarf(), alfabe.harf('b'));
     kelime = new HarfDizisi("armut", alfabe);
     kelime.sonHarfYumusat();
     Assert.AreEqual(kelime.sonHarf(), alfabe.harf('d'));
     kelime = new HarfDizisi("kulak", alfabe);
     kelime.sonHarfYumusat();
     Assert.AreEqual(kelime.sonHarf(), alfabe.harf(Alfabe.CHAR_gg));
 }
Example #45
0
 public void uygula(HarfDizisi dizi)
 {
     if (dizi.Length > 0)
         dizi.ekle(dizi.harf(dizi.Length - 1));
 }
Example #46
0
 /**
  * giris ile gelen [dizi] harf dizisine ozel durumu uygular.
  * basit ziyaretci deseni (visitor pattern).
  *
  * @param dizi
  */
 public void uygula(HarfDizisi dizi)
 {
     _islem.uygula(dizi);
 }
 public void uygula(HarfDizisi dizi)
 {
 }
Example #48
0
 public void testToStringIndex()
 {
     HarfDizisi dizi = new HarfDizisi("merhaba", alfabe);
     Assert.AreEqual(dizi.ToString(4), "aba");
     Assert.AreEqual(dizi.ToString(0), "merhaba");
     Assert.AreEqual(dizi.ToString(7), "");
     Assert.AreEqual(dizi.ToString(-1), "");
     Assert.AreEqual(dizi.ToString(6), "a");
 }
Example #49
0
 public abstract HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici);
Example #50
0
 public void testCharSequenceMethods()
 {
     HarfDizisi dizi = new HarfDizisi("armut", alfabe);
     Assert.AreEqual(dizi.Length, 5);
     Assert.IsNull(dizi.subSequence(3, 1));
     Assert.AreEqual(new HarfDizisi("arm", alfabe), dizi.subSequence(0, 3));
     Assert.AreEqual(new HarfDizisi("rm", alfabe), dizi.subSequence(1, 3));
     Assert.AreEqual(new HarfDizisi("", alfabe), dizi.subSequence(3, 3));
     Assert.AreEqual(dizi.CharAt(0), 'a');
     Assert.AreEqual(dizi.CharAt(4), 't');
 }
Example #51
0
 public void testHarfEkleHarf()
 {
     HarfDizisi dizi = new HarfDizisi("armut", alfabe);
     dizi.ekle(2, alfabe.harf('n'));
     Assert.AreEqual(dizi.ToString(), "arnmut");
     dizi.ekle(1, alfabe.harf('c'));
     Assert.AreEqual(dizi.ToString(), "acrnmut");
     dizi.ekle(0, alfabe.harf('s'));
     Assert.AreEqual(dizi.ToString(), "sacrnmut");
     dizi.ekle(8, alfabe.harf('a'));
     Assert.AreEqual(dizi.ToString(), "sacrnmuta");
 }
Example #52
0
 public void testTurkceToleransliKiyasla()
 {
     HarfDizisi hd1 = new HarfDizisi("\u00c7\u0131k\u0131s", alfabe);
     HarfDizisi hd2 = new HarfDizisi("Ciki\u015f", alfabe);
     HarfDizisi hdkisa = new HarfDizisi("Ci", alfabe);
     HarfDizisi hdtkisaturkce = new HarfDizisi("\u00c7\u0131", alfabe);
     Assert.IsTrue(hd1.asciiToleransliKiyasla(hd2));
     Assert.IsTrue(hd2.asciiToleransliKiyasla(hd1));
     Assert.IsTrue(hd1.asciiToleransliBastanKiyasla(hdkisa));
     Assert.IsTrue(hd2.asciiToleransliBastanKiyasla(hdkisa));
     Assert.IsTrue(hd2.asciiToleransliBastanKiyasla(hdtkisaturkce));
 }
Example #53
0
 public void testSesliSayisi()
 {
     HarfDizisi dizi = new HarfDizisi("merhaba", alfabe);
     Assert.IsTrue(dizi.sesliSayisi() == 3);
     dizi = new HarfDizisi("aarteetytye", alfabe);
     Assert.IsTrue(dizi.sesliSayisi() == 5);
     dizi = new HarfDizisi("art", alfabe);
     Assert.IsTrue(dizi.sesliSayisi() == 1);
     dizi = new HarfDizisi("rrt", alfabe);
     Assert.IsTrue(dizi.sesliSayisi() == 0);
 }
Example #54
0
 public void testEquals()
 {
     HarfDizisi dizi = new HarfDizisi("merhaba", alfabe);
     Assert.IsTrue(dizi.Equals(new HarfDizisi("merhaba", alfabe)));
     Assert.IsTrue(dizi.Equals(new HarfDizisi("merha", alfabe)) == false);
     Assert.IsTrue(dizi.Equals(new HarfDizisi("merhabalar", alfabe)) == false);
     HarfDizisi ydizi = new HarfDizisi("merhaba", alfabe, 20);
     Assert.IsTrue(dizi.Equals(new HarfDizisi("merhaba", alfabe)));
     Assert.IsTrue(dizi.Equals(new HarfDizisi("merhaba", alfabe, 15)));
     Assert.IsTrue(dizi.Equals(new HarfDizisi("merhabalar", alfabe, 15)) == false);
 }
Example #55
0
 public void testBastanKarsilastir()
 {
     HarfDizisi dizi = new HarfDizisi("merhaba", alfabe);
     Assert.IsTrue(dizi.bastanKiyasla(new HarfDizisi("m", alfabe)));
     Assert.IsTrue(dizi.bastanKiyasla(new HarfDizisi("merha", alfabe)));
     Assert.IsTrue(dizi.bastanKiyasla(new HarfDizisi("merhaba", alfabe)));
     Assert.IsTrue(dizi.bastanKiyasla(new HarfDizisi("merhabal", alfabe)) == false);
 }
Example #56
0
 public void testIlkSesli()
 {
     HarfDizisi kelime = new HarfDizisi("saatte", alfabe);
     Assert.AreEqual(kelime.ilkSesli(0), alfabe.harf('a'));
     Assert.AreEqual(kelime.ilkSesli(1), alfabe.harf('a'));
     Assert.AreEqual(kelime.ilkSesli(3), alfabe.harf('e'));
     Assert.AreEqual(kelime.ilkSesli(6), Alfabe.TANIMSIZ_HARF);
 }
Example #57
0
 public void uygula(HarfDizisi dizi)
 {
     if (dizi.Length > 0)
         dizi.harfSil(dizi.Length - 1);
 }
Example #58
0
 public void testDiziEkle()
 {
     HarfDizisi dizi2 = new HarfDizisi("ler", alfabe);
     dizi1.ekle(dizi2);
     Assert.AreEqual(dizi1. ToString(), "kalemler", "dizi1 ekleme problemi " + dizi1.ToString());
 }
Example #59
0
 public void setUp()
 {
     //base.setUp();
     str = "kalem";
     dizi1 = new HarfDizisi(str, alfabe);
 }
Example #60
0
 public void testKirp()
 {
     HarfDizisi dizi = new HarfDizisi("merhaba", alfabe);
     dizi.kirp(5);
     Assert.AreEqual("merha", dizi.ToString());
     dizi.kirp(5);
     Assert.AreEqual("merha", dizi.ToString());
     dizi.kirp(0);
     Assert.IsTrue(dizi.Length == 0);
 }