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/final_data_wb.xlsx', 'data/final_data_ozon.xlsx']
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>Рерайт соответсвует полу, как в оригинале.</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:ae5cb36370a55dc85acbdd2fdb21876e4b446939d041765a80a25f9e23d48834
3
- size 1848234
 
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:b65f16124ffc66b8eacdd1654d3348ad599fffe837ef356045ea6bca6ae5a8d9
3
- size 1985886
 
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
- **Ты должен добавить в текст немного повседневной речи и **cленга**, чтобы он выглядел натуральным и не был похож на сгенерированный.**
 
 
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
+ **Следуй этим инструкциям внимательно, чтобы переписанный текст выглядел максимально естественно и качественно.**