Emil25 commited on
Commit
58b1fa3
·
verified ·
1 Parent(s): fc11eaf

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +99 -0
  2. requirements.txt +5 -0
app.py ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import numpy as np
4
+ import nltk
5
+ from nltk.tokenize import sent_tokenize, word_tokenize
6
+ from transformers import AutoModelForCausalLM, AutoTokenizer
7
+
8
+ # Setting up the page configuration for Streamlit App
9
+ st.set_page_config(
10
+ page_title="Generate reviews",
11
+ # layout="wide",
12
+ initial_sidebar_state="expanded"
13
+ )
14
+
15
+
16
+ # Загрузка модели и токенизатора
17
+ #@st.cache_data()
18
+ def get_model():
19
+ # Загрузка модели
20
+ model = AutoModelForCausalLM.from_pretrained('model')
21
+ # Загрузка токенизатора
22
+ tokenizer = AutoTokenizer.from_pretrained('model')
23
+ return (model, tokenizer)
24
+
25
+
26
+ # Генерация отзыва
27
+ def gen_review(input_text):
28
+ (model, tokenizer) = get_model()
29
+ input_ids = tokenizer.encode(input_text, return_tensors='pt')
30
+ output = model.generate(
31
+ input_ids,
32
+ max_length=300,
33
+ num_return_sequences=1,
34
+ no_repeat_ngram_size=2,
35
+ do_sample=True,
36
+ top_p=0.95,
37
+ top_k=60,
38
+ temperature=0.9,
39
+ eos_token_id=tokenizer.eos_token_id,
40
+ )
41
+ return tokenizer.decode(output[0], skip_special_tokens=True)
42
+
43
+
44
+ def capitalize_and_punctuate(text):
45
+ # Разделяем текст на предложения
46
+ sentences = sent_tokenize(text)
47
+
48
+ # Проверка последнего предложения
49
+ last_sentence = sentences[-1]
50
+ if not last_sentence.endswith('.'):
51
+ sentences.pop()
52
+
53
+ # Обрабатываем оставшиеся предложения
54
+ corrected_sentences = []
55
+ for sentence in sentences:
56
+ words = word_tokenize(sentence)
57
+
58
+ # Делаем первую букву первого слова заглавной
59
+ if len(words) > 0:
60
+ words[0] = words[0].capitalize()
61
+
62
+ # Собираем обратно предложение
63
+ corrected_sentence = ' '.join(words)
64
+ corrected_sentences.append(corrected_sentence)
65
+
66
+ # Объединяем все предложения в единый текст
67
+ final_text = ' '.join(corrected_sentences)
68
+
69
+ return final_text
70
+
71
+
72
+ # Main function
73
+ def main():
74
+ if 'btn_predict' not in st.session_state:
75
+ st.session_state['btn_predict'] = False
76
+
77
+ # Sidebar
78
+ # st.sidebar.markdown(''' # New York City Taxi Trip Duration''')
79
+ # st.sidebar.image("img/taxi_img.png")
80
+
81
+ category = st.text_input("Категория:", value="Кондитерская")
82
+ rating = st.slider("Рейтинг", 1, 5, 1)
83
+ key_words = st.text_input("Ключевые слова", value="десерт, торт, цена")
84
+
85
+ # Ввод новых параметров
86
+ input_text = f"Категория: {category}; Рейтинг: {rating}; Ключевые слова: {key_words} -> Отзыв:"
87
+
88
+
89
+ st.session_state['btn_predict'] = st.button('Generate')
90
+ if st.session_state['btn_predict']:
91
+ generated_text = gen_review(input_text)
92
+ generated_text = capitalize_and_punctuate(generated_text)
93
+ st.text(generated_text)
94
+
95
+
96
+
97
+ if __name__ == "__main__":
98
+ main()
99
+
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ streamlit
2
+ pandas
3
+ transformers
4
+ torch
5
+ nltk