Esempio n. 1
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);
        }
Esempio n. 2
0
        public void testCozumle2()
        {
            //zemberek = new Zemberek(new TurkiyeTurkcesi());
            string str = "kediciklerin";

            Assert.IsTrue(zemberek.kelimeDenetle(str));
            Kelime[] sonuc = zemberek.kelimeCozumle(str);
            Assert.AreEqual(2, sonuc.Length);

            Kok kok = sonuc[0].kok();

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

            Assert.AreEqual(4, ekler.Count);
            Assert.AreEqual("ISIM_KOK", ekler[0].ad());
            Assert.AreEqual("ISIM_KUCULTME_CIK", ekler[1].ad());
            Assert.AreEqual("ISIM_COGUL_LER", ekler[2].ad());
            Assert.AreEqual("ISIM_TAMLAMA_IN", ekler[3].ad());

            kok = sonuc[1].kok();
            Assert.AreEqual("kedi", kok.icerik());
            ekler = sonuc[1].ekler();
            Assert.AreEqual(4, ekler.Count);
            Assert.AreEqual("ISIM_KOK", ekler[0].ad());
            Assert.AreEqual("ISIM_KUCULTME_CIK", ekler[1].ad());
            Assert.AreEqual("ISIM_COGUL_LER", ekler[2].ad());
            Assert.AreEqual("ISIM_SAHIPLIK_SEN_IN", ekler[3].ad());
        }
Esempio n. 3
0
        private String getDuzMetinSozlukForm(Kok kok)
        {
            //icerik olarak icerigin varsa asil halini yoksa normal kok icerigini al.
            String icerik = kok.icerik();

            if (kok.asil() != null)
            {
                icerik = kok.asil();
            }

            StringBuilder res = new StringBuilder(icerik);

            res.Append(" ");
            // Tipi ekleyelim.
            if (kok.tip() == KelimeTipi.YOK)
            {
                logger.Warn("tipsiz kok:" + kok);
                return(res.ToString());
            }

            res.Append(kok.tip().ToString());
            res.Append(" ");
            res.Append(getOzellikString(kok.ozelDurumDizisi()));
            return(res.ToString());
        }
Esempio n. 4
0
        public void testCozumle_Sembolu()
        {
            string str = "sembolü";

            Assert.IsTrue(zemberek.kelimeDenetle(str));
            Kelime[] sonuc = zemberek.kelimeCozumle(str);
            Assert.AreEqual(3, sonuc.Length);

            Kok kok = sonuc[0].kok();

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

            Assert.AreEqual(2, ekler.Count);
            Assert.AreEqual("ISIM_KOK", ekler[0].ad());
            Assert.AreEqual("ISIM_TAMLAMA_I", ekler[1].ad());

            kok = sonuc[1].kok();
            Assert.AreEqual("sembol", kok.icerik());
            ekler = sonuc[1].ekler();
            Assert.AreEqual(2, ekler.Count);
            Assert.AreEqual("ISIM_KOK", ekler[0].ad());
            Assert.AreEqual("ISIM_BELIRTME_I", ekler[1].ad());

            kok = sonuc[2].kok();
            Assert.AreEqual("sembol", kok.icerik());
            ekler = sonuc[2].ekler();
            Assert.AreEqual(2, ekler.Count);
            Assert.AreEqual("ISIM_KOK", ekler[0].ad());
            Assert.AreEqual("ISIM_SAHIPLIK_O_I", ekler[1].ad());
        }
Esempio n. 5
0
        public void testCozumle_Suyuyla()
        {
            //zemberek = new Zemberek(new TurkiyeTurkcesi());
            string str = "suyuyla";

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

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

            Assert.AreEqual(3, ekler.Count);
            Assert.AreEqual("ISIM_KOK", ekler[0].ad());
            Assert.AreEqual("ISIM_TAMLAMA_I", ekler[1].ad());
            Assert.AreEqual("ISIM_BIRLIKTELIK_LE", ekler[2].ad());

            kok = sonuc[1].kok();
            Assert.AreEqual("su", kok.icerik());
            ekler = sonuc[1].ekler();
            Assert.AreEqual(3, ekler.Count);
            Assert.AreEqual("ISIM_KOK", ekler[0].ad());
            Assert.AreEqual("ISIM_SAHIPLIK_O_I", ekler[1].ad());
            Assert.AreEqual("ISIM_BIRLIKTELIK_LE", ekler[2].ad());
        }
