嵌套循环更快

时间:2020-01-08 18:21:31

标签: python-3.x nlp artificial-intelligence data-science kaggle

在kaggle比赛中,我开发了一种新的得分方法。但是,要做到这一点,需要匹配文本中的某些单词和vocab中的某些单词。为了创建vocab,我使用了

vectorizer = CountVectorizer(min_df=0, lowercase=False)
vectorizer.fit(disaster_tweets)
disaster_voc = vectorizer.vocabulary_
vectorizer.fit(non_disaster_tweets)
non_disaster_voc = vectorizer.vocabulary_

然后,我通过循环减去另一个单词的相同单词数。很快但是,这行代码非常慢。这是减法代码:

for  key_1 in list(disaster_voc):
    for key_2 in list(non_disaster_voc):
        if key_1.lower() == key_2.lower():
            disaster_voc[key_1] = disaster_voc[key_1] - non_disaster_voc[key_2] 

然后,真正的部分是针对每个推文,将词汇单词与推文中的单词进行匹配。这是代码:


score_train = []
for i in range(len(train['text'].values)):
    score = 0
    for  key_1 in list(disaster_voc):
        for word in word_tokenize(train['text'].values[i]):
            if word.lower() == key_1.lower():
                if disaster_voc[key_1] >= 0:
                    score += disaster_voc[key_1]

    score_train.append(score)
    print(score)

我从文本列中获得了鸣叫,如果它在鸣叫中得分为正,则将其加起来得分。总共它会在1-2秒内收集总分,并且对于7000-8000行,它需要花费数小时,数天...

如果您可以找到完整的快速方法或更快的循环建议,请提供帮助。谢谢。

0 个答案:

没有答案