Универсальный алгоритм подсчета, написанный мной, копируем нужный текст и просто вставляем его в переменную text, затем прописываем условие в зависимости от того, что нам нужно. Важно, что мы проверяем знаки после нашего слова, на точку, запятую, воскл и вопр знак, двоеточие, ТРОЕТОЧИЕ, это отдельный символ, и в моем случае с прогнозом 2024 от марата без троеточия не получить верный ответ

Untitled

Конкретно этот пример кода ищет отдельные слова то:

text = """
OUR_TEXT
"""
res = 0
for i in range(1, len(text)-2): #вычитаем длину нашего слова, которое мы ищем
    if text[i] == "т":
        if text[i+1] == "о":
            if (text[i-1] == ' ' or text[i-1] == ',' or text[i-1] == '.') and ((text[i+2] == "…") or (text[i+2] == ' ') or (text[i+2] == '.') or (text[i+2] == ',') or (text[i+2] == '?') or (text[i+2] == '!') or (text[i+2] == ':')):
                res += 1
                print(text[i - 1] + text[i] + text[i + 1] + text[i + 2]) № просто выводим и зрительно анализируем, чтобы оно не накосячило
print(res) #197, как и должно быть

Если хотим чтобы было в составе, то в это условие мы пишем continue, а в else мы уже прибавляем:

text = """TEXT"""
res = 0
for i in range(1, len(text)-2):
    if text[i] == "т": # можем еще добавить or text[i] == "Т" если регистр первой буквы не принципиален
        if text[i+1] == "о":
            if (text[i-1] == ' ' or text[i-1] == ',' or text[i-1] == '.') and ((text[i+2] == "…") or (text[i+2] == ' ') or (text[i+2] == '.') or (text[i+2] == ',') or (text[i+2] == '?') or (text[i+2] == '!') or (text[i+2] == ':')):
                continue #тут мы скипаем, если не хотим, чтобы отдельные слова считались
            else:
                res += 1
                print(text[i - 1] + text[i] + text[i + 1] + text[i + 2])
print(res)

Короче хз, можно модифицировать, но это прям база и большинство штук, которых в тексте 200+ и их посчитать вручную = мазохизм, то этот алгоритм упрощает жизнь

Еще пример:

Untitled

text = """
ТЕКСТ ПЕРВОЙ ГЛАВЫ, Я НЕ БУДУ ЭТО ПИСАТЬ ЗДЕСЬ ИНАЧЕ МЕСТА МНОГО СОЖРЕТ
"""

res = 0
for i in range(1, len(text)-2):
    if text[i] == "в" or text[i] == "В":  # Нам подходят оба регистра
        if text[i+1] == "ы":
            if (text[i-1] == ' ' or text[i-1] == ',' or text[i-1] == '.') and ((text[i+2] == "…") or (text[i+2] == ' ') or (text[i+2] == '.') or (text[i+2] == ',') or (text[i+2] == '?') or (text[i+2] == '!') or (text[i+2] == ':')):
                continue   #скипаем, потому что отдельные слова нам не подходят
            else:
                res += 1
                print(text[i - 1] + text[i] + text[i + 1] + text[i + 2])
print(res) # выведет 48

Untitled