Архив Март 2009
Рахманинов в турне
Имена склонились
Ура. Мужские имена дали корреляцию 97% с Яндекс.Склонятором, женские все 99%
Остаётся добавить фильтрацию по списку исключений, и будет самодостаточный склонятор имен на java. К сожалению тест показал, что к фамилиям нужно приглядеться получше.
Класс для публичного доступа, когда дотестирую, думаю написать статью на хабр.
Пользоваться вот так:
Declension.inflectFemale(Declension.GENITIVE, “Саша”)
Declension.inflectMale(Declension.GENITIVE, “Миша”)
Соответственно:
Declension.GENITIVE – родительный
Declension.DATIVE – дательный
Declension.ACCUSATIVE- винительный
Declension.INSTRUMENTAL- творительный
Declension.PREPOSITIONAL- предложный
Есть в этом что-то корявое, лингв.термины русского языка переводить на английский. Но транслит ещё ужаснее, а использовать русские слова в коде совесть не позволяет.
Склонение имен, перезагрузка
Теперь за пятнадцать минут у меня есть шикарная база с популярными именами и их склонениями для тестов будущей библиотеки. Как это было:
1. Метод генерирующий по имени почти java массив - Абрам -> {Абрам, Абрама, Абраму, Абрама, Абрамом, Абраме, }, (Спасибо за красоту dom4j)
private static String testName(String name) throws MalformedURLException, URISyntaxException, DocumentException {
URL url = new URI(URL_PREFIX + name).toURL();
SAXReader reader = new SAXReader();
Document document = reader.read(url);StringBuilder sb = new StringBuilder(name.length() * 6 + 20);
List<Element> inflections = document.getRootElement().elements("inflection");
if (inflections.size() > 1) {
sb.append("{");
for (Element inflection : inflections) {
sb.append(inflection.getText()).append(", ");
}
return sb.append("},").toString();
}return null;
}
* This source code was highlighted with Source Code Highlighter.
2. Найти список имен, я воспользовался – мужскими и женскими с женского сайта
В итоге я имею два массива имен ~ по 400 штук, на которых и буду тестировать свою реализацию склонений. (Яндекс не осилил имена Ий и Юм, парням не повезло с именем однако)
Склонение имен
Боже, как я сегодня ненавижу русский язык. Два часа времени, красные глаза. И всё чтобы написать на java склонение имен. Осилил только мужские имена. Завтра предстоят женские…
Миша .. Миши .. Мише .. Миши .. Мишей .. Мише Михаил .. Михаила .. Михаилу .. Михаила .. Михаилом .. Михаиле Дима .. Димы .. Диме .. Диму .. Димой .. Диме Александр .. Александра .. Александру .. Александра .. Александром .. Александре Олег .. Олега .. Олегу .. Олега .. Олегом .. Олеге Андрей .. Андрея .. Андрею .. Андрея .. Андреем .. Андрее Тарас .. Тараса .. Тарасу .. Тараса .. Тарасом .. Тарасе Юра .. Юры .. Юре .. Юру .. Юрой .. Юре Юрий .. Юрия .. Юрию .. Юрия .. Юрием .. Юрии Иван .. Ивана .. Ивану .. Ивана .. Иваном .. Иване Ваня .. Вани .. Ване .. Ваню .. Ваней .. Ване Сергей .. Сергея .. Сергею .. Сергея .. Сергеем .. Сергее