Быстрее гнездится для петель - PullRequest
1 голос
/ 08 января 2020

В соревнованиях по каргле я разработал новый метод оценки. Однако для этого нужно сопоставить несколько слов в тексте и несколько слов из словаря. Для создания 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_

. Затем я вычитал те же слова из другого с некоторым l oop. Это было быстро. Однако эта строка кода очень медленная. Это код вычитания:

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 строк это занимает часы, дни ...

Если вы можете найти общий быстрый способ или более быстрый l oop совет, пожалуйста, помогите. Спасибо.

...