AdsClassifier / app.py
SoooSlooow's picture
upload src
d1ef404
import gradio as gr
import torch
from src.data.preprocessing_utils import DataPreprocessor
MODEL_FILEPATH = 'models/nnet/nnet.pt'
device = 'cuda' if torch.cuda.is_available() else 'cpu'
with open(MODEL_FILEPATH, 'rb') as file:
clf = torch.load(file, map_location=device)
preprocessor = DataPreprocessor()
strings = {
'nationality': 'Есть предпочтения по национальности',
'families': 'Есть предпочтение семьям',
'sex': 'Есть предпочтения по полу'
}
examples = [
'''Просьба посредников не беспокоить. Ищем ОДНУ ДЕВУШКУ.
Сдаётся в аренду на длительный срок светлая и уютная квартира - студия
общей площадью 33м2, находящаяся на 4м этаже 5и этажного теплого кирпичного дома. Современный ремонт!
Рядом в пешей доступности парк Красная Пресня (5 мин)/ Красногвардейские Пруды (2 мин)/
Москва-Сити (10 мин)! Магазины/кофейни/рестораны! 10 мин на машине до любой точки в центре города!
В квартире есть вся необходимая для проживания мебель и техника.
Строго без животных, строго Славян. Просмотр в любое время - ключи на руках.
''',
'''Сдам на длительный срок семейной паре, только с гражданством РФ.
Квартира после косметического ремонта. Без мебели.
Есть кухонная мебель и мебель в ванной комнате.
Бытовая техника для проживания присутствует.
Оплата = аренда + счётчики (свет, вода).
''',
'''В современном доме. Собственник без комиссии.
Закрытая территория. Доступ через охрану.
М Прокшино 10 мин пешком.
Без детей и животных.
Возможно без залога.
Счетчики и интернет включены в стоимость
'''
]
def make_output_string(labels):
output_list = []
for label in strings.keys():
if labels[label]:
output_list.append(strings[label])
if output_list:
output_str = ', '.join(output_list).capitalize()
else:
output_str = 'Нет особенностей'
return output_str
def predict_label(text):
preprocessed_text = preprocessor.preprocess_texts([text])
print(preprocessed_text)
if preprocessed_text == [[]]:
return 'Введите текст объявления!'
labels = clf.predict_labels(preprocessed_text)
output_str = make_output_string(labels)
return output_str
demo = gr.Interface(fn=predict_label, inputs=[gr.Text(label="Текст объявления", lines=5)],
outputs=[gr.Textbox(label="Особенности объявления")],
examples=examples)
demo.launch()