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 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));
        }
Exemple #3
0
        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);
        }