добавлены: словарь с набором слов о качестве, доставке, цене; список спам-слов
This commit is contained in:
parent
dd548f2af2
commit
d88b07f613
70
main.py
70
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()
|
||||
main()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user