fruitpicker01 commited on
Commit
d8ca4f5
·
verified ·
1 Parent(s): 2ad5767

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -19
app.py CHANGED
@@ -1183,7 +1183,7 @@ def check_no_word_repetitions(message):
1183
  'и', 'а', 'но', 'или', 'да', 'ни', 'как', 'так',
1184
  'в', 'на', 'под', 'над', 'за', 'к', 'до', 'по', 'из', 'у', 'о', 'про', 'для',
1185
  'не', 'вот', 'это', 'тот', 'тем', 'при', 'чем',
1186
- 'же', 'ли', 'бы', 'то', 'р',
1187
  ])
1188
 
1189
  # Разбиваем текст на слова, удаляя знаки препинания
@@ -1319,7 +1319,7 @@ def check_synonymous_members(message):
1319
 
1320
 
1321
  # 24. Проверка на шокирующие, экстравагантные или кликбейтные фразы
1322
- def check_clickbait_phrases(message, description, benefits):
1323
  message_clean = cut_message(message)
1324
  print()
1325
  print()
@@ -1335,6 +1335,7 @@ def check_clickbait_phrases(message, description, benefits):
1335
  3. Стандартные рекламные призывы к действию, такие как "купите сейчас" или "узнайте больше", не считаются кликбейтом, если они не преувеличивают преимущества или не используют явную манипуляцию эмоциями.
1336
  4. Не считай фразы, используемые в исходном описании продукта, кликбейтными. Исходное описание: "{description}".
1337
  5. Не считай фразы, используемые в преимуществах продукта, кликбейтными. Преимущества: "{benefits}".
 
1338
  Пример ответа:
1339
  {{"decision": false, "explanation": "Текст нейтрален и не содержит кликбейтных фраз."}}
1340
 
@@ -1357,7 +1358,7 @@ def check_clickbait_phrases(message, description, benefits):
1357
 
1358
 
1359
  # 25. Проверка на абстрактные заявления без поддержки фактами
1360
- def check_abstract_claims(message, description, benefits):
1361
  print()
1362
  print("Проверка 25: Проверка на абстрактные заявления без поддержки фактами")
1363
  print()
@@ -1384,8 +1385,9 @@ def check_abstract_claims(message, description, benefits):
1384
  - "Снизьте финансовую нагрузку"
1385
  4. Ищи общие фразы, которые не дают представления о конкретной пользе, такие как "лучшее решение", "высокое качество", "отличный сервис", если они не сопровождаются пояснением о том, почему это так.
1386
  5. Учитывай, что в рекламных сообщениях допустимы эмоциональные и обобщённые фразы, если они достаточно конкретны для понимания аудитории, однако они должны сопровождаться фактами или подробными примерами.
1387
- 6. Не считай фразы, используемые в исходном описании продукта, кликбейтными. Исходное описание: "{description}".
1388
- 7. Не считай фразы, используемые в преимуществах продукта, кликбейтными. Преимущества: "{benefits}".
 
1389
 
1390
  Пример ответа:
1391
  {{"decision": false, "explanation": "Текст не содержит абстрактные утверждения без конкретики."}}
@@ -1474,7 +1476,7 @@ def check_offensive_phrases(message):
1474
  return None
1475
 
1476
  # 28. Проверка на речевые клише, рекламные штампы и канцеляризмы
1477
- def check_cliches_and_bureaucratese(message, description, benefits):
1478
  print()
1479
  print("Проверка 28: Проверка на речевые клише, рекламные штампы и канцеляризмы")
1480
  print()
@@ -1487,8 +1489,9 @@ def check_cliches_and_bureaucratese(message, description, benefits):
1487
  - Информацию о ценах, скидках, акциях или условиях покупки (например, "при покупках от 100 000 рублей в месяц").
1488
  - Описания способов оформления или получения услуг (например, "оформление возможно онлайн или в офисе").
1489
  - Стандартные отраслевые термины и фразы, необходимые для понимания сообщения (например, "премиальная бизнес-карта", "Mastercard Preferred"), но **не** их использование в комбинации с общими словами, как например, "идеальное решение для вашего бизнеса".
1490
- - Фразы, используемые в исходном описании продукта, кликбейтными. Исходное описание: "{description}".
1491
- - Фразы, используемые в преимуществах продукта, кликбейтными. Преимущества: "{benefits}".
 
1492
  **Считай клише или канцеляризмами следующие типы выражений:**
1493
  - Избитые фразы, такие как:
1494
  - "Обеспечьте стабильность и развитие вашего бизнеса"
@@ -1519,7 +1522,7 @@ def check_cliches_and_bureaucratese(message, description, benefits):
1519
  return None
1520
 
1521
  # 29. Проверка на соответствие описанию предложения и ключевому сообщению
1522
- def check_no_contradictions(message, description, key_message):
1523
  print()
