示例#1
0
        /**
         * İ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;
     }
 }
示例#3
0
        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);
        }
示例#5
0
 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;
     }
 }
示例#7
0
		public Kok(System.String icerik, KelimeTipi tip)
		{
			this._icerik = icerik;
			this._tip = tip;
		}
示例#8
0
 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;
 }
示例#9
0
 public Kelime(Kok kok, HarfDizisi dizi)
 {
     this._kok    = kok;
     this._icerik = dizi;
     _tip         = kok.tip();
 }
示例#10
0
 public Kelime(Kok kok, Alfabe alfabe)
 {
     this._kok = kok;
     _icerik   = new HarfDizisi(kok.icerik(), alfabe);
     _tip      = kok.tip();
 }
示例#11
0
 public Kelime(Kok kok, HarfDizisi dizi)
 {
     this._kok = kok;
     this._icerik = dizi;
     _tip = kok.tip();
 }
示例#12
0
 public Kelime(Kok kok, Alfabe alfabe)
 {
     this._kok = kok;
     _icerik = new HarfDizisi(kok.icerik(), alfabe);
     _tip = kok.tip();
 }