hy / app.py
boompack's picture
Update app.py
433e6be verified
raw
history blame
3.77 kB
import gradio as gr
import re
# Функция для извлечения комментариев
def extract_comments(input_text, expected_count):
# Шаблон для разделения комментариев по ключевым словам
comment_blocks = re.split(r'Ответить|Действия с комментарием|Скрыть ответы|Показать перевод', input_text)
# Паттерны для извлечения данных
patterns = [
r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\sНравится:\s*(\d+))?\s*$", # Нравится
r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\sЛайков:\s*(\d+))?\s*$", # Лайков
r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\sLike:\s*(\d+))?\s*$", # Like
r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*likes)?\s*$", # likes
r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*like)?\s*$", # like
]
results = []
# Для каждого блока текста
for block in comment_blocks:
block = block.strip() # Убираем лишние пробелы и пустые строки
if block: # Если блок не пустой
for pattern in patterns:
match = re.search(pattern, block)
if match:
# Извлекаем данные
username = match.group(1)
text = match.group(2).strip()
likes = int(match.group(3)) if match.group(3) else 0
# Добавляем в результаты
results.append({"Пользователь": username, "Текст": text, "Лайков": likes})
break # Переходим к следующему блоку, как только нашли совпадение
# Проверяем, совпадает ли количество комментариев с ожидаемым
if len(results) == expected_count:
display_text = ""
for result in results:
display_text += f"Пользователь: {result['Пользователь']}\n"
display_text += f"Текст: {result['Текст']}\n"
display_text += f"Лайков: {result['Лайков']}\n"
display_text += "-" * 50 + "\n"
return display_text
else:
return f"Ошибка! Количество найденных комментариев: {len(results)}, ожидалось: {expected_count}."
# Функция для отображения результатов в удобном виде
def display_results(input_text, expected_count):
return extract_comments(input_text, expected_count)
# Создание интерфейса с Gradio
iface = gr.Interface(
fn=display_results, # Функция, которая будет вызываться
inputs=[
gr.Textbox(label="Введите текст комментариев", lines=10), # Текстовый ввод для комментариев
gr.Number(label="Ожидаемое количество комментариев", value=94) # Ввод для количества комментариев
],
outputs="text", # Вывод результатов в текстовом формате
title="Анализ комментариев", # Название интерфейса
description="Введите текст комментариев и ожидаемое количество, чтобы проверить, совпадает ли результат с ожиданиями.",
theme="default" # Тема оформления
)
# Запуск интерфейса
iface.launch()