Как стать автором
Обновить

Комментарии 11

Не сочтите за рекламу - довече написал маленькую статейку в совем блоге про похожесть слов :

http://denis-ka.blogspot.com/2008/02/blog-post_21.html#links
http://denis-ka.blogspot.com/2008/02/blog-post_22.html#links

Не то чтобы совсем что то новое , просто собранно в кучу и проверенно на жизнеспособность.
хабракат пожалуйста
сказано-сделано
В последнее время очень интересуюсь подобными вещами, спасибо за статью :) Проблема с морфами возникает практически всегда когда делаешь человеческий интерфейс.

Простейший пример - у юзеров в базе есть запись о поле - 1 или 2, соответственно мужской или женский.
Когда юзер заходит в любой профиль, нужно писать "Малинка написала 2 новости" или "Фунтик написал 3 новости". И таких слов которые склоняются в зависимости от пола может быть очень много.

Хотелось бы узнать как хабрадевелоперы решают такие задачи? :)

То же самое например есть "Вася Пупкин", а новости были добавлены "Васей Пупкиным"
Я это у себя в блоге реализовывал - первой слово искал среди словаря женских имён и если не находил, то по умолчанию - женский род. Проблема возникает когда используются псевдонимы и латиница. Так что потом убрал.
Для перезаписи слов в зависимости от пола я у себя использовал такую функцию:

function rw_word($w,$s) {
// Функция перезаписи слов в зависимости от пола
// Вызов: rw_word("слово", "пол");
// $w - слово(а),
// $s - пол (значения: "1" - муж, "2" - жен)
if (!$s || $s==1 || (trim($s) == "")) {echo $w;}
else {
$original_word = $w;

// справочник слов
if ($w=="Он") $w="Она";
if ($w=="его") $w="ее";
if ($w=="он был") $w="она была";
if ($w=="Он написал") $w="Она написала";
if ($w=="зарегистрировался") $w="зарегистрировалась";
if ($w=="ним") $w="ней";
if ($w=="написал") $w="написала";
if ($w=="сказал") $w="сказала";

// если нет совпадений для женского пола, предупреждаем-с, если есть, выводим
if ($original_word == $w) {echo "<b>не найдено</b>";} else {echo $w;}
}
}



Может кто-то предложит более красивое или функциональное решение?
Ну я таких функций не использую, потому что у меня несколько языков, я на smarty перекладываю перевод каждой фразы из БД. Тут главное определить какого рода слово.
Спасибо за материал. Как раз сейчас пытался заставить себя начать работать над дипломом (а темой я себе выбрал создание поисковой системы, на свою глупую голову...), а тут много ссылочек и сам материал очень и очень полезный.
Сам у себя я реализовывал как-то счетчик символов в тексте, делал простенькую разбивку по окончаниям (21 символ, 22 символа, 25 символов, 0 без ничего). Потом еще в одном проекте по недвижимости вбивал вплоть до восьмикомнатной квартиры:
"Большая четырехкомнатная квартира
Огромная пятикомнатная
Шикарная шестикомнатная
Роскошная семикомнатная
Гигантская восьмикомнатная"

Вообще, кстати, с русским языком у очень многих веб-opensource продуктов большие проблемы.
Взять тот же phpbb, где никакой морфологической поддержки не предусмотрено в принципе...
Поправьте тэги! А то я из-за того, что они ошибочные, только сейчас заметил, что пропустил такой важный для меня топик.
saerch, искусственный интеллек
добро
а «интеллек»?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации