Example #1
1
 public override HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici)
 {
     if (this.onEkler.Contains(kelime.sonEk()))
         return ekUretici.cozumlemeIcinEkUret(kelime.icerik(), giris, _uretimBilesenleri);
     else
         return null;
 }
 public override HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici)
 {
     TurkceHarf sonSesli = kelime.icerik().sonSesli();
     if (sonSesli.charDeger() == 'u' || sonSesli.charDeger() == Alfabe.CHAR_uu)
         return ekUretici.cozumlemeIcinEkUret(kelime.icerik(), giris, _uretimBilesenleri);
     else
         return null;
 }
 public override HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici) {
     TurkceHarf son = kelime.sonHarf();
     if (son.sesliMi() || ((son.charDeger()=='r') || son.charDeger()==('l'))
             && kelime.icerik().sesliSayisi() > 1) {
         return T;
     }
     return null;
 }
        //Veritabanına kelime ekliyoruz
        private void btnEkle_Click_1(object sender, EventArgs e)
        {
            Kelime kelime = new Kelime();

            kelime.Word            = txtKelime.Text;
            kelime.TurkceKarsiligi = txtTurkcesi.Text;
            kelime.Type            = txtTur.Text;
            kelime.OrnekCumle      = txtOrnekCumle.Text;
            kelimeler.Kelime.Add(kelime);
            kelimeler.SaveChanges();
            Doldur();
            MessageBox.Show("Kelime eklendi.");
            Clear();
        }
Example #5
0
        Kelime MapKelime(SqlDataReader reader)
        {
            Kelime kelime = new Kelime()
            {
                KelimeID          = (int)reader["KelimeID"],
                Turkce            = reader["Turkce"].ToString(),
                Ingilizce         = reader["Ingilizce"].ToString(),
                AktifMi           = (bool)reader["AktifMi"],
                OlusturulmaTarihi = (DateTime)reader["OlusturulmaTarihi"],
                GuncellenmeTarihi = (DateTime)reader["GuncellenmeTarihi"]
            };

            return(kelime);
        }
 public override HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici)
 {
     HarfDizisi ek = ekUretici.cozumlemeIcinEkUret(kelime.icerik(), giris, _uretimBilesenleri);
     // XXXX gibi Turkce harf tasimayan stringler icin koruma.
     // TODO: Daha dogru bir yontem bulunmali.
     if (ek == null)
     {
         return null;
     }
     int harfPozisyonu = kelime.boy() + ek.Length;
     if (giris.harf(harfPozisyonu).sesliMi())
         return ek;
     return null;
 }
Example #7
0
 public HarfDizisi cozumlemeIcinUret(
     Kelime kelime,
     HarfDizisi giris,
     HarfDizisiKiyaslayici kiyaslayici)
 {
     foreach (EkOzelDurumu ozelDurum in ozelDurumlar)
     {
         HarfDizisi ozelDurumSonucu = ozelDurum.cozumlemeIcinUret(kelime, giris, kiyaslayici);
         if (ozelDurumSonucu != null)
         {
             return(ozelDurumSonucu);
         }
     }
     return(ekUretici.cozumlemeIcinEkUret(kelime.icerik(), giris, uretimBilesenleri));
 }
