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); }
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()); }
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()); }
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()); }
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()); }
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); }
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()); }
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; } }
public KokDugumu(char harf, IEnumerable <char> icerik, Kok kok) { this.harf = harf; this.kok = kok; if (!icerik.Equals(kok.icerik())) { this.kelime = icerik; } }
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)); }
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"); }
/** * İ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; } }
/** * 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); } }
/** * 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); } } }
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 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); }
/** * 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]); } } }
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(); }
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"); }
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()); }
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"); }
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); }
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()); }
/** * 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; }