У меня есть модель Word2Vec, которую я создаю, в которой у меня имеется список слов ~ 30 тыс. Слов. У меня есть список предложений (фразе_лист) размером около 150к. Я пытаюсь удалить токены (слова) из предложений, которые не были включены в vocab_list. Задача казалась простой, но вложение в циклы и перераспределение памяти выполняется медленно с использованием приведенного ниже кода. Эта задача заняла ок. 1 час, чтобы бежать, поэтому я не хочу повторять это.
Есть ли более чистый способ попробовать это?
import numpy as np
from datetime import datetime
start=datetime.now()
timing=[]
result=[]
counter=0
for sent in sentences_list:
counter+=1
if counter %1000==0 or counter==1:
print(counter, 'row of', len(sentences_list), ' Elapsed time: ', datetime.now()-start)
timing.append([counter, datetime.now()-start])
final_tokens=[]
for token in sent:
if token in vocab_list:
final_tokens.append(token)
#if len(final_tokens)>0:
result.append(final_tokens)
print(counter, 'row of', len(sentences_list),' Elapsed time: ', datetime.now()-start)
timing.append([counter, datetime.now()-start])
sentences=result
del result
timing=pd.DataFrame(timing, columns=['Counter', 'Elapsed_Time'])