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); }
private static void UseE() { if (Ek.IsReady()) { Ek.Cast(); } }
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); }
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); }
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())); * }*/ }
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); }
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); }
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]); } }
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)); }
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); }
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()); }