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 bool ozelDurumUygula(Kelime kelime, HarfDizisi giris, Ek ek) { if (!kelime.kok().yapiBozucuOzelDurumVarmi()) { return(true); } HarfDizisi testKokIcerigi = kelime.kok().ozelDurumUygula(alfabe, ek); if (testKokIcerigi == null) { return(false); } if (logger.IsInfoEnabled) { logger.Info("Ozel durum sonrasi:" + testKokIcerigi + " ek:" + ek.ad()); } kelime.setIcerik(testKokIcerigi); return(harfDizisiKiyaslayici.bastanKiyasla(giris, testKokIcerigi)); }
private UretimNesnesi uretimNesnesiUret(Kok kok, IList <Ek> ekler) { if (kok == null) { return(new UretimNesnesi("")); } UretimNesnesi ure = new UretimNesnesi(kok.icerik()); Kelime kelime = new Kelime(kok, alfabe); if (ekler.Count > 1) { HarfDizisi ozelDurumSonrasi = kok.ozelDurumUygula(alfabe, ekler[1]); if (ozelDurumSonrasi != null) { kelime.setIcerik(ozelDurumSonrasi); } else { return(ure); } } else { return(ure); } for (int i = 0; i < ekler.Count; i++) { Ek ek = ekler[i]; // eger incelenen ek onceki ekten sonra gelemezse cik. if (i > 0) { Ek oncekiEk = ekler[i - 1]; if (!oncekiEk.ardindanGelebilirMi(ek)) { return(ure); } } //olusum icin kural belirle ve eki olustur. HarfDizisi ekOlusumu; if (i < ekler.Count - 1) { ekOlusumu = new HarfDizisi(ek.olusumIcinUret(kelime, ekler[i + 1])); } else { ekOlusumu = new HarfDizisi(ek.olusumIcinUret(kelime, TemelEkYonetici.BOS_EK)); } //TODO: asagidaki bolum dil ozel. muhtemelen olusumIcinURet metodu duzletilirse gerek kalmaz. // ek son harf yumusatmayi kendimiz hallediyoruz (eger yalin ek ise bu islemi pas geciyoruz.) if (i > 1) { if (kelime.sonHarf().sertMi() && ekOlusumu.ilkHarf().sesliMi()) { kelime.icerik().sonHarfYumusat(); } } //eki kelimeye ve ek olusumlarina ekle. kelime.icerikEkle(ekOlusumu); if (ekOlusumu.Length > 0) { ure.olusumlar.Add(ekOlusumu.ToString()); } kelime.ekler().Add(ek); } //son duzeltmeleri uygula. yardimci.kelimeBicimlendir(kelime); ure.olusum = kelime.icerikStr(); return(ure); }