Java İle Türkçe Heceleme
-
Canım sıkıldı gece gece biraz kod yazayım dedim. Ali Nesin'in bir makalesinden yararlanarak yazdım bu kodu.
Trabzonspor, Fotostar, şokokrem gibi son 4 hafri ayrıca bir kelime olan ya da en azından 4 harfli bir hece olan kelimeleri doğru heceleyemiyor.
Ama dedikleri gibi "There is always one more bug!" :)
/**
* @author Crimin@l
*/
public class Hece
{
public static String[] heceleme(String s)
{
String[] arr = new String[0];
int j=s.length();
for(int i=s.length();i>0;i--)
{
if(seslimi(s.substring(i-1,i)))
{
if(i-2!=-1)
{
if(seslimi(s.substring(i-2,i-1)))
{
arr = extendArray(arr,s.substring(i-1,j));
j=i-1;
}
else
{
if(i==3)
{
if(seslimi(s.substring(0,1)))
{
arr = extendArray(arr,s.substring(i-2,j));
j=i-2;
arr = extendArray(arr,s.substring(0,1));
i=0;
}
else
{
arr = extendArray(arr,s.substring(i-3,j));
j=i-2;
i=0;
}
}
else
{
arr = extendArray(arr,s.substring(i-2,j));
j=i-2;
}
}
}
else
{
arr = extendArray(arr,s.substring(i-1,j));
}
}
}
return arr;
}
public static boolean seslimi(String s)
{
if(s.compareTo("a")==0 || s.compareTo("e")==0|| s.compareTo("ı")==0 || s.compareTo("i")==0|| s.compareTo("o")==0 || s.compareTo("ö")==0 || s.compareTo("u")==0|| s.compareTo("ü")==0)
return true;
else
return false;
}
public static String[] extendArray(String[] arr, String s)
{
String[] arr2=new String[arr.length+1];
arr2[0]=s;
for(int i=0; i<arr.length;i++)
arr2[i+1]=arr[i];
return arr2;
}
public static String toString(String[] arr)
{
if(arr.length==0)
return "İşlem yürütülemedi. Heceleme yapılamadı, lütfen girdinizi kontrol ediniz.";
String s="";
for(int i=0;i<arr.length-1;i++)
s+=arr[i] + " - ";
s+=arr[arr.length-1];
return s;
}public static void main(String[] args)
{
System.out.println(toString(heceleme("heceleme")));
}
} -
google arama yaparken karşılaştım, bide bunu dene;
http://robmind.blogspot.com/2007/01/heceleme-limi-yoksa-hecelememe-limi.html
-
http://code.google.com/p/zemberek/
-
drkure robmind benim sınıf arkadaşım :)
yarın gider ondan hesap sorarım :))
