Ошибка памяти: наиболее часто встречающееся слово с использованием функции nltk или split - PullRequest
0 голосов
/ 21 января 2020

Я нахожу наиболее часто используемые слова из списка отзывов. Я использую экземпляр 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 и нашел следующий вывод:

Split function is using 50% of ram of all code

Должен ли я увеличить оперативную память по серверу? или есть лучший способ удовлетворить мою потребность. del variable помогает мне уменьшить использование оперативной памяти, но это не очень эффективно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...