Spaces:
Sleeping
Sleeping
fruitpicker01
commited on
Update app.py
Browse files
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. Не считай фразы, используемые в исходном описании продукта,
|
1388 |
-
7. Не считай фразы, используемые в преимуществах продукта,
|
|
|
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 |
-
-
|
1491 |
-
-
|
|
|
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 |
-
("
|
|
|
|
|
|
|
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
|