У меня есть длинный список из 1,5 млн предложений и такой же длинный список слов, которые я ищу в списке предложений. Например:
list_of_words = ['Turin', 'Milan']
list_of_sents = ['This is a sent about turin.', 'This is a sent about manufacturing.']
У меня есть следующая функция, которая позволяет быстро отождествлять эти предложения с ключевыми словами, и вычислительное время довольно важно, поэтому я хотел бы избежать циклов, если это возможно:
def find_keyword_comments(test_comments,test_keywords):
keywords = '|'.join(test_keywords)
word = re.compile(r"^.*\b({})\b.*$".format(keywords), re.I)
newlist = filter(word.match, test_comments)
final = list(newlist)
return final
Вместо того, чтобы возвращать список строк, которые содержат ключевое слово, я бы хотел, чтобы он возвращал список кортежей с соответствующим словом и строку, содержащую местоположение. Так что в настоящее время возвращается:
final = ['This is a sent about turin.']
и я бы хотел вернуть
final = [('Turin', 'This is a sent about turin.')]
Есть ли синтаксическая функциональность, которую я неправильно использую или забываю?