Şöyle bir proje üzerinde çalışıyorum. A dilinden bir metin program tarafından okunucak. Sonra A dilinden B diline tercüme yapılırken, B dilindeki kelimeler metinin içerinğine en yakın anlamı taşıyanlardan seçilecek.
örnek : Elimizde bir metin, metnin içinde "taç" kelimesi geçiyor. Tercüme ederken eğer metin spor içerikli ise futboldaki taç kelimesini, eğer tarihi anlatan bir metin ise kraliyette geçen "taç" kelimesini çevirecek.
İşin programlamasından ziyade, size fikir danışmak için yazıyorum.
Eğer siz olsaydınız, bu şekilde bir program için nasıl bir mantık, yol izlerdiniz?
Biraz bu hususta düsündüm. Fakat sorunuz kafamda tam netlesmedi.
Su konuyu biraz daha acsan. Mesela: Metin icinde sadece kelime cevirisi mi yoksa tüm metin cevirisi mi yapacaksiniz? Yazilim özel mi kullanilacak, yoksa herkes tarafindan mi. Program piyasalarda bildigimiz translator bir dilden diger dile gibi mi olacak vs. Biraz daha detay lütfen
Program "anlamını dikkate alan" çeviri programı. Herkes tarafından kullanılabilecek. Tabi sadece desteklenen diller için.
program sizin verdiğiniz bir metnin "ilgi alanını" saptayacak. Mesela spor, eğer metin içerisinde birden fazla anlama gelen kelime varsa, bu kelimenin spor ile ilgili olan anlamını çevirecek. kabaca bu..
örnek : Çok kısa bir sıra vardı.
Bu cümleden ne anlıyorsunuz? Ben 2 farklı anlam çıkartıyorum. Çünkü tam net neğil.
Ama bu cümleden önce şöyle bir cümle olsaydı : sinemaya gittik. --> Sinemanın önündeki kuyruğu kastetdiğimi anlayabilirdiniz.
Peki ya şöyle bir cümle olsaydı : derse girdik. --> sınıfın içindeki bir sıradan bahsettiğimi anlayabilirdiniz.
bu sadece kabaca bir örnekti. Ne yapmak istediğimi basitçe açıklamak için.
normal çeviriden farkı ne.? normal çeviri programlarında çoğu zaman anlamının çok dışına çıkan tercümeler görüyoruz. Cümle yapısını söylemiyorum, cümlenin yapısı tam olmasada içeriği anlaşılır. ama anlamı kaçırmaki tehlikeli olur. Bu yüzden anlamını kaçırmadan en iyi çeviriyi yapması gerekiyor.
Tsk. ederim. Evet bahsettiginiz konuda haklisiniz. Bu konu aslinda zor bir konu. Ceviri programlarinda bende bir kac defa ceviri yaptirmistim, cok garip seyler cikmisti ortaya. Kisa cümlelerde kismen de olsa iyi olmakla beraber, uzun cümlelerde saglikli ceviriler olmuyor.
Benim ilk etepta aklima gelen, ceviri yapilacak metnin veya kelimenin cümle icinde olasi anlamlarinnin girilip (yazilarak), ceviri yapilacak metinle karsilastirilip, konrol edilerek cevirinin yapilmasi. Ve cevirinin cümleler halinde yapilmasi, Tüm metni dikkate alarak degil. Gerci cümle halinde yapilan ceviriler kelimeler arasindaki ahengi ortadan kaldiriyor. Cevirinin bu asamada eksiksiz olmasi önemli. Bazi programlarda imla kurallarina göre de ceviriler yapiliyor. Sayet imla kurallari yanlis ise ceviride yanlis oluyor.
Metnin konusuna göre ceviri yapilabilir. Mesela: Baslik spor ise, metnin icerigi sporla ilgili demektir. Gerci bunun istisnasida olabilir. Yani spor basligiyla ilgili bir metnin icinde farkli konularda olabilir. Yani konu basliklari soyut iser, icerisinde farkli konular yoksa, basliktan kontrol edilerek yapilabilir. Dolayisiyla farkli anlamlara gelebilecek kelimeler basliktan hareketle saglikli cevrilebilir.
Cevabi yazinda belki konu farkli bir mecraya kayar.
Yazılım, içeriği başlıktan değil, metnin tamamından kendisi anlaması gerekiyor. Mesela şöyle bir başlık atalım metnimize..
"Giyim satışlarında patlama yaşandı"
Eğer sadece başlığa bakarak anlam çıkartırsak, muhtemelen yazılım savaşla alakalı bir konu olduğunu algılayacak. Halbuki burdaki patlamak kelimesi olumlu manâda artış anlamına geliyor.
Benim aklımdaki düşünceyi kısaca yazıyım, belki sizin aklınızda daha iyi fikirler oluşmasını sağlar.
Öncelikle, böyle bir yazılımda kodlamadan ziyade, veri tabanının tasarımı çok çok önem taşıyor. Eğer güzel bir mantıkla veritabanı tasarlanırsa, pek fazla kodlamaya gerek kalmıyacağı kanaatindeyim.
Şöyleki :
3 tane ana konu şeçelim
mesela konular şöyle olsun
1. Yaşam
2. Spor
3. Siyaset
(veya daha genel konular ile değiştirilebilinir)
veri tabanındaki her kelime bu 3 ana konuya yakınlıklarına göre kendi ağırlıkları olacak. mesela örnek olarak 1 tane kelime ele alalım.
ingilizce kelime : ticket
anlam karşılıkları : 1. bilet
2. trafik ceza makbuzu
3. Bir partinin aday listesi
Kelime Yaşam Spor Siyaset
-------- ----------- ------- --------
bilet 5 7 1
trafik ceza makbuzu 7 1 1
bir partinin aday listesi 1 1 9
bu sadece örnek bi tablo.. gerçek verileri taşıması önemli değil. Bundan sonra program metnin konusu ile kelimelerin konu dağılımlarını kıyaslayıp (belki daha iyi sonuç için ara işlemler, filtrelemeler yapılabilinir) en olası kelime çeviride kullanıcak.
Tabi mükemmel bir sistem olması ilk etapta gerekli değil, belki ikilemde kaldığı yerlerde, kullanıcının seçmesini sağlayabiliriz.
evet, benim ilk olarak aklıma gelen düşünce bu.. eğer geliştirmede yardımcı olursanız sevinirim.. teşekkürler.
Yapmak istidiğiniz program yapay zeka ile alakalı olduğu için fazla kodlama olmayacağını sanmanız hatadır zira çok fazla olacaktır...Bu tarz bir program yapmanızın özel bir amacı var mı ? Bir sözlük olarak düşünüyoranız seçilen kelimenin o dilde veya karşı dilde hangi manalara geldiğini sonuç olarak gösterebilirsiniz. Zaten güncel uygulamalarda aynısını yapıyor...
Bu konuda en iyi yaklasim cümle dikkate alinarak yapilan cevirimler olur. Bir kelime ne kadar farkli anlamlara gelse bile, cümle icerisinde kelimenin kasdedilen gercek anlami tespit edilebilirt. Fakat bu konuda bir zorluk var; o da kelimeyle ilgili tüm cümleler kurulup, cevirisi yapilan cümleyle kontrol edilerek ceviri gerceklesebilir. Bu ise cok uzun bir is ve mesekkatli.
Baska bir alternatif ise: cümlenin gelisinden veya gidisinden kelimelerin anlamlarini tespit ederek yapilan ceviri. Fakat kapali cümlelerde bu biraz zor gibi. Ama ben yine birinci sikta israrliyim. Bir daten bakla bu is yapilabilir. Farkli anlamlara gelen, gelebilecek cümleler veya diger cümleler girilir ve iki cümle karsilastirilarak kontrol edilip ceviri yapilabilir. Bilgisayarda bu yaklasimda anlar.
Bu konuda en iyi yaklasim cümle dikkate alinarak yapilan cevirimler olur. Bir kelime ne kadar farkli anlamlara gelse bile, cümle icerisinde kelimenin kasdedilen gercek anlami tespit edilebilirt. Fakat bu konuda bir zorluk var; o da kelimeyle ilgili tüm cümleler kurulup, cevirisi yapilan cümleyle kontrol edilerek ceviri gerceklesebilir. Bu ise cok uzun bir is ve mesekkatli.
Baska bir alternatif ise: cümlenin gelisinden veya gidisinden kelimelerin anlamlarini tespit ederek yapilan ceviri. Fakat kapali cümlelerde bu biraz zor gibi. Ama ben yine birinci sikta israrliyim. Bir daten bakla bu is yapilabilir. Farkli anlamlara gelen, gelebilecek cümleler veya diger cümleler girilir ve iki cümle karsilastirilarak kontrol edilip ceviri yapilabilir. Bilgisayarda bu yaklasimda anlar.
Tsk
Analiz ne kadar kısa cümlede yapılırsa o kadar zor olur. Cümle içindeki kelime sayısı arttıkça, cümlenin içeriği biraz daha netleşir. o yüzden analizi bütün metin bazında yapıp ortalama konuyu saptayıp, cümle cümle, kelimeleri bu anlama en yakın karşılıklarından seçmeyi düşünüyorum. Yine cümle bazından çeviri tabi ama konunun önceden saptanmış olması gerek. Belki her cümle içinde analiz yapıp metnin anlam alanıyla(sağlık,bilim,yaşam vs..) karşılaştırıp daha iyi bir sonuç elde edilebilinir. Ama şunu demeliyimki, düşündüğüm yolun sağlıklı çalışması için çok fazla kelime içeren veri tabanı gerek. Tabi buda zamanla oluşucak birşey.
neyse, teşekkürler yinede, bakalım ne gibi bir ürün çıkacak karşımıza.
1. Aklima söyle bir yöntem geldi. Mesela: bir listbox, memo, richedit, veri bankasioda olabilir. Dil ve cümle kurallariyla ilgili iyi yazilmis bir eser satir satir girilebilir. Bunu yapmak kolay ve zahmet gerektirmez. Girerken cümleler kontrol edilerek ayni cümlelerin tekrarida önlenebilir. Ve olasi tüm cümle sekilleri bu yöntemle girilebilir. Bunu sunun icin söylüyorum. Bir dili tüm cümle yapilariyla tasarlayip girmek cok zor ve uzun bir is.
2. Birinci sikta girilen (listbix, richedit vs.) her bir cümlenin, birebir karsiligi olan hedef dildeki ceviri ikinci listbox richedit vs. indeksine girilmeli. Dolayisiyle cevirisi istenilen metin bir richeditten birinci siktaki listbox richedit vs. aratilarak, hedef dilde karsiligi olan ceviri ekrana yansitilabilir. Bu manada, icerikten ziyade birebir ceviridir.
3. Burada bir sorun su olabilir. Cümleler arasindaki ahengi, akiciligi yakalama problemi. Ikincisi ise: kapali cümleler ve mecazi anlam ifade eden cümle yapilari. Akicilik problemini bilgisayarda cözmek mümkün degil gibi bir sey. Kapali cümleler ise: Yukarda bahsettigim mantikla ayri bir mantikla cözülebilir. Olasi Kapali cümlelerde cümlenin gelisinden kontrol edilebilir. Yani bir önceki veya bir sonraki cümleden hareketle... Buda ayri bir listbox vs. hareketle kontrol edilebilir. Sayet cevirisi istenilen metin birinci, ikinci kisimlarla yazilim karsilastirmayi bunlarda yapar, sayet bulamazsa, ücüncü sikta arar.
4. Sizin bahsettiginiz yöntem metnin tümünü dikkate alarak yapilan mana, icerik cevirisi. Bu saglikli bir yöntem degil. Ve bu ceviriler de bozuk.