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