/** * İ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 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; } }
public Kok kokBul(String str, KelimeTipi tip) { List <Kok> kokler = agac.bul(str); foreach (Kok kok in kokler) { if (kok.tip() == tip) { return(kok); } } return(null); }
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); }
public Kok(System.String icerik, KelimeTipi tip) { this._icerik = icerik; this._tip = tip; }
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; } }
public Kok kokBul(String str, KelimeTipi tip) { List<Kok> kokler = agac.bul(str); foreach (Kok kok in kokler) { if(kok.tip()==tip) return kok; } return null; }
public Kelime(Kok kok, HarfDizisi dizi) { this._kok = kok; this._icerik = dizi; _tip = kok.tip(); }
public Kelime(Kok kok, Alfabe alfabe) { this._kok = kok; _icerik = new HarfDizisi(kok.icerik(), alfabe); _tip = kok.tip(); }