Проблема в том, что вы не ограничиваете свой поиск целыми выражениями. Это означает, что любое слово, которое может появиться как подстрока другого слова (например, "go" является подстрокой слова "good"), будет рассматриваться как совпадение.
Это потребует использования регулярных выражений (модуль re)
В качестве альтернативы вы можете преобразовать все не-буквенные символы в пробелы, а затем выполнить поиск с пробелами вокруг слов и текста, чтобы найти только целое слово (целые выражения в вашем случае ).
Например:
# translation table for all non-letters to spaces
from string import printable,ascii_letters
spaces = str.maketrans({nl:" " for nl in set(printable)-set(ascii_letters)})
words = ['hi', 'going on', 'go']
paddedWords = [f" {word} " for word in words]
transcript = "hi how are you. I am good. what's going on.".split('.')
for i,text in enumerate(transcript,1):
paddedText = f" {text.lower().translate(spaces)} "
if any( word in paddedText for word in paddedWords):
print(i)
# 1
# 3