Esempio n. 6
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()));
 *      }*/
        }
        private Kelime kelimeUret(Kok kok)
        {
            Kelime kelime = new Kelime(kok, alfabe);

            kelime.ekEkle(ekYonetici.ilkEkBelirle(kelime.kok()));
            return(kelime);
        }
Esempio n. 8
0
        private Kelime kelimeUret(Kok kok, HarfDizisi dizi)
        {
            Kelime kelime = new Kelime(kok, dizi);

            kelime.ekEkle(ekYonetici.ilkEkBelirle(kelime.kok()));
            return(kelime);
        }
        public Kelime[] cozumle(String strGiris)
        {
            String strIslenmis = alfabe.ayikla(strGiris);

            if (strIslenmis.Length == 0)
            {
                return(Collections.BOS_KELIME_DIZISI);
            }
            List <Kok>    kokler   = kokBulucu.getAdayKokler(strIslenmis);
            List <Kelime> cozumler = new List <Kelime>();

            if (logger.IsInfoEnabled)
            {
                logger.Info("Giris: " + strIslenmis + ", Adaylar: " + kokler);
            }

            HarfDizisi girisDizi     = new HarfDizisi(strIslenmis, alfabe);
            bool       icerikDegisti = false;

            for (int i = kokler.Count - 1; i >= 0; i--)
            {
                Kok        kok     = kokler[i];
                HarfDizisi kokDizi = new HarfDizisi(kok.icerik(), alfabe);
                if (icerikDegisti)
                {
                    girisDizi = new HarfDizisi(strIslenmis, alfabe);
                }
                //int kokHatasi=MetinAraclari.editDistance(kok.icerik(), strGiris.substring(0,kok.icerik().length()));
                int kokHatasi = 0;

                icerikDegisti = yardimci.kokGirisDegismiVarsaUygula(kok, kokDizi, girisDizi);
                if (logger.IsInfoEnabled)
                {
                    logger.Info("Aday:" + kok.icerik() + " tolerans:" + kokHatasi);
                }
                if (MetinAraclari.inEditDistance(kok.icerik(), strIslenmis, TOLERANS))
                {
                    cozumler.Add(new Kelime(kok, alfabe));
                }
                IList <Kelime> sonuclar;
                if (TOLERANS > kokHatasi)
                {
                    sonuclar = coz(kok, kokDizi, girisDizi, TOLERANS - kokHatasi);
                }
                else
                {
                    sonuclar = coz(kok, kokDizi, girisDizi, 0);
                }
                cozumler.AddRange(sonuclar);
            }
            foreach (Kelime kel in cozumler)
            {
                yardimci.kelimeBicimlendir(kel);
                if (Char.IsUpper(strGiris[0]))
                {
                    kel.icerik().harfDegistir(0, alfabe.buyukHarf(kel.icerik().ilkHarf()));
                }
            }
            return(cozumler.ToArray());
        }
Esempio n. 10
0
        public void MaakNieuweKok()
        {
            var naam = "Jef";
            var kok  = new Kok(naam);

            Assert.AreEqual(kok.Naam, naam);
        }
        public void duzyaziOzelDurumOku(Kok kok, String okunanIcerik, String[] parcalar)
        {
            for (int i = 2; i < parcalar.Length; i++)
            {
                String _ozelDurum = parcalar[i];

                //kisaltma ozel durumunun analizi burada yapiliyor.
                if (_ozelDurum.StartsWith(TurkceKokOzelDurumTipi.KISALTMA_SON_SESLI.KisaAd))
                {
                    int loc = _ozelDurum.IndexOf(':');
                    if (loc > 0)
                    {
                        String parca    = _ozelDurum.Substring(loc + 1);
                        char   sonSesli = parca[0];
                        if (!alfabe.harf(sonSesli).sesliMi())
                        {
                            logger.Warn("Hatali kisaltma harfi.. Sesli bekleniyordu." + _ozelDurum);
                        }
                        kok.KisaltmaSonSeslisi = sonSesli;
                        if (parca.Length > 1)
                        {
                            kok.ozelDurumEkle(ozelDurumlar[TurkceKokOzelDurumTipi.KISALTMA_SON_SESSIZ]);
                        }
                        else
                        {
                            kok.ozelDurumCikar(TurkceKokOzelDurumTipi.KISALTMA_SON_SESLI);
                        }
                    }
                    else
                    {
                        char sonHarf = kok.icerik()[kok.icerik().Length - 1];
                        if (!alfabe.harf(sonHarf).sesliMi())
                        {
                            kok.KisaltmaSonSeslisi = 'e';
                            kok.ozelDurumEkle(ozelDurumlar[TurkceKokOzelDurumTipi.KISALTMA_SON_SESLI]);
                        }
                    }
                    continue;
                }

                //diger ozel durumlarin elde edilmesi..
                KokOzelDurumu oz = ozelDurum(_ozelDurum);
                if (oz != null)
                {
                    kok.ozelDurumEkle(oz);
                }
                else
                {
                    logger.Warn("Hatali kok bileseni" + kok.icerik() + " Token: " + _ozelDurum);
                }
            }

            //kisaltmalari ve ozel karakter iceren kokleri asil icerik olarak ata.
            if (kok.tip() == KelimeTipi.KISALTMA || kok.ozelDurumIceriyormu(TurkceKokOzelDurumTipi.OZEL_IC_KARAKTER))
            {
                kok.Asil = okunanIcerik;
            }
        }
