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ı ?
<?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;
}
}