пытаюсь сопоставить слово с некоторыми жестко закодированными значениями, скажем, у меня есть это слово
'revenue' but 'revenues'
также должно быть соответствие. Таким же образом, как это
'liability' > 'liabilities' .
какой подход мы должны принять здесь, заранее спасибо.
Я пытался использовать свой собственный алгоритм, но очень сложно поддерживать библиотеку слов и ее соответствующее множественное или единственное число.




Если вы не хотите поддерживать полный словарь, вы можете попытаться реализовать некоторые общие правила, а также словарь исключений из этих правил. Но это все быстрые и хакерские решения. В зависимости от того, насколько хорошим он должен быть, также будут доступны различные подходы, такие как машинное обучение и, возможно, некоторые языковые сервисы, доступные в облаках, таких как AWS или Azure...
Возможно, вы захотите взглянуть на PorterStemmer люцена. Идея состоит в том, чтобы сравнивать основы обоих слов, а не сравнивать единственное и множественное число. Подробнее об этом можно прочитать здесь.
Здесь — это зависимость maven, и ниже приведен пример:
PorterStemmer stemmer = new PorterStemmer();
stemmer.setCurrent("liability");
stemmer.stem();
System.out.println(stemmer.getCurrent());
stemmer.setCurrent("liabilities");
stemmer.stem();
System.out.println(stemmer.getCurrent());
Приведенное выше возвращает одинаковые основы для обоих слов.
Достойный ответ, но, к сожалению, он, кажется, превращает «ответственность» в «ответственность», а не в «ответственность».