1524
  print("Проверка 29: Проверка на отсутствие противоречий с описанием предложения")
1525
  print()
@@ -1527,6 +1530,8 @@ def check_no_contradictions(message, description, key_message):
1527
  prompt = f'''Проверь, не противоречит ли следующее сообщение описанию предложения и ключевому сообщению. Учти, что сообщение является выжимкой из описания предложения и не может содержать столько же информации в том же объеме, сколько описание предложения - важно, чтобы в сообщении не было указано ложных фактов.
1528
  Описание предложения:
1529
  "{description}"
 
 
1530
  Ключевое сообщение:
1531
  "{key_message}"
1532
  Сообщение:
@@ -1643,20 +1648,20 @@ def perform_checks(message, description, key_message, product_name, benefits):
1643
 
1644
  # 3. LLM checks: check_clickbait_phrases, check_abstract_claims, check_cliches_and_bureaucratese
1645
  llm_checks_group1 = [
1646
- ("product_name_consistency", check_product_name_consistency),
1647
  ("no_contradictions", check_no_contradictions),
1648
- ("clickbait_phrases", check_clickbait_phrases),
1649
  ("abstract_claims", check_abstract_claims),
1650
  ("cliches_and_bureaucratese", check_cliches_and_bureaucratese),
1651
- ("contains_key_message", check_contains_key_message)
 
 
 
1652
  ]
1653
 
1654
  # 4. Remaining LLM checks
1655
  llm_checks_group2 = [
1656
- ("disconnected_sentences", check_disconnected_sentences),
1657
- ("synonymous_members", check_synonymous_members),
1658
- ("specialized_terms", check_specialized_terms),
1659
  ("offensive_phrases", check_offensive_phrases),
 
 
1660
  ]
1661
 
1662
  # Perform morphological checks
@@ -1669,17 +1674,17 @@ def perform_checks(message, description, key_message, product_name, benefits):
1669
  # Perform LLM checks group 1
1670
  for check_name, check_func in llm_checks_group1:
1671
  if check_name == "no_contradictions":
1672
- result = safe_check(check_func, message, description, key_message)
1673
  elif check_name == "contains_key_message":
1674
  result = safe_check(check_func, message, key_message)
1675
  elif check_name == "product_name_consistency":
1676
  result = safe_check(check_func, message, product_name)
1677
  elif check_name == "clickbait_phrases":
1678
- result = safe_check(check_func, message, description, benefits)
1679
  elif check_name == "abstract_claims":
1680
- result = safe_check(check_func, message, description, benefits)
1681
  elif check_name == "cliches_and_bureaucratese":
1682
- result = safe_check(check_func, message, description, benefits)
1683
  else:
1684
  result = safe_check(check_func, message)
1685
  checks[check_name] = result
 
1183
  'и', 'а', 'но', 'или', 'да', 'ни', 'как', 'так',
1184
  'в', 'на', 'под', 'над', 'за', 'к', 'до', 'по', 'из', 'у', 'о', 'про', 'для',
1185
  'не', 'вот', 'это', 'тот', 'тем', 'при', 'чем',
1186
+ 'же', 'ли', 'бы', 'то', 'р', 'от'
1187
  ])
1188
 
1189
  # Разбиваем текст на слова, удаляя знаки препинания
 
1319
 
1320
 
1321
  # 24. Проверка на шокирующие, экстравагантные или кликбейтные фразы
1322
+ def check_clickbait_phrases(message, description, benefits, key_message):
1323
  message_clean = cut_message(message)
1324
  print()
1325
  print()
 
1335
  3. Стандартные рекламные призывы к действию, такие как "купите сейчас" или "узнайте больше", не считаются кликбейтом, если они не преувеличивают преимущества или не используют явную манипуляцию эмоциями.
1336
  4. Не считай фразы, используемые в исходном описании продукта, кликбейтными. Исходное описание: "{description}".
1337
  5. Не считай фразы, используемые в преимуществах продукта, кликбейтными. Преимущества: "{benefits}".
1338
+ 6. Не считай фразы, используемые в ключевом сообщении, кликбейтными. Ключевое сообщение: "{key_message}".
1339
  Пример ответа:
1340
  {{"decision": false, "explanation": "Текст нейтрален и не содержит кликбейтных фраз."}}
1341
 
 
1358
 
1359
 
1360
  # 25. Проверка на абстрактные заявления без поддержки фактами
1361
+ def check_abstract_claims(message, description, benefits, key_message):
1362
  print()
1363
  print("Проверка 25: Проверка на абстрактные заявления без поддержки фактами")
1364
  print()
 
1385
  - "Снизьте финансовую нагрузку"
1386
  4. Ищи общие фразы, которые не дают представления о конкретной пользе, такие как "лучшее решение", "высокое качество", "отличный сервис", если они не сопровождаются пояснением о том, почему это так.
1387
  5. Учитывай, что в рекламных сообщениях допустимы эмоциональные и обобщённые фразы, если они достаточно конкретны для понимания аудитории, однако они должны сопровождаться фактами или подробными примерами.
1388
+ 6. Не считай фразы, используемые в исходном описании продукта, абстрактными. Исходное описание: "{description}".
1389
+ 7. Не считай фразы, используемые в преимуществах продукта, абстрактными. Преимущества: "{benefits}".
1390
+ 8. Не считай фразы, используемые в ключевом сообщении, абстрактными. Ключевое сообщение: "{key_message}".
1391
 
1392
  Пример ответа:
1393
  {{"decision": false, "explanation": "Текст не содержит абстрактные утверждения без конкретики."}}
 
1476
  return None
1477
 
1478
  # 28. Проверка на речевые клише, рекламные штампы и канцеляризмы
1479
+ def check_cliches_and_bureaucratese(message, description, benefits, key_message):
1480
  print()
1481
  print("Проверка 28: Проверка на речевые клише, рекламные штампы и канцеляризмы")
1482
  print()
 
1489
  - Информацию о ценах, скидках, акциях или условиях покупки (например, "при покупках от 100 000 рублей в месяц").
1490
  - Описания способов оформления или получения услуг (например, "оформление возможно онлайн или в офисе").
1491
  - Стандартные отраслевые термины и фразы, необходимые для понимания сообщения (например, "премиальная бизнес-карта", "Mastercard Preferred"), но **не** их использование в комбинации с общими словами, как например, "идеальное решение для вашего бизнеса".
1492
+ - Не считай фразы, используемые в исходном описании продукта, как клише. Исходное описание: "{description}".
1493
+ - Не считай фразы, используемые в преимуществах продукта, как клише. Преимущества: "{benefits}".
1494
+ - Не считай фразы, используемые в ключевом сообщении, как клише. Ключевое сообщение: "{key_message}".
1495
  **Считай клише или канцеляризмами следующие типы выражений:**
1496
  - Избитые фразы, такие как:
1497
  - "Обеспечьте стабильность и развитие вашего бизнеса"
 
1522
  return None
1523
 
1524
  # 29. Проверка на соответствие описанию предложения и ключевому сообщению
1525
+ def check_no_contradictions(message, description, benefits, key_message):
1526
  print()
1527
  print("Проверка 29: Проверка на отсутствие противоречий с описанием предложения")
1528
  print()
 
1530
  prompt = f'''Проверь, не противоречит ли следующее сообщение описанию предложения и ключевому сообщению. Учти, что сообщение является выжимкой из описания предложения и не может содержать столько же информации в том же объеме, сколько описание предложения - важно, чтобы в сообщении не было указано ложных фактов.
