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);
        }
Exemple #2
0
 private static void UseE()
 {
     if (Ek.IsReady())
     {
         Ek.Cast();
     }
 }
Exemple #3
0
        protected KokOzelDurumu.Uretici uretici(KokOzelDurumTipi tip, HarfDizisiIslemi islem)
        {
            // bir adet kok ozel durumu uretici olustur.
            KokOzelDurumu.Uretici uretici = new KokOzelDurumu.Uretici(tip, islem);

            // eger varsa kok adlarini kullanarak iliskili ekleri bul ve bir Set'e ata.
            String[] ekAdlari = tip.EkAdlari;
            if (ekAdlari.Length > 0)
            {
                Set <Ek> set = new HashedSet <Ek>();
                foreach (String s in ekAdlari)
                {
                    Ek ek = ekYonetici.ek(s);
                    if (ek != null)
                    {
                        set.Add(ek);
                    }
                    else
                    {
                        logger.Warn(s + " eki bulunamadigindan kok ozel durumuna eklenemedi!");
                    }
                }
                // ureticiye seti ata.
                uretici.gelebilecekEkler(set);
            }
            return(uretici);
        }
Exemple #4
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);
        }
Exemple #5
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()));
 *      }*/
        }
Exemple #6
0
        public JsonResult ImageUpload(int bId = 0)
        {
            var path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot\\images\\ekler\\" + bId);

            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            foreach (var file in Request.Form.Files)
            {
                var yeniAd = Guid.NewGuid() + Path.GetExtension(file.FileName);
                var ekYol  = "/images/ekler/" + bId + "/" + yeniAd;
                using (var stream = new FileStream(path + "\\" + yeniAd, FileMode.Create))
                {
                    file.CopyTo(stream);
                }
                var ek = new Ek
                {
                    BildiriId = bId,
                    EkYol     = ekYol
                };
                _ekService.Ekle(ek);
            }
            _ekService.Kaydet();
            return(Json(true));
        }
 /**
  * Bu metod rasgele girilen bir ek dizisinin olasi dogru siralamalarini bulur.
  * Metod kendi kendini cagiran bir yapidadir (recursive). Sonucta dogru olabilecek dizilimler
  * nesne icindeki "tumOlusumlar" dizisine atilir.
  *
  * @param olusan:       ic calisma sirasinda dogru olusan dizilimi tasiyan ArrayList.
  * @param incelenenEk:  Kok'un tipine gore gereken baslangic eki. FIIL ise FIIL_YALIN vs.
  * @param rasgeleEkler: rasgele sirali ekleri tasiyan liste.
  */
 private void yuru(List <Ek> olusan, Ek incelenenEk, List <Ek> rasgeleEkler)
 {
     for (int i = 0; i < rasgeleEkler.Count; i++)
     {
         Ek ek = rasgeleEkler[i];
         if (incelenenEk.ardindanGelebilirMi(ek))
         {
             List <Ek> newList = new List <Ek>(rasgeleEkler);
             newList.Remove(ek);
             olusan.Add(ek);
             if (newList.Count != 0)
             {
                 yuru(olusan, ek, newList);
             }
         }
     }
     if (olusan.Count == tum)
     {
         if (!this.tumOlusumlar.Contains(olusan))
         {
             this.tumOlusumlar.Add(olusan);
         }
         olusan = new List <Ek>();
     }
     else
     {
         rasgeleEkler.Add(incelenenEk);
         if (olusan.Count > 0)
         {
             olusan.Remove(olusan[olusan.Count - 1]);
         }
     }
 }
        public void testFiilIm()
        {
            Ek ek = GetEk(TurkceEkAdlari.FIIL_DONUSUM_IM);

            String[] strs        = { "ger", "bak", "oku" };
            String[] gercekEkler = { "im", "\u0131m", "num" };
            olusanEkKontrol(strs, gercekEkler, ek);
        }
        public void testFiilIci()
        {
            Ek ek = GetEk(TurkceEkAdlari.FIIL_TANIMLAMA_ICI);

            String[] strs        = { "ger", "bak", "oku" };
            String[] gercekEkler = { "ici", "\u0131c\u0131", "yucu" };
            olusanEkKontrol(strs, gercekEkler, ek);
        }
        public void testFiilGelecekZaman()
        {
            Ek ek = GetEk(TurkceEkAdlari.FIIL_GELECEKZAMAN_ECEK);

            String[] strs        = { "ger", "bak", "oku" };
            String[] gercekEkler = { "ecek", "acak", "yacak" };
            olusanEkKontrol(strs, gercekEkler, ek);
        }
        public void testFiilEdilgen()
        {
            Ek ek = GetEk(TurkceEkAdlari.FIIL_EDILGEN_IL);

            String[] strs        = { "gel", "sek" };
            String[] gercekEkler = { "in", "il" };
            olusanEkKontrol(strs, gercekEkler, ek);
        }
        public void testFiilDiliGecmisZaman()
        {
            Ek ek = GetEk(TurkceEkAdlari.FIIL_GECMISZAMAN_DI);

            String[] strs        = { "gel", "oku", "sek", "ye" };
            String[] gercekEkler = { "di", "du", "ti", "di" };
            olusanEkKontrol(strs, gercekEkler, ek);
        }
        public void testFiilDik()
        {
            Ek ek = GetEk(TurkceEkAdlari.FIIL_BELIRTME_DIK);

            String[] strs        = { "gel", "oku", "sek", "ye" };
            String[] gercekEkler = { "dik", "duk", "tik", "dik" };
            olusanEkKontrol(strs, gercekEkler, ek);
        }
        public void testFiilIs()
        {
            Ek ek = GetEk(TurkceEkAdlari.FIIL_DONUSUM_IS);

            String[] strs        = { "ger", "bak", "oku" };
            String[] gercekEkler = { "i\u015f", "\u0131\u015f", "yu\u015f" };
            olusanEkKontrol(strs, gercekEkler, ek);
        }
        public void testFiilEli()
        {
            Ek ek = GetEk(TurkceEkAdlari.FIIL_BERI_ELI);

            String[] strs        = { "gel", "oku", "sek", "ye" };
            String[] gercekEkler = { "eli", "yal\u0131", "eli", "yeli" };
            olusanEkKontrol(strs, gercekEkler, ek);
        }
        public void testFiilIp()
        {
            Ek ek = GetEk(TurkceEkAdlari.FIIL_IMSI_IP);

            String[] strs        = { "ger", "bak", "oku" };
            String[] gercekEkler = { "ip", "\u0131p", "yup" };
            olusanEkKontrol(strs, gercekEkler, ek);
        }
        public void testFiilEmirOnlar()
        {
            Ek ek = GetEk(TurkceEkAdlari.FIIL_EMIR_ONLAR_SINLER);

            String[] strs        = { "gel", "oku", "sek", "ye" };
            String[] gercekEkler = { "sinler", "sunlar", "sinler", "sinler" };
            olusanEkKontrol(strs, gercekEkler, ek);
        }
        public void testFiilCesine()
        {
            Ek ek = GetEk(TurkceEkAdlari.FIIL_GIBI_CESINE);

            String[] strs        = { "gelir", "okuyacak", "yazar", "yer" };
            String[] gercekEkler = { "cesine", "cas\u0131na", "cas\u0131na", "cesine" };
            olusanEkKontrol(strs, gercekEkler, ek);
        }
        public void testFiilEmirSizResmi()
        {
            Ek ek = GetEk(TurkceEkAdlari.FIIL_EMIR_SIZRESMI_INIZ);

            String[] strs        = { "gel", "oku", "sek", "ye" };
            String[] gercekEkler = { "iniz", "yunuz", "iniz", "yiniz" };
            olusanEkKontrol(strs, gercekEkler, ek);
        }
        public void testFiilDikce()
        {
            Ek ek = GetEk(TurkceEkAdlari.FIIL_DEVAMLILIK_DIKCE);

            String[] strs        = { "gel", "oku", "sek", "ye" };
            String[] gercekEkler = { "dik\u00e7e", "duk\u00e7a", "tik\u00e7e", "dik\u00e7e" };
            olusanEkKontrol(strs, gercekEkler, ek);
        }
        public void testFiilErek()
        {
            Ek ek = GetEk(TurkceEkAdlari.FIIL_SUREKLILIK_EREK);

            String[] strs        = { "gel", "oku", "bak", "eri" };
            String[] gercekEkler = { "erek", "yarak", "arak", "yerek" }; //lutfen gulmeyin..
            olusanEkKontrol(strs, gercekEkler, ek);
        }
        public void testFiilDonusumEn()
        {
            Ek ek = GetEk(TurkceEkAdlari.FIIL_DONUSUM_EN);

            String[] strs        = { "gel", "oku", "sek", "ye" };
            String[] gercekEkler = { "en", "yan", "en", "yen" };
            olusanEkKontrol(strs, gercekEkler, ek);
        }
        public void testFiilEttirgenTekrar()
        {
            Ek ek = GetEk(TurkceEkAdlari.FIIL_ETTIRGEN_TEKRAR_T);

            String[] strs        = { "gerdir", "bakt\u0131r", "erittir" };
            String[] gercekEkler = { "t", "t", "t" };
            olusanEkKontrol(strs, gercekEkler, ek);
        }
        public void testFiilInce()
        {
            Ek ek = GetEk(TurkceEkAdlari.FIIL_ZAMAN_INCE);

            String[] strs        = { "ger", "bak", "oku" };
            String[] gercekEkler = { "ince", "\u0131nca", "yunca" };
            olusanEkKontrol(strs, gercekEkler, ek);
        }
