Поговорим о такой теме как лемматизация. Существуют хитрые библиотеки которые могут срезать часть строки и вы получите существительное в единственном числе. Схема такая «Caring» -> Лемматизация -> «Care». Лемматизация — это процесс преобразования слова в его базовую форму. Помимо лемматизации существует и стемминг (stemming). Стеминг просто срезает часть слова. Чаще всего срезается окончание. Стеминг часто приводит к орфографическим ошибкам. Примеры которые я вам покажу будут с английскими словами.
Когда применяется лемматизация? При парсинге сайтов можно использовать лемматизацию. Допустим, есть список со словами во множественном числе и вы обрабатываете каждое слово. Тут лемматизация отработает хорошо. Бывает задача на разбивку всего текста по пробелу. В этом случае у вас появляется список со словами и предлогами. Вы можете очистить текст от предлогов и все слова в тексте привести к единственному числу. Тут работа для лемматизации. Подробнее о лемматизации читайте на странице подходы лемматизации с примерами на Python.
Для того чтобы воспользоваться лемматизацией нужно скачать любой из пакетов Python и попробовать в деле. Если у вас нет такого пакета, то установите пакет при помощи pip. Например, pip install TextBlob.
Были времена я на PHP писал код который изменяет слово в зависимости от падежа. Это неблагодарная работа. Мало кто из нас хорошо знает английский язык. Надо обратить внимание на тот момент, что английский язык имеет мощную синонимию. Один предмет или явление может по-разному писаться, но обозначать одно и тоже понятие.
Теперь для наглядности продемонстрирую пример. Подключим пакет nltk. Нужно создать экземпляр WordNetLemmatizer() и вызвать функцию lemmatize() для обработки одного слова.
# вводим в консоли python3
# подключаем библиотеку nltk
import nltk
from nltk.stem import WordNetLemmatizer
# Init the Wordnet Lemmatizer
lemmatizer = WordNetLemmatizer()
# Lemmatize Single Word
print(lemmatizer.lemmatize("bats"))
#> bat
print(lemmatizer.lemmatize("are"))
#> are
print(lemmatizer.lemmatize("feet"))
#> foot