Могу дать наводку.
В свое время была такая популярная библиотека padeg.dll, позволявшая склонять ФИО, должности и названия организаций. В слонении названий там применялся внутренний алгоритм, преобразующий исходный текст в строку звучности.
Возможно, это то, что вам надо.
Я в свое время конвертировал эту библиотеку их delphi в java, вот кусок кода оттуда:
strToSonic /**
* разрешенные символы
*/
private static final String legalChar = "абвгдежзийклмнопрстуфхцчшщъыьэюя";
/**
* звучности символов
* 3 - гласные
* 2 - сонорные
* 1 - шумные
* ъ и ь не имеют звучности и обозначены символом ^
*/
private static char sonic(char index) {
// абвгдежзийклмнопрстуфхцчшщъыьэюя
return ("31111311321222312113111111^3^333".charAt(index-'а'));
}
/**
* Формирует строку звучности, соответствующую строке символов
* @param value
* @return
*/
public static String strToSonic(String value) {
StringBuilder result = new StringBuilder();
// заменим ё на е
value = value.toLowerCase().replace("ё", "е");
if (value.length()>0)
// для всех символов
for (int i = 0; i < value.length(); i++) {
//if (legalChar.indexOf(value.charAt(i)) >= 0)
char ch = value.charAt(i);
// если символ разрешенный
if (legalChar.charAt(0)<=ch && ch<=legalChar.charAt(legalChar.length()-1)) {
char test = sonic(ch);
// и имеет звучность
if (test != '^')
// заменим его на звучность
result.append(test);
}
}
return result.toString();
}