为NLP应用迭代在Numpy数组上

问题描述 投票:0回答:1

我有一个正在构建的Word2Vec模型,我在那里有一个大约3万个单词的vocab_list。我有一个约150k的句子列表(sentence_list)。我正在尝试从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'])
python numpy nlp word2vec
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.