Spaces:
Sleeping
Sleeping
added wiki parser
Browse files- app.py +55 -1
- pages/model_w_clustering.py +55 -1
- requirements.txt +2 -0
app.py
CHANGED
@@ -7,6 +7,7 @@ import requests
|
|
7 |
from PIL import Image
|
8 |
from io import BytesIO
|
9 |
from langchain_community.chat_models.gigachat import GigaChat
|
|
|
10 |
|
11 |
st.title('Рекомендации сериалов по описанию пользователя с помощью асимметричного семантического поиска')
|
12 |
st.divider()
|
@@ -110,7 +111,7 @@ else:
|
|
110 |
|
111 |
st.subheader(
|
112 |
'Генерация краткого содержания сериала с помощью SberGigaChat')
|
113 |
-
name_of_series = st.text_input('Введите название сериала')
|
114 |
gen_button = st.button('Показать краткое содержание')
|
115 |
giga = GigaChat(
|
116 |
credentials='MjA2MGEzNjItZjE0Mi00NWE5LTllMDItMWVjZWRlNDA2ODM0OjNhNzNlZDJmLTY4NWUtNDI1Zi1iZjg4LTkxOWFjMjkxZDg0OA==', verify_ssl_certs=False)
|
@@ -119,3 +120,56 @@ if gen_button:
|
|
119 |
st.write(giga.invoke(
|
120 |
f"Расскажи cюжет сериала {name_of_series}").content)
|
121 |
st.divider()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
from PIL import Image
|
8 |
from io import BytesIO
|
9 |
from langchain_community.chat_models.gigachat import GigaChat
|
10 |
+
from bs4 import BeautifulSoup
|
11 |
|
12 |
st.title('Рекомендации сериалов по описанию пользователя с помощью асимметричного семантического поиска')
|
13 |
st.divider()
|
|
|
111 |
|
112 |
st.subheader(
|
113 |
'Генерация краткого содержания сериала с помощью SberGigaChat')
|
114 |
+
name_of_series = st.text_input('Введите название сериала', key='1')
|
115 |
gen_button = st.button('Показать краткое содержание')
|
116 |
giga = GigaChat(
|
117 |
credentials='MjA2MGEzNjItZjE0Mi00NWE5LTllMDItMWVjZWRlNDA2ODM0OjNhNzNlZDJmLTY4NWUtNDI1Zi1iZjg4LTkxOWFjMjkxZDg0OA==', verify_ssl_certs=False)
|
|
|
120 |
st.write(giga.invoke(
|
121 |
f"Расскажи cюжет сериала {name_of_series}").content)
|
122 |
st.divider()
|
123 |
+
|
124 |
+
st.subheader('Получение краткого содержания из Википедии')
|
125 |
+
|
126 |
+
|
127 |
+
def get_wikipedia_summary(title):
|
128 |
+
|
129 |
+
url = f"https://en.wikipedia.org/api/rest_v1/page/summary/{title}"
|
130 |
+
response = requests.get(url)
|
131 |
+
|
132 |
+
if response.status_code == 200:
|
133 |
+
data = response.json()
|
134 |
+
return data.get('extract', 'Сюжет не найден.')
|
135 |
+
else:
|
136 |
+
return f'Статья не найдена. Статус запроса: {response.status_code}'
|
137 |
+
|
138 |
+
|
139 |
+
def get_english_title_from_myshows(russian_title):
|
140 |
+
|
141 |
+
query = russian_title.replace(" ", "+")
|
142 |
+
url = f'https://myshows.me/search/?q={query}#shows'
|
143 |
+
response = requests.get(url)
|
144 |
+
|
145 |
+
if response.status_code != 200:
|
146 |
+
print(f"Ошибка при запросе, статус запроса: {response.status_code}")
|
147 |
+
return None
|
148 |
+
|
149 |
+
soup = BeautifulSoup(response.text, 'lxml')
|
150 |
+
|
151 |
+
english_title = soup.find(class_='ShowCol-titleOriginal').text
|
152 |
+
|
153 |
+
if english_title:
|
154 |
+
return english_title
|
155 |
+
else:
|
156 |
+
print("Не удалось найти оригинальное название")
|
157 |
+
return None
|
158 |
+
|
159 |
+
|
160 |
+
name_of_series_2 = st.text_input('Введите название сериала', key='2')
|
161 |
+
if 'шерлок' in name_of_series_2.lower():
|
162 |
+
st.error('За Вами выехали', icon="🚨")
|
163 |
+
name_of_series_2 = None
|
164 |
+
lang = st.radio('Выберите язык описания', ['Английский', 'Русский'])
|
165 |
+
wiki_button = st.button('Вывести краткое содержание')
|
166 |
+
if wiki_button:
|
167 |
+
if name_of_series_2:
|
168 |
+
english_title = get_english_title_from_myshows(name_of_series_2)
|
169 |
+
st.write(english_title)
|
170 |
+
if lang == 'Английский':
|
171 |
+
st.write(get_wikipedia_summary(english_title))
|
172 |
+
else:
|
173 |
+
text = get_wikipedia_summary(english_title)
|
174 |
+
with st.spinner('Перевод...'):
|
175 |
+
st.write(giga.invoke(f"Переведи этот текст: {text}").content)
|
pages/model_w_clustering.py
CHANGED
@@ -7,6 +7,7 @@ import requests
|
|
7 |
from PIL import Image
|
8 |
from io import BytesIO
|
9 |
from langchain_community.chat_models.gigachat import GigaChat
|
|
|
10 |
|
11 |
st.title('Рекомендации сериалов по описанию пользователя с помощью симметричного семантического поиска')
|
12 |
st.divider()
|
@@ -126,7 +127,7 @@ else:
|
|
126 |
|
127 |
st.subheader('Генерация краткого содержания сериала с помощью SberGigaChat')
|
128 |
|
129 |
-
name_of_series = st.text_input('Введите название сериала')
|
130 |
gen_button = st.button('Показать краткое содержание')
|
131 |
giga = GigaChat(
|
132 |
credentials='MjA2MGEzNjItZjE0Mi00NWE5LTllMDItMWVjZWRlNDA2ODM0OjNhNzNlZDJmLTY4NWUtNDI1Zi1iZjg4LTkxOWFjMjkxZDg0OA==', verify_ssl_certs=False)
|
@@ -135,3 +136,56 @@ if gen_button:
|
|
135 |
st.write(giga.invoke(
|
136 |
f"Расскажи cюжет сериала {name_of_series}").content)
|
137 |
st.divider()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
from PIL import Image
|
8 |
from io import BytesIO
|
9 |
from langchain_community.chat_models.gigachat import GigaChat
|
10 |
+
from bs4 import BeautifulSoup
|
11 |
|
12 |
st.title('Рекомендации сериалов по описанию пользователя с помощью симметричного семантического поиска')
|
13 |
st.divider()
|
|
|
127 |
|
128 |
st.subheader('Генерация краткого содержания сериала с помощью SberGigaChat')
|
129 |
|
130 |
+
name_of_series = st.text_input('Введите название сериала', key='1')
|
131 |
gen_button = st.button('Показать краткое содержание')
|
132 |
giga = GigaChat(
|
133 |
credentials='MjA2MGEzNjItZjE0Mi00NWE5LTllMDItMWVjZWRlNDA2ODM0OjNhNzNlZDJmLTY4NWUtNDI1Zi1iZjg4LTkxOWFjMjkxZDg0OA==', verify_ssl_certs=False)
|
|
|
136 |
st.write(giga.invoke(
|
137 |
f"Расскажи cюжет сериала {name_of_series}").content)
|
138 |
st.divider()
|
139 |
+
|
140 |
+
st.subheader('Получение краткого содержания из Википедии')
|
141 |
+
|
142 |
+
|
143 |
+
def get_wikipedia_summary(title):
|
144 |
+
|
145 |
+
url = f"https://en.wikipedia.org/api/rest_v1/page/summary/{title}"
|
146 |
+
response = requests.get(url)
|
147 |
+
|
148 |
+
if response.status_code == 200:
|
149 |
+
data = response.json()
|
150 |
+
return data.get('extract', 'Сюжет не найден.')
|
151 |
+
else:
|
152 |
+
return f'Статья не найдена. Статус запроса: {response.status_code}'
|
153 |
+
|
154 |
+
|
155 |
+
def get_english_title_from_myshows(russian_title):
|
156 |
+
|
157 |
+
query = russian_title.replace(" ", "+")
|
158 |
+
url = f'https://myshows.me/search/?q={query}#shows'
|
159 |
+
response = requests.get(url)
|
160 |
+
|
161 |
+
if response.status_code != 200:
|
162 |
+
print(f"Ошибка при запросе, статус запроса: {response.status_code}")
|
163 |
+
return None
|
164 |
+
|
165 |
+
soup = BeautifulSoup(response.text, 'lxml')
|
166 |
+
|
167 |
+
english_title = soup.find(class_='ShowCol-titleOriginal').text
|
168 |
+
|
169 |
+
if english_title:
|
170 |
+
return english_title
|
171 |
+
else:
|
172 |
+
print("Не удалось найти оригинальное название")
|
173 |
+
return None
|
174 |
+
|
175 |
+
|
176 |
+
name_of_series_2 = st.text_input('Введите название сериала', key='2')
|
177 |
+
if 'шерлок' in name_of_series_2.lower():
|
178 |
+
st.error('За Вами выехали', icon="🚨")
|
179 |
+
name_of_series_2 = None
|
180 |
+
lang = st.radio('Выберите язык описания', ['Английский', 'Русский'])
|
181 |
+
wiki_button = st.button('Вывести краткое содержание')
|
182 |
+
if wiki_button:
|
183 |
+
if name_of_series_2:
|
184 |
+
english_title = get_english_title_from_myshows(name_of_series_2)
|
185 |
+
st.write(english_title)
|
186 |
+
if lang == 'Английский':
|
187 |
+
st.write(get_wikipedia_summary(english_title))
|
188 |
+
else:
|
189 |
+
text = get_wikipedia_summary(english_title)
|
190 |
+
with st.spinner('Перевод...'):
|
191 |
+
st.write(giga.invoke(f"Переведи этот текст: {text}").content)
|
requirements.txt
CHANGED
@@ -6,3 +6,5 @@ numpy
|
|
6 |
requests
|
7 |
pillow
|
8 |
gigachain_community
|
|
|
|
|
|
6 |
requests
|
7 |
pillow
|
8 |
gigachain_community
|
9 |
+
bs4
|
10 |
+
lxml
|