OmarElgammal1 commited on
Commit
d3b509b
·
1 Parent(s): 6c83f67

Version 2.1

Browse files
Files changed (1) hide show
  1. app.py +37 -142
app.py CHANGED
@@ -1,151 +1,46 @@
1
  import gradio as gr
2
- import numpy as np
3
- import random
4
- from diffusers import DiffusionPipeline
5
- import torch
6
-
7
- device = "cuda" if torch.cuda.is_available() else "cpu"
8
-
9
- if torch.cuda.is_available():
10
- torch.cuda.max_memory_allocated(device=device)
11
- pipe = DiffusionPipeline.from_pretrained("stabilityai/sdxl-turbo", torch_dtype=torch.float16, variant="fp16", use_safetensors=True)
12
- pipe.enable_xformers_memory_efficient_attention()
13
- pipe = pipe.to(device)
14
- else:
15
- pipe = DiffusionPipeline.from_pretrained("stabilityai/sdxl-turbo", use_safetensors=True)
16
- pipe = pipe.to(device)
17
-
18
- MAX_SEED = np.iinfo(np.int32).max
19
- MAX_IMAGE_SIZE = 1024
20
-
21
- def infer(prompt, negative_prompt, seed, randomize_seed, width, height, guidance_scale, num_inference_steps):
22
 
23
- if randomize_seed:
24
- seed = random.randint(0, MAX_SEED)
25
-
26
- generator = torch.Generator().manual_seed(seed)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
 
28
- image = pipe(
29
- prompt = prompt,
30
- negative_prompt = negative_prompt,
31
- guidance_scale = guidance_scale,
32
- num_inference_steps = num_inference_steps,
33
- width = width,
34
- height = height,
35
- generator = generator
36
- ).images[0]
37
-
38
- return image
39
-
40
- from transformers import pipeline
41
  classifier = pipeline(task="zero-shot-classification", model="facebook/bart-large-mnli")
42
-
43
  def analyze_sentiment(text):
44
  results = classifier(text, ["positive", "negative", "neutral"], multi_label=True)
45
  sentiment = max(results['labels'], key=results['scores'].__getitem__)
46
  return sentiment
47
 
48
- examples = [
49
- "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k",
50
- "An astronaut riding a green horse",
51
- "A delicious ceviche cheesecake slice",
52
- ]
53
-
54
- css="""
55
- #col-container {
56
- margin: 0 auto;
57
- max-width: 520px;
58
- }
59
- """
60
-
61
- if torch.cuda.is_available():
62
- power_device = "GPU"
63
- else:
64
- power_device = "CPU"
65
-
66
- with gr.Blocks(css=css) as demo:
67
-
68
- with gr.Column(elem_id="col-container"):
69
- gr.Markdown(f"""
70
- # Text-to-Image Gradio Template
71
- Currently running on {power_device}.
72
- """)
73
-
74
- with gr.Row():
75
- prompt = gr.Text(
76
- label="Prompt",
77
- show_label=False,
78
- max_lines=1,
79
- placeholder="Enter your prompt",
80
- container=False,
81
- )
82
-
83
- run_button = gr.Button("Run", scale=0)
84
-
85
- sentiment_text = gr.Text(label="Sentiment:", show_label=True, value="")
86
- result = gr.Image(label="Result", show_label=False)
87
-
88
- with gr.Accordion("Advanced Settings", open=False):
89
- negative_prompt = gr.Text(
90
- label="Negative prompt",
91
- max_lines=1,
92
- placeholder="Enter a negative prompt",
93
- visible=False,
94
- )
95
-
96
- seed = gr.Slider(
97
- label="Seed",
98
- minimum=0,
99
- maximum=MAX_SEED,
100
- step=1,
101
- value=0,
102
- )
103
-
104
- randomize_seed = gr.Checkbox(label="Randomize seed", value=True)
105
-
106
- with gr.Row():
107
- width = gr.Slider(
108
- label="Width",
109
- minimum=256,
110
- maximum=MAX_IMAGE_SIZE,
111
- step=32,
112
- value=512,
113
- )
114
-
115
- height = gr.Slider(
116
- label="Height",
117
- minimum=256,
118
- maximum=MAX_IMAGE_SIZE,
119
- step=32,
120
- value=512,
121
- )
122
-
123
- with gr.Row():
124
- guidance_scale = gr.Slider(
125
- label="Guidance scale",
126
- minimum=0.0,
127
- maximum=10.0,
128
- step=0.1,
129
- value=0.0,
130
- )
131
-
132
- num_inference_steps = gr.Slider(
133
- label="Number of inference steps",
134
- minimum=1,
135
- maximum=12,
136
- step=1,
137
- value=2,
138
- )
139
-
140
- gr.Examples(
141
- examples = examples,
142
- inputs = [prompt]
143
- )
144
-
145
- run_button.click(
146
- fn = infer,
147
- inputs = [prompt, negative_prompt, seed, randomize_seed, width, height, guidance_scale, num_inference_steps],
148
- outputs = [result, sentiment_text] # Update outputs to include sentiment text
149
- )
150
-
151
- demo.queue().launch()
 
1
  import gradio as gr
2
+ import pickle
3
+ from transformers import pipeline
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
 
5
+ def load_model(selected_model):
6
+ with open(selected_model, 'rb') as file:
7
+ loaded_model = pickle.load(file)
8
+ return loaded_model
9
+
10
+ def predict(model, text):
11
+ encoder = {
12
+ 0:'assets/negative.jpeg',
13
+ 1:'assets/neutral.jpeg',
14
+ 2:'assets/positive.jpeg'
15
+ }
16
+ selected_model = None
17
+ with open('vectorizer.pkl', 'rb') as file:
18
+ vectorizer = pickle.load(file)
19
+
20
+ if 'Random Forest' == model:
21
+ selected_model = "models/rf_twitter.pkl"
22
+ elif 'Logistic Regression' == model:
23
+ selected_model = "models/lg_twitter.pkl"
24
+ elif 'Naive Bayes' == model:
25
+ selected_model = "models/nb_twitter.pkl"
26
+ elif 'Decision Tree' == model:
27
+ selected_model = "models/dt_twitter.pkl"
28
+ elif 'KNN' == model:
29
+ selected_model = "models/knn_twitter.pkl"
30
+ else:
31
+ selected_model = "models/lg_twitter.pkl"
32
+ loaded_model = load_model(selected_model)
33
+ text_vector = vectorizer.transform([text])
34
+ prediction = loaded_model.predict(text_vector)
35
+ return encoder[prediction[0]]
36
 
 
 
 
 
 
 
 
 
 
 
 
 
 
37
  classifier = pipeline(task="zero-shot-classification", model="facebook/bart-large-mnli")
 
38
  def analyze_sentiment(text):
39
  results = classifier(text, ["positive", "negative", "neutral"], multi_label=True)
40
  sentiment = max(results['labels'], key=results['scores'].__getitem__)
41
  return sentiment
42
 
43
+ # models = gr.Radio(['Random Forest', 'Logistic Regression','Naive Bayes','Decision Tree','KNN'], label="Choose model")
44
+ # demo = gr.Interface(fn=predict, inputs=[models,"text"], outputs="image", title="Sentiment Analysis")
45
+ demo = gr.Interface(fn=analyze_sentiment, inputs="text", outputs="text", title="Sentiment Analysis")
46
+ demo.launch()