Türkçe kelime tahlil programı ?
merhaba arkadaşlar
bir program düşünün Türkçe'deki kelimeleri giriyoruz.Bize kökünü + ekini + şahsını veriyor.
mesela programa girdi olarak
== geliyorum
kelimesini girince bize çıktı olarak
= gelmek -> fiil kökü
= i -> kaynaştırma
= yor -> şimdiki zaman
= m -> 1.tekil şahıs eki
yada
== Bakışıyoruz şeklinde girince
-bak: fiil kökü
-ış: fiilden fiil yapım eki
-ı: yardımcı ses
-yor: şimdiki zaman eki
-uz: birinci çoğul şahıs eki
şeklinde bir çıktı versin.
Soru olarak böyle bir program var mı ?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (19)
Aşağıdaki linkleri incelemenizi tavsiye ederim
Natural Language Processing Library for Turkish by github@hrzafer
Demo
<?php
function kelimeAyir($kelime) {
// Kelime hecelere ayrılıyor
$heceler = hecele($kelime);
// Son hece alınıyor (birinci çekim eki burada yer alır)
$son_hece = array_pop($heceler);
// İlk hece alınıyor (fiil kökü burada yer alır)
$ilk_hece = array_shift($heceler);
// Fiil kökü tespit ediliyor
$fiil_koku = fiilKoku($ilk_hece);
// Fiil yapım eki tespit ediliyor (birinci çekim eki dahil ediliyor)
$fiil_yapim_eki = substr($son_hece, 0, -2);
// Kişi ekleri tespit ediliyor
$kişi_eki = substr($son_hece, -2);
// Çıktıya eklenen değerler için bir dizi oluşturuluyor
$cikti = array(
'= ' . $fiil_koku . ' -> fiil kökü',
'= ' . $fiil_yapim_eki . ' -> fiil yapım eki',
'= ' . $kişi_eki . ' -> kişi eki'
);
// Çıktı dizesi oluşturuluyor
$cikti_str = implode("\n", $cikti);
return $cikti_str;
}
function hecele($kelime) {
// Türkçe heceleme kurallarına göre kelime hecelerine ayrılıyor
// Bu örnekte basit bir algoritma kullanılmıştır, gerçek dilbilgisi kurallarını kullanabilirsiniz
$heceler = array();
$kelime_len = mb_strlen($kelime, 'utf-8');
for ($i=0; $i<$kelime_len; $i++) {
$hece = '';
if ($i < $kelime_len-1 && mb_substr($kelime, $i, 2, 'utf-8') == 'iy') {
$hece = mb_substr($kelime, $i, 2, 'utf-8');
$i++;
} else {
$hece = mb_substr($kelime, $i, 1, 'utf-8');
}
$heceler[] = $hece;
}
return $heceler;
}
function fiilKoku($hece) {
// Fiil kökü tespiti için Türkçe dilbilgisi kurallarına göre işlem yapılıyor
// Bu örnekte sadece son hecenin son harfi kontrol edilerek fiil kökü belirleniyor
$son_harf = mb_substr($hece, -1, 1, 'utf-8');
if (in_array($son_harf, array('a', 'e', 'ı', 'i', 'o', 'ö', 'u', 'ü'))) {
return mb_substr($hece, 0, -1, 'utf-8');
} else {
return $hece;
}
}
Böyle bir uygulamayı yapabilmek için öncelik olarak dil bilgisine iyice sahip olman lazım. Dil bilgisine sahip değilsen bile araştırmalısın.
Herşeyi bir kağıda dökmelisin mantığını anlamalısın. Eğer bunun için bir api filan yoksa herşeyi kendin yapmalısın. Tüm kelimeleri bir veritabanında kayıt etmelisin.
Sonrasında ise bir algoritma üzerinde bunları birleştirmelisin. Bunu yapabilirsin bu konuda rahat ol ama bu seni baya uğraştıracak buna da hazır ol :)
Bu konuda araştırmalarım yok bilgimde yok ama benim önerim budur :)