ramalMr commited on
Commit
418de0b
·
verified ·
1 Parent(s): 7b026a2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -36
app.py CHANGED
@@ -1,24 +1,20 @@
1
  from huggingface_hub import InferenceClient
2
- import pandas as pd
3
- import re
4
- import random
5
- import csv
6
- import tempfile
7
  import gradio as gr
 
 
 
 
 
8
  client = InferenceClient("mistralai/Mixtral-8x7B-Instruct-v0.1")
9
 
10
- def extract_sentences_from_excel(file):
11
  df = pd.read_excel(file)
12
- sentences = []
13
- for row in df.values.tolist():
14
- text = ' '.join(str(x) for x in row)
15
- new_sentences = re.split(r'(?<=[^.!?])(?=[.!?])', text)
16
- sentences.extend([s.strip() for s in new_sentences if s.strip()])
17
- return sentences
18
 
19
- def generate_synthetic_data(file, temperature, max_new_tokens, top_p, repetition_penalty):
20
- sentences = extract_sentences_from_excel(file)
21
- random.shuffle(sentences)
22
 
23
  generated_data = []
24
 
@@ -37,41 +33,42 @@ def generate_synthetic_data(file, temperature, max_new_tokens, top_p, repetition
37
  }
38
 
39
  try:
40
- output = client.generate(sentence, **generate_kwargs, return_full_text=True)
41
- synthetic_data = output.text.strip()
42
-
43
- generated_sentences = re.split(r'(?<=[\.\!\?:])[\s\n]+', synthetic_data)
44
- generated_sentences = [s.strip() for s in generated_sentences if s.strip() and s != '.']
45
 
46
- for generated_sentence in generated_sentences:
47
- generated_data.append({'Original Sentence': sentence, 'Synthetic Data': generated_sentence})
48
 
49
  except Exception as e:
50
  print(f"Error generating data for sentence '{sentence}': {e}")
51
 
52
- with tempfile.NamedTemporaryFile(mode='w', newline='', delete=False, suffix='.csv') as tmp:
53
- fieldnames = ['Original Sentence', 'Synthetic Data']
54
- writer = csv.DictWriter(tmp, fieldnames=fieldnames)
55
- writer.writeheader()
56
-
57
- for data in generated_data:
58
- writer.writerow(data)
59
 
60
- tmp_path = tmp.name
 
 
 
 
61
 
62
- return tmp_path
 
 
 
 
63
 
64
  gr.Interface(
65
- fn=generate_synthetic_data,
66
  inputs=[
67
- gr.File(label="Upload Excel File", file_count="single", file_types=[".xlsx", ".xls"]),
68
  gr.Slider(label="Temperature", value=0.9, minimum=0.0, maximum=1.0, step=0.05, interactive=True, info="Higher values produce more diverse outputs"),
69
  gr.Slider(label="Max new tokens", value=256, minimum=0, maximum=5120, step=64, interactive=True, info="The maximum numbers of new tokens"),
70
  gr.Slider(label="Top-p (nucleus sampling)", value=0.95, minimum=0.0, maximum=1, step=0.05, interactive=True, info="Higher values sample more low-probability tokens"),
71
  gr.Slider(label="Repetition penalty", value=1.0, minimum=1.0, maximum=2.0, step=0.1, interactive=True, info="Penalize repeated tokens"),
72
  ],
73
- outputs=gr.File(label="Synthetic Data CSV"),
74
- title="Synthetic Data Generation",
75
- description="Generate synthetic data from sentences in an Excel file and save it to a CSV file.",
76
  allow_flagging="never",
77
  ).launch()
 
1
  from huggingface_hub import InferenceClient
 
 
 
 
 
2
  import gradio as gr
3
+ import PyPDF2
4
+ import random
5
+ import pandas as pd
6
+ from io import BytesIO
7
+
8
  client = InferenceClient("mistralai/Mixtral-8x7B-Instruct-v0.1")
9
 
10
+ def extract_text_from_excel(file):
11
  df = pd.read_excel(file)
12
+ text = ' '.join(df['data'].astype(str))
13
+ return text
 
 
 
 
14
 
15
+ def generate_sentences(text, temperature, max_new_tokens, top_p, repetition_penalty):
16
+ sentences = text.split('.')
17
+ random.shuffle(sentences) # Shuffle sentences
18
 
19
  generated_data = []
20
 
 
33
  }
34
 
35
  try:
36
+ stream = client.text_generation(sentence, **generate_kwargs, stream=True, details=True, return_full_text=False)
37
+ output = ""
38
+ for response in stream:
39
+ output += response.token.text
 
40
 
41
+ generated_sentences = [s.strip() for s in output.split('.') if s.strip()]
42
+ generated_data.extend([(sentence, generated_sentence) for generated_sentence in generated_sentences])
43
 
44
  except Exception as e:
45
  print(f"Error generating data for sentence '{sentence}': {e}")
46
 
47
+ return generated_data
 
 
 
 
 
 
48
 
49
+ def save_to_csv(data, filename="synthetic_data.csv"):
50
+ with open(filename, mode='w', newline='', encoding='utf-8') as file:
51
+ writer = csv.writer(file)
52
+ writer.writerow(['Original Sentence', 'Generated Sentence'])
53
+ writer.writerows(data)
54
 
55
+ def generate(file, temperature, max_new_tokens, top_p, repetition_penalty):
56
+ text = extract_text_from_excel(file)
57
+ data = generate_sentences(text, temperature, max_new_tokens, top_p, repetition_penalty)
58
+ save_to_csv(data)
59
+ return gr.File.update(value=filename, visible=True)
60
 
61
  gr.Interface(
62
+ fn=generate,
63
  inputs=[
64
+ gr.File(label="Upload Excel File", file_count="single", file_types=[".xlsx"]),
65
  gr.Slider(label="Temperature", value=0.9, minimum=0.0, maximum=1.0, step=0.05, interactive=True, info="Higher values produce more diverse outputs"),
66
  gr.Slider(label="Max new tokens", value=256, minimum=0, maximum=5120, step=64, interactive=True, info="The maximum numbers of new tokens"),
67
  gr.Slider(label="Top-p (nucleus sampling)", value=0.95, minimum=0.0, maximum=1, step=0.05, interactive=True, info="Higher values sample more low-probability tokens"),
68
  gr.Slider(label="Repetition penalty", value=1.0, minimum=1.0, maximum=2.0, step=0.1, interactive=True, info="Penalize repeated tokens"),
69
  ],
70
+ outputs=gr.File(label="Synthetic Data"),
71
+ title="SDG",
72
+ description="AYE QABIL.",
73
  allow_flagging="never",
74
  ).launch()