Esempio n. 12
0
 public KokDugumu(char harf, IEnumerable <char> icerik, Kok kok)
 {
     this.harf = harf;
     this.kok  = kok;
     if (!icerik.Equals(kok.icerik()))
     {
         this.kelime = icerik;
     }
 }
Esempio n. 13
0
        public void testEqual()
        {
            Kok kok1 = new Kok("kitap", KelimeTipi.ISIM);
            Kok kok2 = new Kok("kitap", KelimeTipi.ISIM);
            Kok kok3 = new Kok("kitab", KelimeTipi.ISIM);

            Assert.IsTrue(kok1.Equals(kok2));
            Assert.IsTrue(kok1.Equals(kok3) == false);
        }
        public String rastgeleKelimeOlustur(Kok kok, int maxEkSayisi)
        {
            Kelime     kelime         = kelimeUret(kok);
            IList <Ek> girisEkListesi = new List <Ek>();

            girisEkListesi.Add(kelime.sonEk());
            IList <Ek> rastgeleEkler = rastgeleEkListesiGetir(girisEkListesi, maxEkSayisi);

            return(kelimeUretici.kelimeUret(kok, rastgeleEkler));
        }
Esempio n. 15
0
        public void testKokDegisimleri()
        {
            Kok kok = new Kok("bahset", KelimeTipi.FIIL);

            kok.ozelDurumEkle(koz.ozelDurum("GEN"));
            kok.ozelDurumEkle(koz.ozelDurum("YUM"));
            String[] sonuclar = koz.ozelDurumUygula(kok);
            Assert.AreEqual(sonuclar.Length, 1);
            Assert.AreEqual(sonuclar[0], "bahsed");
        }
Esempio n. 16
0
        /**
         * İkili (Binary) sözlükten bir kök okur. çağrıldıkça bir sonraki kökü alır.
         *
         * @return bir sonraki kök. Eğer okunacak kök kalmamışsa null
         */
        public Kok oku()
        {
            String icerik = string.Empty;

            //kok icerigini oku. eger dosya sonuna gelinmisse (EndOfStreamException) null dondur.
            try
            {
                int len = binReader.ReadByte() * 255 + binReader.ReadByte();
                icerik = Encoding.UTF8.GetString(binReader.ReadBytes(len));
            }
            catch (EndOfStreamException)
            {
                this.Kapat();
                return(null);
            }

            int    len1 = binReader.ReadByte() * 255 + binReader.ReadByte();
            String asil = Encoding.UTF8.GetString(binReader.ReadBytes(len1));

            // Tip bilgisini oku (1 byte)
            string     tipstr = binReader.ReadByte().ToString();
            KelimeTipi tip    = (KelimeTipi)Enum.Parse(typeof(KelimeTipi), tipstr);
            Kok        kok    = new Kok(icerik, tip);

            if (asil.Length != 0)
            {
                kok.Asil = asil;
            }

            char c = Encoding.UTF8.GetChars(binReader.ReadBytes(2))[0];

            if (char.IsLetter(c))
            {
                kok.KisaltmaSonSeslisi = c;
            }

            // Özel durum sayısını (1 byte) ve ozel durumlari oku.
            int ozelDurumSayisi = binReader.ReadByte();

            for (int i = 0; i < ozelDurumSayisi; i++)
            {
                int           ozelDurum = binReader.ReadByte();
                KokOzelDurumu oz        = ozelDurumlar.ozelDurum(ozelDurum);
                kok.ozelDurumEkle(oz);
            }
            int frekans = binReader.ReadByte() * 255 * 255 * 255 + binReader.ReadByte() * 255 * 255
                          + binReader.ReadByte() * 255 + binReader.ReadByte();

            if (frekans != 0)
            {
                kok.Frekans = frekans;
            }
            return(kok);
        }
        public override int Compare(Kelime o1, Kelime o2)
        {
            if (o1 == null || o2 == null)
            {
                return(-1);
            }
            Kok k1 = o1.kok();
            Kok k2 = o2.kok();

            return(k2.Frekans - k1.Frekans);
        }
 public void kokIcerikIsle(Kok kok, KelimeTipi tip, String icerik)
 {
     //tip kisaltma ise ya da icerik ozel karakterler iceriyorsa bunu kok'un asil haline ata.
     if (tip.Equals(KelimeTipi.KISALTMA))
     {
         kok.Asil = icerik;
     }
     if (tip.Equals(KelimeTipi.FIIL) && (icerik.EndsWith("mek") || icerik.EndsWith("mak")))
     {
         icerik     = icerik.Substring(0, icerik.Length - 3);
         kok.Icerik = icerik;
     }
 }
