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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +103 -99
app.py CHANGED
@@ -1,99 +1,103 @@
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
-
 
 
 
 
 
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
+ nltk.download('punkt')
46
+ # Разделяем текст на предложения
47
+ sentences = sent_tokenize(text)
48
+
49
+ # Проверка последнего предложения
50
+ last_sentence = sentences[-1]
51
+ if not last_sentence.endswith('.'):
52
+ sentences.pop()
53
+
54
+ # Обрабатываем оставшиеся предложения
55
+ corrected_sentences = []
56
+ for sentence in sentences:
57
+ words = word_tokenize(sentence)
58
+
59
+ # Делаем первую букву первого слова заглавной
60
+ if len(words) > 0:
61
+ words[0] = words[0].capitalize()
62
+
63
+ # Собираем обратно предложение
64
+ corrected_sentence = ' '.join(words)
65
+ corrected_sentences.append(corrected_sentence)
66
+
67
+ # Объединяем все предложения в единый текст
68
+ final_text = ' '.join(corrected_sentences)
69
+
70
+ return final_text
71
+
72
+
73
+ # Main function
74
+ def main():
75
+ if 'btn_predict' not in st.session_state:
76
+ st.session_state['btn_predict'] = False
77
+
78
+ # Sidebar
79
+ # st.sidebar.markdown(''' # New York City Taxi Trip Duration''')
80
+ # st.sidebar.image("img/taxi_img.png")
81
+
82
+ category = st.text_input("Категория:", value="Кондитерская")
83
+ rating = st.slider("Рейтинг", 1, 5, 1)
84
+ key_words = st.text_input("Ключевые слова", value="десерт, торт, цена")
85
+
86
+ # Ввод новых параметров
87
+ input_text = f"Категория: {category}; Рейтинг: {rating}; Ключевые слова: {key_words} -> Отзыв:"
88
+
89
+
90
+ st.session_state['btn_predict'] = st.button('Generate')
91
+ if st.session_state['btn_predict']:
92
+ generated_text = gen_review(input_text)
93
+ with st.spinner('Wait for it...'):
94
+ generated_text = capitalize_and_punctuate(generated_text)
95
+ st.text(generated_text)
96
+ st.success("Done!")
97
+
98
+
99
+
100
+
101
+ if __name__ == "__main__":
102
+ main()
103
+