Первое, что нужно сделать, это разбить входную строку на токены. Токен - это просто часть строки, которую вы хотите сопоставить. В вашем случае, похоже, что размер вашего токена составляет 2 слова (но это не обязательно). Вы также можете удалить все знаки препинания из входной строки.
Тогда для вашего ввода ваши токены
[«Это», «это», «хороший», «хороший день», «первый день», «я есть», «я иду», «иду», «за», «за» , "пробежка"]
Затем вы можете перебрать токены и проверить, содержатся ли они в каждом из списков. Может выглядеть так:
input = 'This is a good day I am heading out for a jog'
words = input.split(' ')
tokens = [' '.join(words[i:i+2]) for i in range(len(words) - 1)]
for token in tokens:
if token in list1:
print('{} is in list1'.format(token))
if token in list2:
print('{} is in list2'.format(token))
Одна вещь, которую вы, вероятно, захотите сделать для оптимизации, - это использовать set
s для list1 и list2 вместо списков.
set1 = set(list1)
set
s предлагают O (1) поисков, в отличие от O (n) для списков, что очень важно, если ваши списки ключевых слов большие.