Esempio n. 19
0
        /**
         * Kok nesnesinin tipine gore gelebilecek ilk ek'i dondurur.
         * Baslangic ekleri bilgisi dil tarafindan belirlenir.
         *
         * @param kok
         * @return ilk Ek, eger kok tipi baslangic ekleri <baslangicEkleri>
         *         haritasinda belirtilmemisse BOS_EK doner.
         */
        public Ek ilkEkBelirle(Kok kok)
        {
            Ek baslangicEki = baslangicEkleri[kok.tip()];

            if (baslangicEki != null)
            {
                return(baslangicEki);
            }
            else
            {
                return(BOS_EK);
            }
        }
Esempio n. 20
0
 /**
  * Verilen kökü sözlüğe ekler. Eklemeden once koke ait ozel durumlar varsa bunlar denetlenir.
  * Eger kok ozel durumlari kok yapisini bozacak sekilde ise ozel durumlarin koke uyarlanmis halleride
  * agaca eklenir. bu sekilde bozulmus kok formlarini iceren kelimeler icin kok bulma
  * islemi basari ile gerceklestirilebilir.
  *
  * @param kok: Sözlüğe eklenecek olan kök nesnesi.
  */
 public void ekle(Kok kok)
 {
     kok.Indeks = indeks++;
     agac.ekle(kok.icerik(), kok);
     String[] degismisIcerikler = ozelDurumlar.ozelDurumUygula(kok);
     if (degismisIcerikler.Length > 0)
     {
         foreach (String degismisIcerik in degismisIcerikler)
         {
             agac.ekle(degismisIcerik, kok);
         }
     }
 }
Esempio n. 21
0
        public void yapim_eklerini_sozluge_ekle(string word)
        {
            Kelime[] cozumler = zemberek.kelimeCozumle(word);

            foreach (Kelime kelime_ in cozumler)
            {
                //Mevcut Kelimenin Kökü
                Kok kok = kelime_.kok();

                List <net.zemberek.yapi.ek.Ek> eklerlistesi = new List <net.zemberek.yapi.ek.Ek>();


                for (int i = 0; i < kelime_.ekSayisi(); i++)
                {
                    //Kelime kelime = cozumler[0];
                    //Kok kok = (Kok)zemberek.dilBilgisi().kokler().kokBul("koyun")[0];
                    //String yeni = zemberek.kelimeUret(kok, kelime.ekler());

                    //
                    eklerlistesi.Add(kelime_.ekDizisi()[i]);
                    // Response.Write("<br>" + kelime_.ekDizisi()[i]);
                    if (kelime_.ekDizisi()[i].ToString().Contains("BULUNMA_LIK") || kelime_.ekDizisi()[i].ToString().Contains("BULUNMA_LI") ||
                        kelime_.ekDizisi()[i].ToString().Contains("DURUM_LIK") || kelime_.ekDizisi()[i].ToString().Contains("ILGI_CI") ||
                        kelime_.ekDizisi()[i].ToString().Contains("YOKLUK_SIZ"))
                    {
                        string yeni_kelime = zemberek.kelimeUret(kok, eklerlistesi);
                        //Response.Write("<br>" + yeni_kelime);
                        //if (zemberek.dilBilgisi().kokler().kokBul(yeni_kelime, KelimeTipi.ISIM).ToString() != "")
                        Kelime[] cozumler2 = zemberek.kelimeCozumle(yeni_kelime);
                        //for döngüsü açıp çözümler arasında içerik kök ile yeni_kelimenin uyumunu kontrol etmek
                        bool varmi = false;
                        foreach (Kelime kelime2_ in cozumler2)
                        {
                            //Mevcut Kelimenin Kökü
                            Kok kok2 = kelime2_.kok();
                            if (kok2.icerik() == yeni_kelime)
                            {
                                varmi = true;
                            }
                        }
                        //Yoksa eklemeyi yap varsa eklemeden devam et
                        if (!varmi)
                        {
                            zemberek.dilBilgisi().kokler().ekle(new Kok(yeni_kelime, KelimeTipi.ISIM));//yeni kelime sistemde
                        }
                    }
                }
            }
        }
