Оба класса Rectangle и Ellipse должны переопределять оба абстрактных метода.
Чтобы обойти это, у вас есть 3 варианта:
abstract class Shape {
// ...
void draw(Graphics g);
}
И
class Rectangle extends Shape {
void draw(Graphics g) {
// ...
}
}
Наконец
class Ellipse extends Shape {
void draw(Graphics g) {
// ...
}
}
И вы можете переключаться между ними, например:
Shape shape = new Ellipse();
shape.draw(/* ... */);
shape = new Rectangle();
shape.draw(/* ... */);
Опять же, просто пример.
Вы столкнулись с 2 проблемами здесь. Я предлагаю несколько способов, которые я нашел полезным.
1. Распознавание пользовательских сущностей: Чтобы решить эту проблему, вам нужно добавить больше обучающих предложений со всеми возможными длинами сущностей. ner_crf
будет лучше предсказывать, когда вокруг сущностей есть идентифицируемые маркеры (например, предлоги)
2. Извлечение сущностей из ответа одним словом: В качестве обходного пути я предлагаю вам выполнить ниже манипуляции на стороне клиента.
Когда вы отправляете вопрос наподобие
What´s your favorite animal?
, добавьте маркер к вопросу, чтобы указать клиенту, что ожидается один ответ. например Вы можете отправить##SINGLE## What´s your favorite animal?
клиенту.Клиент может удалить
##SINGLE##
из вопроса и показать его пользователю. Но когда клиент отправляет ответ пользователя на сервер, он не отправляетDog
, он отправляет что-то вродеUser responded with single answer as Dog
Вы можете обучить вашу модель извлечению сущностей из такого ответа. BLOCKQUOTE>