Example #8
0
 public bool KelimeEkle(Kelime kelime)
 {
     try
     {
         KelimeninVarligi(kelime.Ingilizce);
         UzunlukKontrol(kelime.Turkce, kelime.Ingilizce);
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
     kelime.AktifMi           = true;
     kelime.OlusturulmaTarihi = DateTime.Now;
     kelime.GuncellenmeTarihi = DateTime.Now;
     return(_kelimeDAL.Insert(kelime));
 }
Example #9
0
        public List <Kelime> HavuzunKelimeleri(int havuzID)
        {
            string commandText = "SELECT k.KelimeID, k.Turkce, k.Ingilizce, k.AktifMi, k.OlusturulmaTarihi, k.GuncellenmeTarihi FROM HavuzDetay hd JOIN Havuz h ON hd.HavuzID = h.HavuzID JOIN Kelime k ON k.KelimeID = hd.KelimeID WHERE hd.HavuzID = @havuzID";

            parameters.Clear();
            parameters.Add("@havuzID", havuzID);

            List <Kelime> havuzKelimeleri = new List <Kelime>();
            Kelime        kelime          = null;
            SqlDataReader reader          = helper.ExecuteReader(commandText, parameters);

            while (reader.Read())
            {
                kelime = MapKelime(reader);
                havuzKelimeleri.Add(kelime);
            }
            return(havuzKelimeleri);
        }
Example #10
0
    public static List <Ek> EkGetir(Kelime kKelime)
    {
        List <Ek> ekler = new List <Ek>();

        foreach (Ek ek in kKelime.ekler())
        {
            if (EkKontrol(ek))
            {
                ekler.Add(ek);
            }
            else
            {
                break;
            }
        }

        return(ekler);
    }
Example #11
0
        public override HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici)
        {
            HarfDizisi ek = ekUretici.cozumlemeIcinEkUret(kelime.icerik(), giris, _uretimBilesenleri);

            // XXXX gibi Turkce harf tasimayan stringler icin koruma.
            // TODO: Daha dogru bir yontem bulunmali.
            if (ek == null)
            {
                return(null);
            }
            int harfPozisyonu = kelime.boy() + ek.Length;

            if (giris.harf(harfPozisyonu).sesliMi())
            {
                return(ek);
            }
            return(null);
        }
Example #12
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));
        }
Example #13
0
        public Kelime TurkceKelimeGetir(string turkceKelime)
        {
            string commandText = "SELECT * FROM Kelime WHERE Turkce = @turkKelime and AktifMi=1";

            parameters.Clear();
            parameters.Add("@turkKelime", turkceKelime);

            Kelime kelime = null;

            SqlDataReader reader = helper.ExecuteReader(commandText, parameters);

            if (reader.HasRows)
            {
                reader.Read();
                kelime = MapKelime(reader);
            }

            reader.Close();
            return(kelime);
        }
Example #14
0
        public List <Kelime> KelimeleriGetir()
        {
            string commandText = "SELECT * FROM Kelime where AktifMi=1";

            parameters.Clear();

            List <Kelime> kelimeler = new List <Kelime>();
            Kelime        kelime    = null;

            SqlDataReader reader = helper.ExecuteReader(commandText);

            while (reader.Read())
            {
                kelime = MapKelime(reader);
                kelimeler.Add(kelime);
            }
            reader.Close();

            return(kelimeler);
        }
Example #15
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);
        }
Example #16
0
        public Kelime KelimeGetir(int kelimeID)
        {
            string commandText = "SELECT * FROM Kelime WHERE KelimeID = @kelimeID and AktifMi=1";

            parameters.Clear();
            parameters.Add("@kelimeID", kelimeID);

            Kelime kelime = null;

            SqlDataReader reader = helper.ExecuteReader(commandText, parameters);

            if (reader.HasRows)
            {
                reader.Read();
                kelime = MapKelime(reader);
            }

            reader.Close();
            return(kelime);
        }
Example #17
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);
        }
        public int DurumGüncelle(Kelime k)
        {
            try
            {
                command = new SqlCommand
                              (@"update Kelime set 
                   KeliemeID=@KeliemeID,
                   Durum=@Durum where KeliemeID=@KeliemeID", connect);
                command.Parameters.Add("@KeliemeID", SqlDbType.UniqueIdentifier).Value = k.KelimeID;
                command.Parameters.Add("@Durum", SqlDbType.NVarChar).Value             = k.Durum;
                BaglantiAyarla();
                ReturnValue = command.ExecuteNonQuery();
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                BaglantiAyarla();
            }

            return(ReturnValue);
        }
Example #19
0
 public override HarfDizisi olusumIcinUret(Kelime kelime, Ek sonrakiEk)
 {
     return cozumlemeIcinUret(kelime, null, null);
 }
Example #20
0
        /**
         * Kok ve Ek listesi tasiyan bir kelimeyi String listesi seklinde parcalara ayirir.
         * Kelime {kok={kitap, ISIM} ekler = {ISIM_SAHIPLIK_BEN, ISIM_YONELME_E}} icin
         * {kitap,Im,a} dizisi doner.
         *
         * @param kelime : kelime
         * @return kok ve ek icerikleri (String[]) cinsinden dizi. Eger ek listesi bos ise ya da
         *         sadece yalin ek var ise sadece kok icerigi doner. Kokun ozel durum ile bozulmus hali degil
         *         orjinal icerigini iceren dizi doner.
         *         TODO:
         *         simdilik ozle adlarda bas harf kucuk olarak donuyor. Ayrica ozel yazimli koklerin orjinali
         *         degil ayiklanmis hali doner.
         */
        public IList <String> ayristir(Kelime kelime)
        {
            UretimNesnesi ure = uretimNesnesiUret(kelime.kok(), kelime.ekler());

            return(ure.olusumlar);
        }
Example #21
0
 public abstract HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici);
        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;*/
                }
            }
        }
Example #23
0
 public override HarfDizisi olusumIcinUret(Kelime kelime, Ek sonrakiEk)
 {
     return(null);
 }
 public override HarfDizisi olusumIcinUret(Kelime kelime, Ek sonrakiEk)
 {
     return null;
 }
 public override HarfDizisi olusumIcinUret(Kelime kelime, Ek sonrakiEk)
 {
     return(cozumlemeIcinUret(kelime, null, null));
 }
 public YiginKelime(Kelime kel, int index)
 {
     this.kelime   = kel;
     this.ekSirasi = index;
 }
 public void koy(Kelime kelime, int ardisilEkSirasi)
 {
     yigin.AddFirst(new YiginKelime(kelime, ardisilEkSirasi));
 }
Example #28
0
        private List <Kelime> coz(Kok kok, HarfDizisi kokDizi, HarfDizisi giris, bool tumunuCozumle)
        {
            Kelime            kelime       = kelimeUret(kok, kokDizi);
            BasitKelimeYigini kelimeYigini = new BasitKelimeYigini();
            Ek            bulunanEk        = kelime.sonEk();
            int           ardisilEkSirasi  = 0;
            List <Kelime> uygunSonuclar    = Collections.EMPTY_LIST_KELIME;
            TurkceHarf    ilkEkHarfi       = giris.harf(kelime.boy());

            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 basarisizlik.
                    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();
                    ilkEkHarfi      = giris.harf(kelime.boy());
                    continue;
                }

                if (kelime.gercekEkYok() && kelime.kok().ozelDurumVarmi())
                {
                    if (!ozelDurumUygula(kelime, giris, incelenenEk))
                    {
                        continue;
                    }
                    else
                    {
                        ilkEkHarfi = giris.harf(kelime.boy());
                    }
                }

                if (!incelenenEk.ilkHarfDenetle(ilkEkHarfi))
                {
                    continue;
                }

                HarfDizisi olusanEkIcerigi = incelenenEk.cozumlemeIcinUret(kelime, giris, harfDizisiKiyaslayici);
                if (olusanEkIcerigi == null || olusanEkIcerigi.Length == 0)
                {
                    continue;
                }

                if (harfDizisiKiyaslayici.aradanKiyasla(giris,
                                                        olusanEkIcerigi,
                                                        kelime.boy()))
                {
                    // ek dongusu testi
                    //if (kelime.ekDongusuVarmi(incelenenEk)) continue;
                    kelimeYigini.koy((Kelime)kelime.Clone(), ardisilEkSirasi);
                    ardisilEkSirasi = 0;
                    kelime.ekEkle(incelenenEk);
                    kelime.icerikEkle(olusanEkIcerigi);
                    ilkEkHarfi = giris.harf(kelime.boy());
                    if (logger.IsInfoEnabled)
                    {
                        logger.Info("ekleme sonrasi olusan kelime: " + kelime.icerik());
                    }

                    bulunanEk = incelenenEk;

                    if (harfDizisiKiyaslayici.kiyasla(kelime.icerik(), giris) && !incelenenEk.sonEkOlamazMi())
                    {
                        if (!tumunuCozumle)
                        {
                            uygunSonuclar = new List <Kelime>(1);
                            uygunSonuclar.Add(kelime);
                            return(uygunSonuclar);
                        }
                        if (uygunSonuclar.Count == 0)
                        {
                            uygunSonuclar = new List <Kelime>(2);
                        }
                        uygunSonuclar.Add((Kelime)kelime.Clone());
                    }
                }
            }
        }
Example #29
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);
        }
Example #30
0
        /**
         * eger hepsiniCozumle=true ise dogru olabilecek tum kok ve ek kombinasyonlarini
         * dondurur.
         * Eger flag false ise ilk dogru cozumu tek elemanli dizi seklinde
         * dondurur.bu yontem hiz gerektiren denetleme islemi icin kullanilir.
         *
         * @param strGiris
         * @param hepsiniCozumle
         * @return tek ya da coklu kelime dizisi.
         */
        public Kelime[] cozumle(String strGiris, bool hepsiniCozumle)
        {
            //on islemler
            String strIslenmis = alfabe.ayikla(strGiris);

            if (!alfabe.cozumlemeyeUygunMu(strIslenmis) || strIslenmis.Length == 0)
            {
                return(Collections.BOS_KELIME_DIZISI);
            }

            //kok adaylarinin bulunmasi.
            List <Kok> kokler = kokBulucu.getAdayKokler(strIslenmis);

            if (logger.IsInfoEnabled)
            {
                logger.Info("Giris: " + strGiris + ", Adaylar: " + kokler);
            }
            HarfDizisi girisDizi     = new HarfDizisi(strIslenmis, alfabe);
            bool       icerikDegisti = false;

            //cozumlerin bulunmasi
            List <Kelime> cozumler = new List <Kelime>(2);

            for (int i = kokler.Count - 1; i >= 0; i--)
            {
                if (icerikDegisti)
                {
                    girisDizi     = new HarfDizisi(strIslenmis, alfabe);
                    icerikDegisti = false;
                }
                Kok kok = kokler[i];
                if (logger.IsInfoEnabled)
                {
                    logger.Info("Aday:" + kok.icerik());
                }
                HarfDizisi kokDizi = new HarfDizisi(kok.icerik(), alfabe);

                //eger giris koke dogrudan esitse cozmeden kelimeyi olustur.
                if (harfDizisiKiyaslayici.kiyasla(kokDizi, girisDizi))
                {
                    Kelime kelime = kelimeUret(kok, kokDizi);
                    if (yardimci.kelimeBicimiDenetle(kelime, strGiris))
                    {
                        if (!hepsiniCozumle)
                        {
                            return(new Kelime[] { kelime });
                        }
                        else
                        {
                            cozumler.Add(kelime);
                        }
                    }
                }
                else
                {
                    icerikDegisti = yardimci.kokGirisDegismiVarsaUygula(kok, kokDizi, girisDizi);
                    List <Kelime> sonuclar = coz(kok, kokDizi, girisDizi, hepsiniCozumle);
                    foreach (Kelime sonuc in sonuclar)
                    {
                        if (yardimci.kelimeBicimiDenetle(sonuc, strGiris))
                        {
                            if (!hepsiniCozumle)
                            {
                                return(new Kelime[] { sonuc });
                            }
                            cozumler.Add(sonuc);
                        }
                    }
                }
            }
            return(cozumler.ToArray());
        }
Example #31
0
 public bool OzelEkOlustur(Kelime ozelKelime)
 {
     return(false);
 }
Example #32
0
        /**
         * Verilen kelime için öneri üretir.
         * Yapýlan öneriler þu þekildedir:
         * - Kökte 1, ekte 1 mesafeye kadar olmak üzere Levenshtein düzeltme mesafesine uyan tüm öneriler
         * - Deasciifier'den dönüþ deðeri olarak gelen öneriler
         * - Kelimenin ayrýk iki kelimeden oluþmasý durumu için öneriler
         *
         * @param kelime : Öneri yapýlmasý istenen giriþ kelimesi
         * @return String[] olarak öneriler
         *         Eðer öneri yoksa sifir uzunluklu dizi.
         */
        public String[] oner(String kelime)
        {
            // Once hatalý kelime için tek kelimelik önerileri bulmaya çalýþ
            Kelime[] oneriler = toleransliCozumleyici.cozumle(kelime);

            //Deasciifierden bir þey var mý?
            Kelime[] asciiTurkceOneriler = new Kelime[0];
            if (ayarlar.oneriDeasciifierKullan())
            {
                asciiTurkceOneriler = asciiToleransliCozumleyici.cozumle(kelime);
            }

            Set <String> ayriYazimOnerileri = Collections.EMPTY_SET_STRING;

            // Kelime yanlislikla bitisik yazilmis iki kelimeden mi olusmus?
            if (ayarlar.oneriBilesikKelimeKullan())
            {
                for (int i = 1; i < kelime.Length; i++)
                {
                    String s1 = kelime.Substring(0, i);
                    String s2 = kelime.Substring(i, kelime.Length - i);
                    if (cozumleyici.denetle(s1) && cozumleyici.denetle(s2))
                    {
                        Set <String> set1       = new HashedSet <String>();
                        Kelime[]     kelimeler1 = cozumleyici.cozumle(s1);
                        foreach (Kelime kelime1 in kelimeler1)
                        {
                            yardimci.kelimeBicimlendir(kelime1);
                            set1.Add(kelime1.icerik().ToString());
                        }

                        Set <String> set2       = new HashedSet <String>();
                        Kelime[]     kelimeler2 = cozumleyici.cozumle(s2);
                        foreach (Kelime kelime1 in kelimeler2)
                        {
                            yardimci.kelimeBicimlendir(kelime1);
                            set2.Add(kelime1.icerik().ToString());
                        }

                        if (ayriYazimOnerileri.Count == 0)
                        {
                            ayriYazimOnerileri = new HashedSet <String>();
                        }

                        foreach (String str1 in set1)
                        {
                            foreach (String str2 in set2)
                            {
                                ayriYazimOnerileri.Add(str1 + " " + str2);
                            }
                        }
                    }
                }
            }

            // erken donus..
            if (oneriler.Length == 0 && ayriYazimOnerileri.Count == 0 && asciiTurkceOneriler.Length == 0)
            {
                return(new String[0]);
            }

            // Onerileri puanlandýrmak için bir listeye koy
            List <Kelime> oneriList = new List <Kelime>();

            oneriList.AddRange(new List <Kelime>(oneriler));
            oneriList.AddRange(new List <Kelime>(asciiTurkceOneriler));

            // Frekansa göre sýrala
            oneriList.Sort(new KelimeKokFrekansKiyaslayici());

            // Dönüþ listesi string olacak, Yeni bir liste oluþtur.
            List <String> sonucListesi = new List <String>();

            foreach (Kelime anOneriList in oneriList)
            {
                sonucListesi.Add(anOneriList.icerik().ToString());
            }

            //Çift sonuçlarý liste sirasýný bozmadan iptal et.
            List <String> rafineListe = new List <String>();

            foreach (String aday in sonucListesi)
            {
                bool aynisiVar = false;
                foreach (String aRafineListe in rafineListe)
                {
                    if (aday.Equals(aRafineListe))
                    {
                        aynisiVar = true;
                        break;
                    }
                }
                if (!aynisiVar && rafineListe.Count < ayarlar.getOneriMax())
                {
                    rafineListe.Add(aday);
                }
            }

            // Son olarak yer kalmýþsa ayrý yazýlým önerilerini ekle
            foreach (String oneri in ayriYazimOnerileri)
            {
                if (rafineListe.Count < ayarlar.getOneriMax())
                {
                    rafineListe.Add(oneri);
                }
                else
                {
                    break;
                }
            }

            return(rafineListe.ToArray());
        }
Example #33
0
 public abstract HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici);
Example #34
0
 public virtual HarfDizisi olusumIcinUret(Kelime kelime, Ek sonrakiEk)
 {
     return ekUretici.olusumIcinEkUret(kelime.icerik(), sonrakiEk, _uretimBilesenleri);
 }
Example #35
0
 public virtual HarfDizisi olusumIcinUret(Kelime kelime, Ek sonrakiEk)
 {
     return(ekUretici.olusumIcinEkUret(kelime.icerik(), sonrakiEk, _uretimBilesenleri));
 }