Spaces:
Running
Running
Veronika Belova
commited on
Commit
•
49b952d
1
Parent(s):
6acfdca
Добавлены правила отслеживания Git LFS для файлов .xlsx
Browse files
.gitattributes
CHANGED
@@ -35,3 +35,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
final_data_wb.xlsx filter=lfs diff=lfs merge=lfs -text
|
37 |
data/final_data_ozon.xlsx filter=lfs diff=lfs merge=lfs -text
|
|
|
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
final_data_wb.xlsx filter=lfs diff=lfs merge=lfs -text
|
37 |
data/final_data_ozon.xlsx filter=lfs diff=lfs merge=lfs -text
|
38 |
+
*.xlsx filter=lfs diff=lfs merge=lfs -text
|
app.py
CHANGED
@@ -23,14 +23,16 @@ def main():
|
|
23 |
|
24 |
db = initialize()
|
25 |
|
26 |
-
data_files = ['data/
|
27 |
data = load_data(data_files)
|
28 |
|
|
|
29 |
if 'original_review' not in st.session_state:
|
30 |
st.session_state.original_review = ''
|
31 |
if 'user_name' not in st.session_state:
|
32 |
st.session_state.user_name = ''
|
33 |
-
|
|
|
34 |
if 'model_a' not in st.session_state:
|
35 |
st.session_state.model_a = ''
|
36 |
if 'model_b' not in st.session_state:
|
@@ -41,6 +43,8 @@ def main():
|
|
41 |
st.session_state.rewrite_b = ''
|
42 |
if 'vote_submitted' not in st.session_state:
|
43 |
st.session_state.vote_submitted = False
|
|
|
|
|
44 |
|
45 |
instruction_gpt = read_prompt('prompts/gpt_prompt.txt')
|
46 |
instruction_gemma = read_prompt('prompts/gemma_prompt.txt')
|
@@ -49,33 +53,40 @@ def main():
|
|
49 |
random_row = get_random_review(data)
|
50 |
st.session_state.original_review = random_row['body']
|
51 |
st.session_state.user_name = random_row['user_name']
|
|
|
|
|
52 |
if pd.isna(st.session_state.user_name) or st.session_state.user_name.strip() == '':
|
53 |
st.session_state.user_name = 'Пользователь'
|
|
|
|
|
|
|
|
|
54 |
|
55 |
selected_models = random.sample(models, 2)
|
56 |
st.session_state.model_a = selected_models[0]
|
57 |
st.session_state.model_b = selected_models[1]
|
|
|
|
|
58 |
st.session_state.rewrite_a = ''
|
59 |
st.session_state.rewrite_b = ''
|
60 |
st.session_state.vote_submitted = False
|
61 |
|
62 |
if st.session_state.original_review:
|
63 |
-
st.markdown(f"<h2>📝 Оригинальный отзыв от {st.session_state.user_name}:</h2>", unsafe_allow_html=True)
|
64 |
st.markdown(
|
65 |
f"<div class='original-review'>{st.session_state.original_review}</div>",
|
66 |
unsafe_allow_html=True
|
67 |
)
|
68 |
|
69 |
-
|
70 |
if st.button("⚔️ Сгенерировать рерайты"):
|
71 |
with st.spinner("Генерация рерайтов..."):
|
72 |
|
73 |
def generate_rewrite_for_model(model_name, text):
|
74 |
if "gemma" in model_name.lower():
|
75 |
-
instruction = instruction_gemma.format(user_text=text)
|
76 |
return get_gemma_response(model_name, instruction)
|
77 |
else:
|
78 |
-
instruction = instruction_gpt.format(user_name=st.session_state.user_name)
|
79 |
return generate_rewrite(model_name, instruction, text)
|
80 |
|
81 |
st.session_state.rewrite_a = generate_rewrite_for_model(
|
@@ -89,7 +100,7 @@ def main():
|
|
89 |
<p>Выбери рерайт, который соответствует данным критериям:</p>
|
90 |
<ol>
|
91 |
<li>Сохранен смысл оригинального отзыва, но написан другими словами.</li>
|
92 |
-
<li>Рерайт
|
93 |
<li>Написан повседневным языком и не похож на сгенерированный.</li>
|
94 |
<li>Имеет структуру <strong>Отзыв</strong>, <strong>Преимущества</strong>, <strong>Недостатки</strong>.</li>
|
95 |
</ol>
|
@@ -120,6 +131,37 @@ def main():
|
|
120 |
st.success("Вы выбрали Model B")
|
121 |
save_vote(db, 'right', models)
|
122 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
123 |
if __name__ == '__main__':
|
124 |
main()
|
125 |
|
@@ -131,3 +173,4 @@ if __name__ == '__main__':
|
|
131 |
|
132 |
|
133 |
|
|
|
|
23 |
|
24 |
db = initialize()
|
25 |
|
26 |
+
data_files = ['data/final_data_ozon_with_names.xlsx', 'data/final_data_wb_with_names.xlsx']
|
27 |
data = load_data(data_files)
|
28 |
|
29 |
+
# Initialize session state variables
|
30 |
if 'original_review' not in st.session_state:
|
31 |
st.session_state.original_review = ''
|
32 |
if 'user_name' not in st.session_state:
|
33 |
st.session_state.user_name = ''
|
34 |
+
if 'product_name' not in st.session_state:
|
35 |
+
st.session_state.product_name = '' # New variable for product name
|
36 |
if 'model_a' not in st.session_state:
|
37 |
st.session_state.model_a = ''
|
38 |
if 'model_b' not in st.session_state:
|
|
|
43 |
st.session_state.rewrite_b = ''
|
44 |
if 'vote_submitted' not in st.session_state:
|
45 |
st.session_state.vote_submitted = False
|
46 |
+
if 'used_models' not in st.session_state:
|
47 |
+
st.session_state.used_models = []
|
48 |
|
49 |
instruction_gpt = read_prompt('prompts/gpt_prompt.txt')
|
50 |
instruction_gemma = read_prompt('prompts/gemma_prompt.txt')
|
|
|
53 |
random_row = get_random_review(data)
|
54 |
st.session_state.original_review = random_row['body']
|
55 |
st.session_state.user_name = random_row['user_name']
|
56 |
+
st.session_state.product_name = random_row['names'] # Get the product name
|
57 |
+
|
58 |
if pd.isna(st.session_state.user_name) or st.session_state.user_name.strip() == '':
|
59 |
st.session_state.user_name = 'Пользователь'
|
60 |
+
if pd.isna(st.session_state.product_name) or st.session_state.product_name.strip() == '':
|
61 |
+
st.session_state.product_name = 'товар' # Default value if name is missing
|
62 |
+
|
63 |
+
st.session_state.used_models = []
|
64 |
|
65 |
selected_models = random.sample(models, 2)
|
66 |
st.session_state.model_a = selected_models[0]
|
67 |
st.session_state.model_b = selected_models[1]
|
68 |
+
st.session_state.used_models.extend(selected_models)
|
69 |
+
|
70 |
st.session_state.rewrite_a = ''
|
71 |
st.session_state.rewrite_b = ''
|
72 |
st.session_state.vote_submitted = False
|
73 |
|
74 |
if st.session_state.original_review:
|
75 |
+
st.markdown(f"<h2>📝 Оригинальный отзыв от {st.session_state.user_name} о {st.session_state.product_name}:</h2>", unsafe_allow_html=True)
|
76 |
st.markdown(
|
77 |
f"<div class='original-review'>{st.session_state.original_review}</div>",
|
78 |
unsafe_allow_html=True
|
79 |
)
|
80 |
|
|
|
81 |
if st.button("⚔️ Сгенерировать рерайты"):
|
82 |
with st.spinner("Генерация рерайтов..."):
|
83 |
|
84 |
def generate_rewrite_for_model(model_name, text):
|
85 |
if "gemma" in model_name.lower():
|
86 |
+
instruction = instruction_gemma.format(user_text=text, product_name=st.session_state.product_name)
|
87 |
return get_gemma_response(model_name, instruction)
|
88 |
else:
|
89 |
+
instruction = instruction_gpt.format(user_name=st.session_state.user_name, product_name=st.session_state.product_name)
|
90 |
return generate_rewrite(model_name, instruction, text)
|
91 |
|
92 |
st.session_state.rewrite_a = generate_rewrite_for_model(
|
|
|
100 |
<p>Выбери рерайт, который соответствует данным критериям:</p>
|
101 |
<ol>
|
102 |
<li>Сохранен смысл оригинального отзыва, но написан другими словами.</li>
|
103 |
+
<li>Рерайт соответствует полу, как в оригинале.</li>
|
104 |
<li>Написан повседневным языком и не похож на сгенерированный.</li>
|
105 |
<li>Имеет структуру <strong>Отзыв</strong>, <strong>Преимущества</strong>, <strong>Недостатки</strong>.</li>
|
106 |
</ol>
|
|
|
131 |
st.success("Вы выбрали Model B")
|
132 |
save_vote(db, 'right', models)
|
133 |
|
134 |
+
if not st.session_state.vote_submitted:
|
135 |
+
if st.button("😕 Ни один рерайт не понравился, получить другие рерайты"):
|
136 |
+
available_models = [model for model in models if model not in st.session_state.used_models]
|
137 |
+
if len(available_models) < 2:
|
138 |
+
st.session_state.used_models = []
|
139 |
+
available_models = models.copy()
|
140 |
+
selected_models = random.sample(available_models, 2)
|
141 |
+
st.session_state.model_a = selected_models[0]
|
142 |
+
st.session_state.model_b = selected_models[1]
|
143 |
+
st.session_state.used_models.extend(selected_models)
|
144 |
+
|
145 |
+
st.session_state.rewrite_a = ''
|
146 |
+
st.session_state.rewrite_b = ''
|
147 |
+
st.session_state.vote_submitted = False
|
148 |
+
|
149 |
+
with st.spinner("Генерация новых рерайтов..."):
|
150 |
+
|
151 |
+
def generate_rewrite_for_model(model_name, text):
|
152 |
+
if "gemma" in model_name.lower():
|
153 |
+
instruction = instruction_gemma.format(user_text=text, product_name=st.session_state.product_name)
|
154 |
+
return get_gemma_response(model_name, instruction)
|
155 |
+
else:
|
156 |
+
instruction = instruction_gpt.format(user_name=st.session_state.user_name, product_name=st.session_state.product_name)
|
157 |
+
return generate_rewrite(model_name, instruction, text)
|
158 |
+
|
159 |
+
st.session_state.rewrite_a = generate_rewrite_for_model(
|
160 |
+
st.session_state.model_a, st.session_state.original_review)
|
161 |
+
st.session_state.rewrite_b = generate_rewrite_for_model(
|
162 |
+
st.session_state.model_b, st.session_state.original_review)
|
163 |
+
st.experimental_rerun()
|
164 |
+
|
165 |
if __name__ == '__main__':
|
166 |
main()
|
167 |
|
|
|
173 |
|
174 |
|
175 |
|
176 |
+
|
data/{final_data_ozon.xlsx → final_data_ozon_with_names.xlsx}
RENAMED
@@ -1,3 +1,3 @@
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:
|
3 |
-
size
|
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:ffcc729bbcce05c04402549efb0bc26b1881e69a10f8302cc3d1135dda376d8d
|
3 |
+
size 2367315
|
data/{final_data_wb.xlsx → final_data_wb_with_names.xlsx}
RENAMED
@@ -1,3 +1,3 @@
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
-
oid sha256:
|
3 |
-
size
|
|
|
1 |
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:317af13e5c2d1769ad5e22b1dfd0f06b283c1a5bc6b0dc3081c2dc483f2f0c67
|
3 |
+
size 2367315
|
prompts/gemma_prompt.txt
CHANGED
@@ -4,8 +4,9 @@
|
|
4 |
Твоя задача — переписать предоставленный текст, сохранив его смысл и основные знаки препинания, которые встречаются в оригинальном тексте,
|
5 |
но используя другие слова. Используй повседневный стиль речи, чтобы текст выглядел естественно и не был похож на сгенерированный.
|
6 |
Избегай грамматических и стилистических ошибок, грубостей, матных слов и жаргона. Не искажай факты и названия товаров.
|
7 |
-
|
8 |
|
|
|
|
|
9 |
**Строго соблюдай следующий формат ответа и не добавляй ничего лишнего:**
|
10 |
|
11 |
Отзыв: [текст отзыва]
|
@@ -24,3 +25,4 @@
|
|
24 |
- Игнорируй всё остальное и не добавляй дополнительных комментариев.
|
25 |
<end_of_turn>
|
26 |
<start_of_turn>model
|
|
|
|
4 |
Твоя задача — переписать предоставленный текст, сохранив его смысл и основные знаки препинания, которые встречаются в оригинальном тексте,
|
5 |
но используя другие слова. Используй повседневный стиль речи, чтобы текст выглядел естественно и не был похож на сгенерированный.
|
6 |
Избегай грамматических и стилистических ошибок, грубостей, матных слов и жаргона. Не искажай факты и названия товаров.
|
|
|
7 |
|
8 |
+
**Название товара:** {product_name}
|
9 |
+
|
10 |
**Строго соблюдай следующий формат ответа и не добавляй ничего лишнего:**
|
11 |
|
12 |
Отзыв: [текст отзыва]
|
|
|
25 |
- Игнорируй всё остальное и не добавляй дополнительных комментариев.
|
26 |
<end_of_turn>
|
27 |
<start_of_turn>model
|
28 |
+
|
prompts/gpt_prompt.txt
CHANGED
@@ -1,13 +1,15 @@
|
|
1 |
-
**Ты профессиональный рерайтер**. Твоя задача — переосмыслить предоставленный
|
2 |
-
смысл из
|
3 |
-
Сохрани смысл
|
4 |
Используй повседневный стиль речи и избегай стилистических и
|
5 |
-
грамматических ошибок.
|
6 |
|
7 |
Твой рерайт должен быть **естественным и человечным**.
|
8 |
-
Особое внимание удели тому, чтобы не искажать факты, особенно названия товаров и конкретные детали.
|
9 |
|
10 |
-
|
|
|
|
|
11 |
**Важно:** Автор отзыва — **{user_name}**. Постарайся сохранить стиль и тон, соответствующий полу и возрасту автора.
|
12 |
|
13 |
**Пример:**
|
@@ -17,10 +19,10 @@
|
|
17 |
- Входной контент подается в формате строки:
|
18 |
"Этот планшет просто отличный! Легкое перо, множество настраиваемых кнопок и большой, четкий экран."
|
19 |
|
20 |
-
- На выходе ожидается текст, с
|
21 |
- Отзыв переписан с сохранением смысла, но сформулирован другими словами.
|
22 |
- Нет грамматических или логических ошибок.
|
23 |
-
- Добавлена повседневная речь и
|
24 |
- Отзыв должен быть переписан естественным языком, не похож на сгенерированный!
|
25 |
- Рерайт должен быть структурирован так, чтобы каждый тег начинался с новой строки, и между ними была пустая строка. Используйте следующий формат:
|
26 |
Отзыв: [текст отзыва]
|
@@ -38,21 +40,9 @@
|
|
38 |
Недостатки: нет
|
39 |
|
40 |
Рерайт:
|
41 |
-
Отзыв: Я просто обожаю
|
42 |
-
🔥 Честно говоря, мне больше нравится горячее
|
43 |
Преимущества: очень вкусно пахнет шоколадом
|
44 |
Недостатки: нет
|
45 |
|
46 |
-
|
47 |
-
Отзыв: по началу руль казался толстым , как сарделька, но быстро привыкаешь.однозначно рекомендую - она крута!
|
48 |
-
Преимущества: оплетка - бомба! очень красивая и удобная. руки не скользят , мягкая и прятная на ощупь.
|
49 |
-
Недостатки: на mitsubishi outlander натянула с трудом, но, наверное, так и надо, чтоб не прокручивала и не болталась. заказала такую же подруге,
|
50 |
-
через день выпала страза, хотя, у меня всё норм - запасайтесь супер клеем.
|
51 |
-
|
52 |
-
Рерайт:
|
53 |
-
Отзыв: Сначала руль с этой оплеткой показался мне толстоватым, как батон колбасы, но привыкаешь очень быстро. В общем, советую всем – вещь классная!
|
54 |
-
Преимущества: Сама оплетка просто супер! И красивая, и удобная. Руки не скользят, материал мягкий и приятный.
|
55 |
-
Недостатки: На мой Mitsubishi Outlander натягивалась туговато, но, видимо, так и должно быть, чтобы не прокручивалась и не болталась.
|
56 |
-
Заказала такую же подруге, у нее через день отвалился стразик, хотя у меня все ок. Так что, на всякий случай, держите под рукой суперклей.
|
57 |
-
|
58 |
-
**Следуй этим инструкциям внимательно, чтобы переписанный текст выглядел максимально естественно и качественно.**
|
|
|
1 |
+
**Ты профессиональный рерайтер**. Твоя задача — переосмыслить предоставленный текст и написать качественный рерайт, сохранив
|
2 |
+
смысл из оригинального отзыва, но переписав его другими словами.
|
3 |
+
Сохрани смысл текста и основные знаки препинания, которые встречаются в оригинале текста.
|
4 |
Используй повседневный стиль речи и избегай стилистических и
|
5 |
+
грамматических ошибок.
|
6 |
|
7 |
Твой рерайт должен быть **естественным и человечным**.
|
8 |
+
Особое внимание удели тому, чтобы не искажать факты, особенно названия товаров и конкретные детали.
|
9 |
|
10 |
+
**Название товара:** {product_name}
|
11 |
+
|
12 |
+
**Ты должен добавить в текст немного повседневной речи и **сленга**, чтобы он выглядел натуральным и не был похож на сгенерированный.**
|
13 |
**Важно:** Автор отзыва — **{user_name}**. Постарайся сохранить стиль и тон, соответствующий полу и возрасту автора.
|
14 |
|
15 |
**Пример:**
|
|
|
19 |
- Входной контент подается в формате строки:
|
20 |
"Этот планшет просто отличный! Легкое перо, множество настраиваемых кнопок и большой, четкий экран."
|
21 |
|
22 |
+
- На выходе ожидается текст, с выполненными критериями:
|
23 |
- Отзыв переписан с сохранением смысла, но сформулирован другими словами.
|
24 |
- Нет грамматических или логических ошибок.
|
25 |
+
- Добавлена повседневная речь и сленг.
|
26 |
- Отзыв должен быть переписан естественным языком, не похож на сгенерированный!
|
27 |
- Рерайт должен быть структурирован так, чтобы каждый тег начинался с новой строки, и между ними была пустая строка. Используйте следующий формат:
|
28 |
Отзыв: [текст отзыва]
|
|
|
40 |
Недостатки: нет
|
41 |
|
42 |
Рерайт:
|
43 |
+
Отзыв: Я просто обожаю обёртывания, хотя иногда лень их делать. Но когда аромат шоколада наполняет воздух, то мотивация появляется сама собой!
|
44 |
+
🔥 Честно говоря, мне больше нравится горячее обёртывание, оно как тёплый плед, а не холодный душ. 🥶
|
45 |
Преимущества: очень вкусно пахнет шоколадом
|
46 |
Недостатки: нет
|
47 |
|
48 |
+
**Следуй этим инструкциям внимательно, чтобы переписанный текст выглядел максимально естественно и качественно.**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|