Esempio n. 22
0
        public Kok oku()
        {
            String line;

            while (!reader.EndOfStream)
            {
                line = reader.ReadLine().Trim();
                if (line.StartsWith("#") || line.Length == 0)
                {
                    continue;
                }

                String[] tokens = line.Split(AYIRICI_PATTERN);
                if (tokens == null || tokens.Length < 2)
                {
                    logger.Warn("Eksik bilgi!" + line);
                    continue;
                }
                String icerik = tokens[0];
                Kok    kok    = new Kok(icerik);

                // ayikla() ile kok icerigi kucuk harfe donusturuluyor ve '- vs
                // isaretler siliniyor.
                kok.Icerik = alfabe.ayikla(kok.icerik());

                // kelime tipini belirle. ilk parca mutlaka kok tipini belirler
                if (_kokTipAdlari.ContainsKey(tokens[1]))
                {
                    KelimeTipi tip = (KelimeTipi)_kokTipAdlari[tokens[1]];
                    kok.Tip = tip;
                    ozelDurumlar.kokIcerikIsle(kok, tip, icerik);
                }
                else
                {
                    logger.Warn("Kok tipi bulunamadi!" + line);
                }

                // kok ozelliklerini ekle.
                ozelDurumlar.duzyaziOzelDurumOku(kok, icerik, tokens);

                // bazi ozel durumlar ana dosyada yer almaz, algoritma ile uretilir.
                // bu ozel durumlari koke ekle.
                ozelDurumlar.ozelDurumBelirle(kok);

                return(kok);
            }
            this.Kapat();
            return(null);
        }
Esempio n. 23
0
 /**
  * Eðer Düðüme baðlý bir kök zaten varsa esSesli olarak ekle,
  * yoksa sadece kok'e yaz.
  *
  * @param kok
  */
 public void kokEkle(Kok kok)
 {
     if (this.kok != null)
     {
         if (esSesliler == null)
         {
             esSesliler = new List <Kok>(1);
         }
         esSesliler.Add(kok);
     }
     else
     {
         this.kok = kok;
     }
 }
        public void ozelDurumBelirle(Kok kok)
        {
            // eger bir fiilin son harfi sesli ise bu dogrudan simdiki zaman ozel durumu olarak ele alinir.
            // bu ozel durum bilgi tabaninda ayrica belirtilmedigi icin burada kok'e eklenir.  aramak -> ar(a)Iyor
            char sonChar = kok.icerik()[kok.icerik().Length - 1];

            if (kok.tip() == KelimeTipi.FIIL && alfabe.harf(sonChar).sesliMi())
            {
                //demek-yemek fiilleri icin bu uygulama yapilamaz.
                if (!kok.ozelDurumIceriyormu(TurkceKokOzelDurumTipi.FIIL_KOK_BOZULMASI))
                {
                    kok.ozelDurumEkle(ozelDurumlar[TurkceKokOzelDurumTipi.SIMDIKI_ZAMAN]);
                }
            }
        }
