Проектирование класса morpher

Issue #444 resolved
Nikita Penskoy created an issue

Необходим класс для преобразования формы слова из заданной в заданную.

Язык - английский. (Точнее не ясно)

Требования

  1. Абстрактный класс.

  2. Необходимо получение леммы слова (лемма - базовая форма)

  3. Необходимо преобразование слова в заданную форму

  • существительного (noun);

  • глагола (verb);

  • прилагательного (adjective);

  • ??? числительного (numeral).

Части речи взял из issue #442.

Реализация

Есть несколько подходов:

  • Сделать 2 функции (lemma, morph);

  • Сделать для каждой части речи функции moprh и lemma;

  • Сделать по 1 функции для каждой части речи (morph_noun, morph_verb, morph_adjective, ...).

Функция morph_* с параметрами по умолчанию будет давать лемму данной части речи.

Вопросы

  1. Где будет находиться реализация набора правил по выбору необходимой конкретной библиотеки морфинга?

  2. Есть ли смысл разделять функции по частям речи в данном классе? Все равно это будет сводиться к вызову метода класса конкретной библиотеки, а там к вызову функции библиотеки. Для большинства библиотек это будут 3 одинаковых функции.

Comments (3)

  1. Nikita Penskoy reporter

    На обсуждении было предложение сделать прототип функции moprh так:

    /*
     * Morph word to given form
     * @param word givenword Given word
     * @param word neededword Given form
     */
    function morph (word givenword, word neededword);
    
  2. Oleg Sychev repo owner

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

  3. Log in to comment