예제 #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()));
 *      }*/
        }
예제 #2
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ý
        }
예제 #3
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");
        }
예제 #4
0
 public void uygula(HarfDizisi dizi)
 {
     if (dizi.Length > 0)
     {
         dizi.ekle(dizi.harf(dizi.Length - 1));
     }
 }
예제 #5
0
 public void uygula(HarfDizisi dizi)
 {
     String kelime = kokDonusum[dizi.ToString()];
     if (kelime != null)
     {
         dizi.sil();
         dizi.ekle(new HarfDizisi(kelime, alfabe));
     }
 }
예제 #6
0
        public void uygula(HarfDizisi dizi)
        {
            String kelime = kokDonusum[dizi.ToString()];

            if (kelime != null)
            {
                dizi.sil();
                dizi.ekle(new HarfDizisi(kelime, alfabe));
            }
        }
예제 #7
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;
 }
예제 #8
0
        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);
        }
 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;
 }
예제 #10
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);
        }
예제 #11
0
 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;
 }
예제 #12
0
        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);
        }
예제 #13
0
        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);
        }
예제 #14
0
 public void uygula(HarfDizisi dizi)
 {
     dizi.ekle(ulanacak);
 }
예제 #15
0
    private IList<Kelime> coz(Kok kok, HarfDizisi kokDizi, HarfDizisi girisDizi, int tolerans) {

        Kelime kelime = new Kelime(kok, kokDizi);
        kelime.ekEkle(ekYonetici.ilkEkBelirle(kelime.kok()));
        BasitKelimeYigini kelimeYigini = new BasitKelimeYigini();

        List<Kelime> uygunSonuclar = new List<Kelime>();

        //analiz kelimesini kokler kokunden olustur.
        kelimeYigini.temizle();
        Ek bulunanEk = kelime.sonEk();

        int ardisilEkSirasi = 0;
        while (true) {
            //bulunan son ekten sonra gelebilecek eklerden siradakini al.
            Ek incelenenEk = bulunanEk.getArdisilEk(ardisilEkSirasi++);

            //siradaki ek yoksa incelenen ek yanlis demektir.
            // yigindan kelimenin onceki durumunu cek.
            if (incelenenEk == null) {
                //yigin bos ise sonuclar dondur.
                if (kelimeYigini.bosMu())
                    return uygunSonuclar;

                //kelimeyi ve bulunan eki onceki formuna donustur.
                BasitKelimeYigini.YiginKelime yiginKelime = kelimeYigini.al();
                kelime = yiginKelime.getKelime();
                bulunanEk = kelime.sonEk();
                ardisilEkSirasi = yiginKelime.getEkSirasi();
                continue;
            }

            //eger daha olusan kelime kok asamasinda ise (yani sadece YALIN eki eklenmisse)
            // ve kokun (kelime ile kok ayni ozel durumlara sahip) icinde bir ozel durum var ise
            // ozel durum denetlenir, yani kokun girilen ek ile degisip degismedigine bakilir.
            if (kelime.ekler().Count == 1 && kelime.kok().ozelDurumVarmi()) {
                if (!ozelDurumDenetle(kelime, girisDizi, incelenenEk, tolerans)) 
                {
                    if (logger.IsInfoEnabled) logger.Info("Ozel durum yanlis, ek:" + incelenenEk);
                    continue;
                }
            }

            //bazi eklerin olusumu, giris kelimesinin yapisina gore degisebilir.
            // ornegin giris "geleceGim" oldugu durumda gelecek zaman ekinin son harfinin
            // yumusamasi bilgisi ancak girise bakarak anlasilabilir. bu nedenle ek olusturma sirasinda giris
            // kullanilir

            HarfDizisi olusanEk = incelenenEk.cozumlemeIcinUret(kelime, girisDizi, null);
            //log.info("ek:" + incelenenEk + " olusum:" + olusanEk);
            if (olusanEk == null || olusanEk.Length == 0) {
                //log.info("bos ek.. " + incelenenEk);
                continue;
            }


            if (logger.IsInfoEnabled) logger.Info("Kok ve Olusan Ek:" + kelime.icerik() + " " + olusanEk);

            //Toleransli kiyaslama islemi burada yapiliyor. once gecici bir sekilde olusan kelimeye
            // olusan ek ekleniyor, ve giris ile toleransli kiyaslama yapiliyor. Eger kiyaslama
            // sonunda esik tolerans degeri asilmazsa dogru kabul edilip devam ediliyor.
            HarfDizisi olusum = new HarfDizisi(kelime.icerik());
            olusum.ekle(olusanEk);
            String olusumStr = olusum.ToString();
            if (logger.IsInfoEnabled) logger.Info("olusum:" + olusum);

            if (MetinAraclari.isInSubstringEditDistance(olusumStr, girisDizi.ToString(), tolerans) ||
                    MetinAraclari.inEditDistance(olusumStr, girisDizi.ToString(), tolerans)) {
                        kelimeYigini.koy((Kelime)kelime.Clone(), ardisilEkSirasi);
                ardisilEkSirasi = 0;
                // ek ekleneceginde yumusama yapilip yapilmayacagi belirleniyor.. aci
                if (olusanEk.harf(0).sesliMi()
                        && kelime.sonHarf().sertMi()
                        && kelime.ekler().Count > 1
                        && olusanEk.ilkHarf().sertDonusum()!=null) {
                    kelime.icerik().sonHarfYumusat();
                }
                kelime.icerikEkle(olusanEk);
                kelime.ekEkle(incelenenEk);
                olusumStr = kelime.icerikStr();
                if (logger.IsInfoEnabled) logger.Info("ekleme sonrasi olusan kelime: " + kelime.icerik());

                bulunanEk = incelenenEk;

                if (MetinAraclari.inEditDistance(olusumStr, girisDizi.ToString(), tolerans)) {
                    uygunSonuclar.Add((Kelime)kelime.Clone());
                    if (logger.IsInfoEnabled) logger.Info("uygun kelime:" + kelime.icerik());
                }
/*
                        TurkceHarf ekIlkHarf = giris.harf(kelime.boy());
                        if (ekIlkHarf == TurkceAlfabe.TANIMSIZ_HARF)
                            return false;*/

            }
        }
    }
 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;
 }
