Я нахожу наиболее часто используемые слова из списка отзывов. Я использую экземпляр Amazon ec2, который имел 1 ГБ оперативной памяти. Я использую Flask, SqlAlchemy и NLTK для него. Вот мой код, который правильно работает на моем p c (8 ГБ ОЗУ), но не работает на сервере.
wordCloudQry = Rating.query.with_entities(Rating.review_content).filter(*filters)
reviews = wordCloudQry.all()
reviewinstr = ' '.join(str(elem) for elem in reviews)
del reviews
del wordCloudQry
soup = BeautifulSoup(reviewinstr, 'html.parser')
del reviewinstr
regex = re.compile('[^a-zA-Z ]')
reviewinstr = regex.sub('', soup.text.lower())
del soup
reviewinstr = reviewinstr.replace('-','')
reviewinstr = reviewinstr.replace('.','')
reviewinstr = reviewinstr.replace('?','')
reviewinstr = reviewinstr.replace('!','')
reviewinstr = reviewinstr.replace(',','')
stop_words = stopwords.words('english')
stop_words.append('would')
split_it = reviewinstr.split()
del reviewinstr
split_it = [word for word in split_it if word not in stop_words]
counter = Counter(split_it)
most_occur = counter.most_common(50)
most_occur = [{"text":word[0],"weight":word[1]} for word in most_occur]
Это дает ошибку памяти reviewinstr = regex.sub('', soup.text.lower())
. del variable
не был первым там, я поставил его после ошибки. Я использовал memory_profiler и нашел следующий вывод:
Должен ли я увеличить оперативную память по серверу? или есть лучший способ удовлетворить мою потребность. del variable
помогает мне уменьшить использование оперативной памяти, но это не очень эффективно.