1531
  Описание предложения:
1532
  "{description}"
1533
+ Преимушества:
1534
+ "{benefits}"
1535
  Ключевое сообщение:
1536
  "{key_message}"
1537
  Сообщение:
 
1648
 
1649
  # 3. LLM checks: check_clickbait_phrases, check_abstract_claims, check_cliches_and_bureaucratese
1650
  llm_checks_group1 = [
 
1651
  ("no_contradictions", check_no_contradictions),
 
1652
  ("abstract_claims", check_abstract_claims),
1653
  ("cliches_and_bureaucratese", check_cliches_and_bureaucratese),
1654
+ ("clickbait_phrases", check_clickbait_phrases),
1655
+ ("contains_key_message", check_contains_key_message),
1656
+ ("synonymous_members", check_synonymous_members),
1657
+ ("product_name_consistency", check_product_name_consistency)
1658
  ]
1659
 
1660
  # 4. Remaining LLM checks
1661
  llm_checks_group2 = [
 
 
 
1662
  ("offensive_phrases", check_offensive_phrases),
1663
+ ("disconnected_sentences", check_disconnected_sentences),
1664
+ ("specialized_terms", check_specialized_terms)
1665
  ]
1666
 
1667
  # Perform morphological checks
 
1674
  # Perform LLM checks group 1
1675
  for check_name, check_func in llm_checks_group1:
1676
  if check_name == "no_contradictions":
1677
+ result = safe_check(check_func, message, description, benefits, key_message)
1678
  elif check_name == "contains_key_message":
1679
  result = safe_check(check_func, message, key_message)
1680
  elif check_name == "product_name_consistency":
1681
  result = safe_check(check_func, message, product_name)
1682
  elif check_name == "clickbait_phrases":
1683
+ result = safe_check(check_func, message, description, benefits, key_message)
1684
  elif check_name == "abstract_claims":
1685
+ result = safe_check(check_func, message, description, benefits, key_message)
1686
  elif check_name == "cliches_and_bureaucratese":
1687
+ result = safe_check(check_func, message, description, benefits, key_message)
1688
  else:
1689
  result = safe_check(check_func, message)
1690
  checks[check_name] = result