예제 #17
0
 public void testHarfEkle()
 {
     dizi1.ekle(alfabe.harf('s'));
     dizi1.ekle(alfabe.harf('i'));
     Assert.AreEqual(alfabe.harf('i'), dizi1.sonHarf(), "harf ekleme problemi");
 }
예제 #18
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");
 }
        private IList <Kelime> coz(Kok kok, HarfDizisi kokDizi, HarfDizisi girisDizi, int tolerans)
        {
            Kelime kelime = new Kelime(kok, kokDizi);

            kelime.ekEkle(ekYonetici.ilkEkBelirle(kelime.kok()));
            BasitKelimeYigini kelimeYigini = new BasitKelimeYigini();

            List <Kelime> uygunSonuclar = new List <Kelime>();

            //analiz kelimesini kokler kokunden olustur.
            kelimeYigini.temizle();
            Ek bulunanEk = kelime.sonEk();

            int ardisilEkSirasi = 0;

            while (true)
            {
                //bulunan son ekten sonra gelebilecek eklerden siradakini al.
                Ek incelenenEk = bulunanEk.getArdisilEk(ardisilEkSirasi++);

                //siradaki ek yoksa incelenen ek yanlis demektir.
                // yigindan kelimenin onceki durumunu cek.
                if (incelenenEk == null)
                {
                    //yigin bos ise sonuclar dondur.
                    if (kelimeYigini.bosMu())
                    {
                        return(uygunSonuclar);
                    }

                    //kelimeyi ve bulunan eki onceki formuna donustur.
                    BasitKelimeYigini.YiginKelime yiginKelime = kelimeYigini.al();
                    kelime          = yiginKelime.getKelime();
                    bulunanEk       = kelime.sonEk();
                    ardisilEkSirasi = yiginKelime.getEkSirasi();
                    continue;
                }

                //eger daha olusan kelime kok asamasinda ise (yani sadece YALIN eki eklenmisse)
                // ve kokun (kelime ile kok ayni ozel durumlara sahip) icinde bir ozel durum var ise
                // ozel durum denetlenir, yani kokun girilen ek ile degisip degismedigine bakilir.
                if (kelime.ekler().Count == 1 && kelime.kok().ozelDurumVarmi())
                {
                    if (!ozelDurumDenetle(kelime, girisDizi, incelenenEk, tolerans))
                    {
                        if (logger.IsInfoEnabled)
                        {
                            logger.Info("Ozel durum yanlis, ek:" + incelenenEk);
                        }
                        continue;
                    }
                }

                //bazi eklerin olusumu, giris kelimesinin yapisina gore degisebilir.
                // ornegin giris "geleceGim" oldugu durumda gelecek zaman ekinin son harfinin
                // yumusamasi bilgisi ancak girise bakarak anlasilabilir. bu nedenle ek olusturma sirasinda giris
                // kullanilir

                HarfDizisi olusanEk = incelenenEk.cozumlemeIcinUret(kelime, girisDizi, null);
                //log.info("ek:" + incelenenEk + " olusum:" + olusanEk);
                if (olusanEk == null || olusanEk.Length == 0)
                {
                    //log.info("bos ek.. " + incelenenEk);
                    continue;
                }


                if (logger.IsInfoEnabled)
                {
                    logger.Info("Kok ve Olusan Ek:" + kelime.icerik() + " " + olusanEk);
                }

                //Toleransli kiyaslama islemi burada yapiliyor. once gecici bir sekilde olusan kelimeye
                // olusan ek ekleniyor, ve giris ile toleransli kiyaslama yapiliyor. Eger kiyaslama
                // sonunda esik tolerans degeri asilmazsa dogru kabul edilip devam ediliyor.
                HarfDizisi olusum = new HarfDizisi(kelime.icerik());
                olusum.ekle(olusanEk);
                String olusumStr = olusum.ToString();
                if (logger.IsInfoEnabled)
                {
                    logger.Info("olusum:" + olusum);
                }

                if (MetinAraclari.isInSubstringEditDistance(olusumStr, girisDizi.ToString(), tolerans) ||
                    MetinAraclari.inEditDistance(olusumStr, girisDizi.ToString(), tolerans))
                {
                    kelimeYigini.koy((Kelime)kelime.Clone(), ardisilEkSirasi);
                    ardisilEkSirasi = 0;
                    // ek ekleneceginde yumusama yapilip yapilmayacagi belirleniyor.. aci
                    if (olusanEk.harf(0).sesliMi() &&
                        kelime.sonHarf().sertMi() &&
                        kelime.ekler().Count > 1 &&
                        olusanEk.ilkHarf().sertDonusum() != null)
                    {
                        kelime.icerik().sonHarfYumusat();
                    }
                    kelime.icerikEkle(olusanEk);
                    kelime.ekEkle(incelenenEk);
                    olusumStr = kelime.icerikStr();
                    if (logger.IsInfoEnabled)
                    {
                        logger.Info("ekleme sonrasi olusan kelime: " + kelime.icerik());
                    }

                    bulunanEk = incelenenEk;

                    if (MetinAraclari.inEditDistance(olusumStr, girisDizi.ToString(), tolerans))
                    {
                        uygunSonuclar.Add((Kelime)kelime.Clone());
                        if (logger.IsInfoEnabled)
                        {
                            logger.Info("uygun kelime:" + kelime.icerik());
                        }
                    }

/*
 *                      TurkceHarf ekIlkHarf = giris.harf(kelime.boy());
 *                      if (ekIlkHarf == TurkceAlfabe.TANIMSIZ_HARF)
 *                          return false;*/
                }
            }
        }
예제 #20
0
 public void uygula(HarfDizisi dizi)
 {
     if (dizi.Length > 0)
         dizi.ekle(dizi.harf(dizi.Length - 1));
 }
예제 #21
0
 public void uygula(HarfDizisi dizi)
 {
     dizi.ekle(ulanacak);
 }