Exemple #25
0
 public override HarfDizisi olusumIcinUret(Kelime kelime, Ek sonrakiEk)
 {
     if (sonrakiEk.ad().Equals(TurkceEkAdlari.FIIL_SIMDIKIZAMAN_IYOR))
     {
         return(ekUretici.olusumIcinEkUret(kelime.icerik(), sonrakiEk, uretimBilesenleri()));
     }
     return(null);
 }
Exemple #26
0
 protected void olusanEkKontrol(String[] strs, String[] gercek, Ek ek)
 {
     String[] olusanEkler;
     kelimeleriOlustur(strs);
     olusanEkler = ekleriOlustur(ek);
     for (int i = 0; i < gercek.Length; i++)
     {
         Assert.AreEqual(olusanEkler[i], gercek[i], "Hatali olusum:" + olusanEkler[i]);
     }
 }
Exemple #27
0
 protected String[] ekleriOlustur(Ek ek)
 {
     String[] olusan = new String[kelimeler.Length];
     for (int i = 0; i < kelimeler.Length; i++)
     {
         olusan[i] = ek.cozumlemeIcinUret(kelimeler[i], kelimeler[i].icerik(),
                                          new KesinHDKiyaslayici()).ToString();
     }
     return(olusan);
 }
 /**
  * Ozel durum giris parametresi olan ek'in bu ozel durumun olusmasina
  * izin verip vermeyeegi belirlenir.
  *
  * @param ek
  * @return gelen ek ile bu ozel durum olusabilirse true
  */
 public bool olusabilirMi(Ek ek)
 {
     if (_herZamanOlusur)
     {
         return(true);
     }
     if (_sesliEkIleOlusur && ek.sesliIleBaslayabilirMi())
     {
         return(true);
     }
     return(_gelebilecekEkler.Contains(ek));
 }
