Посчитать сколько раз слово встречается в тексте

Хотелось бы узнать реально ли это реализовать вот так: слова в единственном и множественном числе распознавать как одно и то же слово. Да, тексты на английском. Так что глаголы в разных временах тоже нужно считать одним и тем же словом.

Ну типа вот глагол drink, drank, drunk в трёх временах везде по-разному пишется.

Может кто-то знает где есть готовые алгоритмы для такого дела? Или где что-то подобное реализовано, можно подсмотреть


Ответы (1 шт):

Автор решения: CrazyElf

Как уже написали в комментариях, задача не такая простая. Поскольку ЯП был не обозначен, приведу варианты для Python. Основная NLP (natural language processing) библиотека для него это, пожалуй, NLTK, хотя есть и другие, как на основе NLTK, так и самостоятельные.

Что нужно вам из всего NLP:

  • POS tagging (POS = part of speech)
  • lemmatization

Лемматизация делает именно то, что вам нужно - приводит слова в нормальную форму. Но ей для работы нужно знать, что вы подали на вход - глагол или существительное, как уже упомянули в комментариях. И тут действительно проблема, можно применить POS-tagger для определения части речи, но если его применять к отдельным словам, он не сможет разобрать, где существительное, а где глагол и выберет просто то, что чаще встречается в текстах по статистике. Для того, чтобы учитывать контекст нужны уже сложные модели на основе нейросетей, которые анализируют текст целиком. Такие модели тоже есть, но это уже "тяжёлая артиллерия", думаю, вам нужно начать всё же с чего-то попроще.

→ Ссылка