Türkçe Heceler

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kilitli
Kullanıcı avatarı
Master_Yoda
Üye
Mesajlar: 35
Kayıt: 13 Ara 2005 12:57

Türkçe Heceler

Mesaj gönderen Master_Yoda »

Kuri tersten ben düzden heceleme yazmıştık . Eğlenceliydi. Şimdi başka bişey denedim. Otomatik hece türetmek.

0 Sesli 1 Sessiz Harf olsun olası okunabilen heceler 7 çeşit :

1) 0 (A)
2) 01 (AB, AZ)
3) 10 (BA, NE)
4) 101 (ÇOK)
5) 110 (BRE)
6) 011 (ALT, ÜST)
7) 1011 (SARP, KULP, TÜRK)

Aslında tvist gibi harf sayısını 5 çıkaranlar var ama kapsam dışı diyebiliriz.
Türkçede hecelerin %50 10 formunda % 35 ise 101 formunda %1 e yakın 1011 ve %0.15 011 ve %0.3 civarında 110 var ..

Aslında herşey basit görünüyor ama KOHY pek kullanılan bir hece olmasa gerek .. Yada COCÇ pek okunmuyor. İki sessiz harfin yanyana geldiği 3 hece türünde bu sorun var.

Hangi sessiz harfler yan yana gelebilir ?!?

http://www.tdk.gov.tr adresine bakarsanız dogaldilişleme ile ilgili epey çalışma olduğunu görebilirsiniz. Bilgisayarlı tercüme, üniversitelerimizde üzerinde çalışılan konulardan..
Kullanıcı avatarı
Asri
Kıdemli Üye
Mesajlar: 767
Kayıt: 16 Eyl 2003 09:54
Konum: istanbul

Mesaj gönderen Asri »

Merhaba,

Aşağıdaki linkte "Pwlmaker 4.1 plus" adında bir program mevcut. Bu program ile Türkçe alfabeyi kullanarak önce 1 den 4 haneye kadar tüm harf kombinasyonlarını oluşturuyorsunuz.

Daha sonra ses uyumu bölümünden sessiz, kalın sesli, ince sesli (sae) gibi hazır tanımları işaretliyorsunuz yada kendiniz "sae" işaretlerini kullanarak tanım belirtebiliyorsunuz.

Bu aşamadan sonra program size uygun heceleri listeyecektir.

Bu programın ilk sürümlerinin kodları bende vardı. İlgilenirseniz arşivden bakabilirim.

http://www.pckurulum.com/component/opti ... wn/id,482/

iyi çalışmalar.
Öğrenmek ve öğretmek, akıntıya karşı yüzmek gibidir ilerleyemediğiniz taktirde gerilersiniz.
Kullanıcı avatarı
Master_Yoda
Üye
Mesajlar: 35
Kayıt: 13 Ara 2005 12:57

Mesaj gönderen Master_Yoda »

Teşekkürler Asri,

Ancak benim kombinasyonlarda hece türetme sorunum yok .
Aşağıdaki kodla üretiyorum. Bana tamamı gerekli değil. Random yeterli üretkenliği sağlıyor. Amacım kızıma hece çalışması yaptıracak bir program yazmaktı.

Ancak sessizlerin (hx te 11 içeren kombinasyonlar) hangi sessizleri (h ta ikinci eleman h[1]) içereceği konusunda bir belirsizlik var.
Bu arada cl bir checklist box ve hece türlerinin ekrandan seçilmesini sağlıyor..

Kod: Tümünü seç

Var
 h : Array[0..1] of String[26] = ( 'AEIİOÖUÜ','BCÇDFGĞHJKLMNPRSŞTVYZ');
 HX: Array[0..6] of String[4] = ('0','01','10','101','110','011','1011');

procedure TForm1.Button1Click(Sender: TObject);
Var
 i,v,k: Integer;
 s,a: string;
begin
 Repeat
   i:=Random(7);
   if Not cl.Checked[i] Then Continue;
   s:='';
   For k:=1 To Length(hx[i]) do Begin
     v:=Ord(hx[i][k])-48;
     Repeat a:=h[v][random(Length(h[v]))+1] Until (k=1) or (a[1]<>s[k-1]) ;
     s:=s+a;
   End;
   if s[1]='Ğ' then continue; // okuması zor...
   Break;
 Until False;
 Label1.Caption:=s;
end;
Bunun yanında sesiz harflerin sert/ yumuşak sınıflaması dışında sürekli /Süreksiz ve çıkış yerine göre Dudak/Diş/Gırtlak olarak da ayrıldığını öğrendim ama hala sorunuma bir çözüm bulamadım.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

İlgili arkadaşlardan özür dileyerek sonraki mesajlar için ufak bir temizlik işlemi yaptım izninizle :wink: Amaç birbirine karşı kırıcı olmaya gayret göstermek değil bildiklerimizi paylaşım mayası ile çoğaltmak olmalı. Buradaki "gayret göstermek" deyimini suçlama amaçlı değil, gayretimizi elimizden geldiğince paylaşım amaçlı kullanabildiğimiz kadar kullanalım demek istedim. Bu amaçla oluşan bu topluluğa uzaktan yakından katkısı olanlara da bu katkıyı alanlar umarız müteşekkirdir. Birbirine karşı söyleyeceğimiz veya uyarı amaçlı mesajlarımız varsa onları da özelden göndermeye özen gösterirsek olayın büyümesini ve farkında olmadan da kırıcı olmayı engellemiş oluruz diye düşünüyorum. Burada da yine özelden biribirine söğüp sayın demek istemiyorum tabi ki; en azından karşılıklı-doğrudan, anlaşılmayan noktaları biribirine iletmek olayları büyütmeden anlaşılır makul bir noktaya gelmeye sebep olacaktır.. Kısaca konuşa konuşa olayı.. :wink: Ya da isterseniz ortamı gerelim :( Kime faydası olacak? Zor olan germek değil sükûneti sağlamak ve sürdürmektir.

Nerede kalmıştık :wink: :)
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kilitli