Shridhartd commited on
Commit
5bfdcc1
·
verified ·
1 Parent(s): 701de4e

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +45 -0
app.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI
2
+ from pydantic import BaseModel
3
+ import torch
4
+ import numpy as np
5
+ from transformers import AutoTokenizer, AutoModel
6
+ from sklearn.linear_model import LogisticRegression
7
+ import uvicorn
8
+
9
+ app = FastAPI()
10
+
11
+ # Load Hugging Face model
12
+ model_name = "bert-base-uncased"
13
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
14
+ model = AutoModel.from_pretrained(model_name)
15
+
16
+ # Function to get text embeddings
17
+ def get_embedding(text):
18
+ inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True, max_length=512)
19
+ with torch.no_grad():
20
+ outputs = model(**inputs)
21
+ return outputs.last_hidden_state[:, 0, :].numpy()
22
+
23
+ # Sample dataset
24
+ texts = ["I love this!", "This is terrible.", "Fantastic experience!", "I hate it.", "Absolutely wonderful!", "Worst ever!"]
25
+ labels = [1, 0, 1, 0, 1, 0] # 1 = Positive, 0 = Negative
26
+ X = np.vstack([get_embedding(text) for text in texts])
27
+ y = np.array(labels)
28
+
29
+ # Train model
30
+ clf = LogisticRegression()
31
+ clf.fit(X, y)
32
+
33
+ # Define request format
34
+ class InputText(BaseModel):
35
+ text: str
36
+
37
+ @app.post("/predict")
38
+ def predict_sentiment(data: InputText):
39
+ user_embedding = get_embedding(data.text)
40
+ prediction = clf.predict(user_embedding)
41
+ sentiment = "Positive 😊" if prediction[0] == 1 else "Negative 😡"
42
+ return {"sentiment": sentiment}
43
+
44
+ if __name__ == "__main__":
45
+ uvicorn.run(app, host="0.0.0.0", port=7860)