DanilO0o commited on
Commit
5ca69bb
·
1 Parent(s): 09c26e9

added wiki parser

Browse files
Files changed (3) hide show
  1. app.py +55 -1
  2. pages/model_w_clustering.py +55 -1
  3. 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