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 } } } } }
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(); }