Проектирование класса morpher
Необходим класс для преобразования формы слова из заданной в заданную.
Язык - английский. (Точнее не ясно)
Требования
-
Абстрактный класс.
-
Необходимо получение леммы слова (лемма - базовая форма)
-
Необходимо преобразование слова в заданную форму
-
существительного (noun);
-
глагола (verb);
-
прилагательного (adjective);
-
??? числительного (numeral).
Части речи взял из issue #442.
Реализация
Есть несколько подходов:
-
Сделать 2 функции (lemma, morph);
-
Сделать для каждой части речи функции moprh и lemma;
-
Сделать по 1 функции для каждой части речи (morph_noun, morph_verb, morph_adjective, ...).
Функция morph_* с параметрами по умолчанию будет давать лемму данной части речи.
Вопросы
-
Где будет находиться реализация набора правил по выбору необходимой конкретной библиотеки морфинга?
-
Есть ли смысл разделять функции по частям речи в данном классе? Все равно это будет сводиться к вызову метода класса конкретной библиотеки, а там к вызову функции библиотеки. Для большинства библиотек это будут 3 одинаковых функции.
Comments (3)
-
reporter -
repo owner На обсуждении мы говорили о том, что вызывающий код обычно знает часть речи, иначе как он может указать форму? Тогда нет никакого смысла устраивать в функции кучу развилок по типу слова (это вообще вредно - куча развилок по какому-либо перечислению, не зря их на наследование меняют в стандартном рефакторинге) а вместо этого лучше сделать группу функций - по одной для каждого типа слова. (есть вроде исключение в виде двух частей речи с одинаковыми формами, но они вроде как одинаково и меняются, для них один код можно сделать)
-
repo owner - changed status to resolved
word operators
- Log in to comment
На обсуждении было предложение сделать прототип функции moprh так: