У меня есть два объекта списка: wiki_text и corpus. wiki_text состоит из небольших фраз, а корпус состоит из длинных предложений.
wiki_text = ['never ending song of love - ns.jpg',
'ecclesiological society',
"1955-56 michigan wolverines men's basketball team",
'sphinx strix',
'petlas',
'1966 mlb draft',
...]
corpus = ['Substantial progress has been made in the last twenty years',
'Patients are at risk for prostate cancer.',...]
Моя цель - создать фильтр, который может отфильтровывать элементы в wiki_text, который является подстрокой элементов в корпусе. Например, если «экклезиологическое общество» существует как часть предложения в корпусе, оно должно быть сохранено в конечном результате. Окончательный результат должен быть подмножеством исходного wiki_text. Следующий код - это то, что я использовал раньше:
def wiki_filter(wiki_text, corpus):
result = []
for i in wiki_text:
for e in corpus:
if i in e:
result.append(i)
break
return result
Однако, учитывая длину wiki_text и корпус (каждый> 10 миллионов). Эта функция работала очень долго. Есть ли лучший способ решить эту проблему?