From d88b07f61381c7ec93ff562ef6627a4bbde3c61e Mon Sep 17 00:00:00 2001 From: stud203799 Date: Wed, 22 Apr 2026 20:50:10 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B:=20=D1=81=D0=BB=D0=BE=D0=B2=D0=B0=D1=80=D1=8C=20?= =?UTF-8?q?=D1=81=20=D0=BD=D0=B0=D0=B1=D0=BE=D1=80=D0=BE=D0=BC=20=D1=81?= =?UTF-8?q?=D0=BB=D0=BE=D0=B2=20=D0=BE=20=D0=BA=D0=B0=D1=87=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=B2=D0=B5,=20=D0=B4=D0=BE=D1=81=D1=82=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D0=B5,=20=D1=86=D0=B5=D0=BD=D0=B5;=20=D1=81=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D0=BE=D0=BA=20=D1=81=D0=BF=D0=B0=D0=BC-=D1=81=D0=BB?= =?UTF-8?q?=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 70 +++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 53 insertions(+), 17 deletions(-) diff --git a/main.py b/main.py index 3c9b84c..5fc600d 100644 --- a/main.py +++ b/main.py @@ -1,10 +1,8 @@ # Система анализа и модерации отзывов на товары (E-Commerce Review Engine) def clean_text(text: str): - text = "1;5;?П:::р?И,,вЕт! ДуРг." black_list = ",?:" if text[3] == ';': - start_text = text[:5] text = text[4:] for i in range(len(black_list)): text = text.replace(black_list[i], '') @@ -17,66 +15,104 @@ def clean_text(text: str): def extract_keywords(text: str, keywords_dict: dict): - return list def calculate_sentiment_score(text: str, positive_words: set, negative_words: set): - return float def validate_rating(rating: int): - return bool def is_spam(text: str, spam_indicators: list): - return bool def enrich_review(review: dict, keywords_dict: dict, positive_words: set, negative_words: set): - return dict def filter_valid_reviews(reviews: list): - return list def calculate_average_rating_by_topic(reviews: list): - return dict def detect_anomalies(reviews: list, sentiment_threshold: float = 0.5): - return list def generate_summary_report(valid_reviews: list, all_reviews_count: int, anomalies: list): - return dict def main(): + positive_words = {"отличное качество", "высокое качество", "хорошее качество", + "качественный", "добротный", "надежный", "прочный", "долговечный", + "превосходный", "безупречный", "аккуратно сделан", "хорошая сборка", + "качественные материалы", "ничего не люфтит", "сидит плотно", + "отлично работает", "супер", "огонь", "класс", "достойный", + "не уступает бренду", "сделан на совесть"} + negative_words = {"плохое качество", "низкое качество", "дешевый", "хлипкий", + "непрочный", "недолговечный", "брак", "некачественный", "сыпется", + "ломается", "разваливается", "плохая сборка", "криво сделано", + "зазоры", "люфтит", "скрипит", "хрупкий", "одноразовый", "дешевка", + "не соответствует заявленному", "отвратительное качество", + "ужасное качество", "худшее качество", "мусор", "шлак", "не годится"} + spam_markers = [ + "заработок в интернете", "легкие деньги", "пассивный доход", + "быстрый заработок", "миллион за неделю", "лотерея", + "вы выиграли приз", "ваш приз ждет", "выигрыш", + "без вложений", "с гарантией возврата", "инвестиции", + "как заработать", "деньги просто так", "криптовалюта без риска", + "финансовая пирамида", "реферальная программа", "партнерская программа" + ] + delivery_words = [ + "быстрая доставка", "бесплатная доставка", "доставка вовремя", "курьер вежливый", + "упаковано хорошо", "доставка день в день", "отслеживание", "пришло целым", + "забрал сам", "пункт выдачи рядом", "доставили быстро", "соблюдены сроки", + "уведомления о статусе", "sms оповещение", "забрать сегодня", "долгая доставка", + "опоздали", "повреждена упаковка", "не дозвониться", "потеряли заказ", + "не пришло уведомление", "неправильный адрес", "курьер грубый", "пункт выдачи далеко", + "ждал неделю", "разбито при доставке", "не привезли", "потеряли посылку", + "не отслеживается", "перепутали заказ", "плохая упаковка", "доставка платная", + "дорогая доставка", "не привезли вовремя", "вернули на склад" + ] + price_words = [ + "низкая цена", "доступная цена", "дешево", "бюджетный", + "хорошая цена", "адекватная цена", "цена качество", "скидка", + "распродажа", "акция", "выгодно", "недорого", + "дешевле чем везде", "цена огонь", "цена порадовала", "экономия", + "дешево и сердито", "спеццена", "цена кусается", "дорого", + "высокая цена", "завышенная цена", "переплата", "цена не оправдана", + "дороговато", "цены конские", "цена завышена", "не по карману", + "золотое", "слишком дорого", "цена не соответствует качеству", "дороже чем у других", + "наценка", "обдираловка", "цена выросла", "денег не стоит" + ] + keywords_dict: { + "quality": [positive_words + negative_words], + "delivery": [delivery_words], + "price": [price_words] + } print("\n======== Введите название файла с форматом .csv или используйте по умолчанию (Enter) ========") name_report = input() if not name_report: name_report = "data.csv" - if name_report[-4:] == ".csv": #проверка на правильность ввода имени файла + if name_report[-4:] == ".csv": #проверка на правильность ввода имени файла try: - report = open(name_report, 'r+', encoding='cp1251') + report = open(name_report, 'r+', encoding='cp1251') #открытие файла except: print("Файл отсутствует") else: - print("Содержимое файла:") #запись файла в список + print("Содержимое файла:") #запись файла в список dec_report = list() for i in report: - i = i.replace("\n", '') #убираем отступы в концы строки - dec_report.append(i) + i = i.replace("\n", '') #убираем отступы в концы строки + dec_report.append(clean_text(i)) report.close() print("id rating text") for i in dec_report: @@ -87,4 +123,4 @@ def main(): if __name__ == "__main__": - main() \ No newline at end of file + main()