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(); }
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; }
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)); }
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)); }
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); }
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); }
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); }
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)); }
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); }
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); }
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); }
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); }
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); }
public override HarfDizisi olusumIcinUret(Kelime kelime, Ek sonrakiEk) { return cozumlemeIcinUret(kelime, null, null); }
/** * 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); }
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;*/ } } }
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)); }
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()); } } } }
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); }
/** * 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()); }
public bool OzelEkOlustur(Kelime ozelKelime) { return(false); }
/** * 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()); }
public abstract HarfDizisi cozumlemeIcinUret(Kelime kelime, HarfDizisi giris, HarfDizisiKiyaslayici kiyaslayici);
public virtual HarfDizisi olusumIcinUret(Kelime kelime, Ek sonrakiEk) { return ekUretici.olusumIcinEkUret(kelime.icerik(), sonrakiEk, _uretimBilesenleri); }
public virtual HarfDizisi olusumIcinUret(Kelime kelime, Ek sonrakiEk) { return(ekUretici.olusumIcinEkUret(kelime.icerik(), sonrakiEk, _uretimBilesenleri)); }