Exemple #29
0
        public virtual HarfDizisi ozelDurumUygula(Alfabe alfabe, Ek ek)
        {
            HarfDizisi dizi = new HarfDizisi(this._icerik, alfabe);

            foreach (KokOzelDurumu ozelDurum in ozelDurumlar)
            {
                if (ozelDurum.yapiBozucumu() && ozelDurum.olusabilirMi(ek))
                {
                    ozelDurum.uygula(dizi);
                }
                if (!ozelDurum.olusabilirMi(ek) && ozelDurum.ekKisitlayiciMi())
                {
                    return(null);
                }
            }
            return(dizi);
        }
Exemple #30
0
        public void testCozumle1()
        {
            //zemberek = new Zemberek(new TurkiyeTurkcesi());
            string str = "kedi";

            Assert.IsTrue(zemberek.kelimeDenetle(str));
            Kelime[] sonuc = zemberek.kelimeCozumle(str);
            Assert.AreEqual(1, sonuc.Length);
            Kok kok = sonuc[0].kok();

            Assert.AreEqual("kedi", kok.icerik());
            List <Ek> ekler = sonuc[0].ekler();

            Assert.AreEqual(1, ekler.Count);
            Ek ek = ekler[0];

            Assert.AreEqual("ISIM_KOK", ek.ad());
        }