Update app.py
Browse files
app.py
CHANGED
@@ -1,71 +1,63 @@
|
|
1 |
import gradio as gr
|
2 |
import re
|
3 |
|
4 |
-
# Функция для
|
5 |
-
def
|
6 |
-
#
|
7 |
-
|
8 |
|
9 |
-
#
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*likes)?\s*$"
|
18 |
-
elif pattern == "like":
|
19 |
-
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*like)?\s*$"
|
20 |
-
elif pattern == "like +":
|
21 |
-
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*like)?\s*\+\s*$"
|
22 |
-
elif pattern == "Плюс":
|
23 |
-
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*)\s*\+\s*$"
|
24 |
-
elif pattern == "Минус":
|
25 |
-
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*)\s*-\s*$"
|
26 |
-
elif pattern == "Равно":
|
27 |
-
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*)\s*=\s*$"
|
28 |
-
elif pattern == "Точка":
|
29 |
-
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*)\s*\.\s*$"
|
30 |
-
elif pattern == "Запятая":
|
31 |
-
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*)\s*\,\s*$"
|
32 |
-
elif pattern == "Точка с запятой":
|
33 |
-
pattern = r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*)\s*\;\s*$"
|
34 |
-
|
35 |
-
# Проверка пустого ввода
|
36 |
-
if not input_text.strip():
|
37 |
-
return "Пожалуйста, введите текст."
|
38 |
-
|
39 |
-
# Поиск всех совпадений в тексте
|
40 |
-
matches = re.findall(pattern, input_text)
|
41 |
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
|
54 |
-
|
55 |
-
output = []
|
56 |
-
for i, match in enumerate(matches, 1):
|
57 |
-
username, text, likes = match
|
58 |
-
output.append(f'{i}. Пользователь: "{username}", Текст: "{text.strip()}", Лайков: {likes}')
|
59 |
|
60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
|
62 |
-
#
|
63 |
iface = gr.Interface(
|
64 |
-
fn=
|
65 |
-
inputs=
|
66 |
-
|
67 |
-
|
68 |
-
|
|
|
69 |
)
|
70 |
|
71 |
# Запуск интерфейса
|
|
|
1 |
import gradio as gr
|
2 |
import re
|
3 |
|
4 |
+
# Функция для извлечения комментариев
|
5 |
+
def extract_comments(input_text):
|
6 |
+
# Шаблон для разделения комментариев по ключевым словам
|
7 |
+
comment_blocks = re.split(r'Ответить|Действия с комментарием|Скрыть ответы|Показать перевод', input_text)
|
8 |
|
9 |
+
# Паттерны для извлечения данных
|
10 |
+
patterns = [
|
11 |
+
r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\sНравится:\s*(\d+))?\s*$", # Нравится
|
12 |
+
r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\sЛайков:\s*(\d+))?\s*$", # Лайков
|
13 |
+
r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\sLike:\s*(\d+))?\s*$", # Like
|
14 |
+
r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*likes)?\s*$", # likes
|
15 |
+
r"([a-zA-Z0-9_@]+)\s*(.*?)(?:\s(\d+)\s*like)?\s*$", # like
|
16 |
+
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
|
18 |
+
results = []
|
19 |
+
|
20 |
+
# Для каждого блока текста
|
21 |
+
for block in comment_blocks:
|
22 |
+
block = block.strip() # Убираем лишние пробелы и пустые строки
|
23 |
+
if block: # Если блок не пустой
|
24 |
+
for pattern in patterns:
|
25 |
+
match = re.search(pattern, block)
|
26 |
+
if match:
|
27 |
+
# Извлекаем данные
|
28 |
+
username = match.group(1)
|
29 |
+
text = match.group(2).strip()
|
30 |
+
likes = int(match.group(3)) if match.group(3) else 0
|
31 |
+
|
32 |
+
# Добавляем в результаты
|
33 |
+
results.append({"Пользователь": username, "Текст": text, "Лайков": likes})
|
34 |
+
break # Переходим к следующему блоку, как только нашли совпадение
|
35 |
|
36 |
+
return results
|
|
|
|
|
|
|
|
|
37 |
|
38 |
+
# Функция для отображения результатов в удобном виде
|
39 |
+
def display_results(input_text):
|
40 |
+
results = extract_comments(input_text)
|
41 |
+
|
42 |
+
if not results:
|
43 |
+
return "Нет комментариев для отображения."
|
44 |
+
else:
|
45 |
+
display_text = ""
|
46 |
+
for result in results:
|
47 |
+
display_text += f"Пользователь: {result['Пользователь']}\n"
|
48 |
+
display_text += f"Текст: {result['Текст']}\n"
|
49 |
+
display_text += f"Лайков: {result['Лайков']}\n"
|
50 |
+
display_text += "-" * 50 + "\n"
|
51 |
+
return display_text
|
52 |
|
53 |
+
# Создание интерфейса с Gradio
|
54 |
iface = gr.Interface(
|
55 |
+
fn=display_results, # Функция, которая будет вызываться
|
56 |
+
inputs="text", # Текстовый ввод для пользователей
|
57 |
+
outputs="text", # Вывод результатов в текстовом формате
|
58 |
+
title="Анализ комментариев", # Название интерфейса
|
59 |
+
description="Введите текст комментариев, и система автоматически разделит их, извлекая информацию о пользователях и лайках.",
|
60 |
+
theme="default" # Тема оформления
|
61 |
)
|
62 |
|
63 |
# Запуск интерфейса
|