Esempio n. 25
0
        public void FindStempForWords()
        {
            int      o        = 0;
            Zemberek zemberek = new Zemberek(new TurkiyeTurkcesi());

            for (o = 0; o < WordsOfFile.Count; o++)
            {
                Word   _word     = new Word();
                string _wordfull = WordsOfFile[o].WFull;
                //sırayla kelimeleri ek kök ayrımına sokmak gerekli

                int           c             = 0;
                Kelime[]      CozumluKelime = zemberek.kelimeCozumle(_wordfull);
                EkYonetici    sozluk        = zemberek.dilBilgisi().ekler();
                string        kok           = string.Empty;
                string        tip           = string.Empty;
                List <string> ektipler      = new List <string>();
                if (CozumluKelime.Length > 0)
                {
                    c = CozumluKelime.Count() - 1;
                    Kok       _wstemp = CozumluKelime[c].kok();
                    List <Ek> leks    = CozumluKelime[c].ekler();

                    for (int e = 0; e < leks.Count; e++)
                    {
                        string ektip = leks[e].ad();
                        ektipler.Add(ektip);
                    }
                    kok = _wstemp.icerik();
                    tip = leks[0].ad();
                }
                else
                {
                    kok = _wordfull;
                    tip = "ISIM_KOK";
                }
                WordsOfFile[o].WType  = tip;             //Kök tipi
                WordsOfFile[o].WStemp = kok;             //kökün ne olduğu
                WordsOfFile[o].Wadds.AddRange(ektipler); //eklenen eklerin listesi tiple birlikte
            }
            StemTypeBrief = WordsOfFile.GroupBy(x => x.WType)
                            .Select(n => new Stem
            {
                Type  = n.Key,
                Count = n.Count()
            }
                                    ).ToList();
        }
Esempio n. 26
0
        public void testDegismisIcerikOlustur()
        {
            Kok kok = new Kok("ara", KelimeTipi.FIIL);

            kok.ozelDurumEkle(koz.ozelDurum(TurkceKokOzelDurumTipi.SIMDIKI_ZAMAN));//bu satır java tarafında yok, ama bu olmazsa test cakar
            Assert.IsTrue(koz.ozelDurumUygula(kok).Length > 0);
            Assert.AreEqual((koz.ozelDurumUygula(kok))[0], "ar");
            Assert.IsTrue(kok.ozelDurumIceriyormu(TurkceKokOzelDurumTipi.SIMDIKI_ZAMAN));
            kok = new Kok("kitap", KelimeTipi.ISIM);
            kok.ozelDurumEkle(koz.ozelDurum(TurkceKokOzelDurumTipi.SESSIZ_YUMUSAMASI));
            Assert.IsTrue(koz.ozelDurumUygula(kok).Length > 0);
            Assert.AreEqual((koz.ozelDurumUygula(kok))[0], "kitab");

            String str = "al" + Alfabe.CHAR_ii + "n";

            kok = new Kok(str, KelimeTipi.ISIM);
            kok.ozelDurumEkle(koz.ozelDurum(TurkceKokOzelDurumTipi.ISIM_SESLI_DUSMESI));
            Assert.IsTrue(koz.ozelDurumUygula(kok).Length > 0);
            Assert.AreEqual((koz.ozelDurumUygula(kok))[0], "aln");

            kok = new Kok("nakit", KelimeTipi.ISIM);
            kok.ozelDurumEkle(koz.ozelDurum(TurkceKokOzelDurumTipi.ISIM_SESLI_DUSMESI));
            kok.ozelDurumEkle(koz.ozelDurum(TurkceKokOzelDurumTipi.SESSIZ_YUMUSAMASI));
            Assert.IsTrue(koz.ozelDurumUygula(kok).Length > 0);
            Assert.AreEqual((koz.ozelDurumUygula(kok))[0], "nakd");

            kok = new Kok("ben", KelimeTipi.ZAMIR);
            kok.ozelDurumEkle(koz.ozelDurum(TurkceKokOzelDurumTipi.TEKIL_KISI_BOZULMASI));
            Assert.IsTrue(koz.ozelDurumUygula(kok).Length > 0);
            Assert.AreEqual((koz.ozelDurumUygula(kok))[0], "ban");

            kok = new Kok("sen", KelimeTipi.ZAMIR);
            kok.ozelDurumEkle(koz.ozelDurum(TurkceKokOzelDurumTipi.TEKIL_KISI_BOZULMASI));
            Assert.IsTrue(koz.ozelDurumUygula(kok).Length > 0);
            Assert.AreEqual((koz.ozelDurumUygula(kok))[0], "san");

            kok = new Kok("de", KelimeTipi.FIIL);
            kok.ozelDurumEkle(koz.ozelDurum(TurkceKokOzelDurumTipi.FIIL_KOK_BOZULMASI));
            Assert.IsTrue(koz.ozelDurumUygula(kok).Length > 0);
            Assert.AreEqual((koz.ozelDurumUygula(kok))[0], "di");

            kok = new Kok("ye", KelimeTipi.FIIL);
            kok.ozelDurumEkle(koz.ozelDurum(TurkceKokOzelDurumTipi.FIIL_KOK_BOZULMASI));
            Assert.IsTrue(koz.ozelDurumUygula(kok).Length > 0);
            Assert.AreEqual((koz.ozelDurumUygula(kok))[0], "yi");
        }
