Пример #1
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
                        }
                    }
                }
            }
        }
Пример #2
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();
        }