Esempio n. 27
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());
        }
Esempio n. 28
0
        static void Main(string[] args)
        {
            Klant klant1 = new Klant("Piet");
            Klant klant2 = new Klant("Jef");
            BestellingsSysteem bestellingsSysteem = new BestellingsSysteem();
            Bel  bel  = new Bel();
            Ober ober = new Ober("Jan")
            {
                BestellingsSysteem = bestellingsSysteem,
                Bel = bel
            };
            Kok kok = new Kok("Marie")
            {
                BestellingsSysteem = bestellingsSysteem,
                Bel = bel
            };

            klant1.Bestel(ober, "Hoegaarden");
            klant2.Bestel(ober, "Koffie");
        }
Esempio n. 29
0
        public bool kokGirisDegismiVarsaUygula(Kok kok, HarfDizisi kokDizi, HarfDizisi girisDizi)
        {
            //turkce'de sadece kisaltmalarda bu metoda ihtiyacimiz var.
            char c = kok.KisaltmaSonSeslisi;

            if (girisDizi.Length == 0)
            {
                return(false);
            }
            if (kok.tip().Equals(KelimeTipi.KISALTMA) && c != 0)
            {
                TurkceHarf h = alfabe.harf(c);
                //toleransli cozumleyicide kok giristen daha uzun olabiliyor.
                // o nedenle asagidaki kontrolun yapilmasi gerekiyor.
                int kokBoyu = kok.icerik().Length;
                if (kokBoyu <= girisDizi.Length)
                {
                    girisDizi.ekle(kokBoyu, h);
                }
                else
                {
                    girisDizi.ekle(h);
                }
                kokDizi.ekle(h);
                if (kok.ozelDurumIceriyormu(TurkceKokOzelDurumTipi.KISALTMA_SON_SESSIZ))
                {
                    //gene toleransli cozumleyicinin hata vermemesi icin asagidaki kontrole ihtiyacimiz var
                    if (kokBoyu < girisDizi.Length)
                    {
                        girisDizi.ekle(kokBoyu + 1, alfabe.harf('b'));
                    }
                    else
                    {
                        girisDizi.ekle(alfabe.harf('b'));
                    }
                    kokDizi.ekle(alfabe.harf('b'));
                }
                return(true);
            }
            return(false);
        }
Esempio n. 30
0
        public void testCozumle3()
        {
            //zemberek = new Zemberek(new TurkiyeTurkcesi());
            string str = "getirttirebilirsiniz";

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

            Kok kok = sonuc[0].kok();

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

            Assert.AreEqual(6, ekler.Count);
            Assert.AreEqual("FIIL_KOK", ekler[0].ad());
            Assert.AreEqual("FIIL_OLDURGAN_T", ekler[1].ad());
            Assert.AreEqual("FIIL_ETTIRGEN_TIR", ekler[2].ad());
            Assert.AreEqual("FIIL_YETENEK_EBIL", ekler[3].ad());
            Assert.AreEqual("FIIL_GENISZAMAN_IR", ekler[4].ad());
            Assert.AreEqual("FIIL_KISI_SIZ", ekler[5].ad());
        }
Esempio n. 31
0
 /**
  * Kok nesnesinin tipine gore gelebilecek ilk ek'i dondurur.
  * Baslangic ekleri bilgisi dil tarafindan belirlenir.
  *
  * @param kok
  * @return ilk Ek, eger kok tipi baslangic ekleri <baslangicEkleri>
  *         haritasinda belirtilmemisse BOS_EK doner.
  */
 public Ek ilkEkBelirle(Kok kok) {
     Ek baslangicEki = baslangicEkleri[kok.tip()];
     if (baslangicEki != null)
         return baslangicEki;
     else
         return BOS_EK;
 }