Spaces:
Sleeping
Sleeping
Update main.py
Browse files
main.py
CHANGED
@@ -1,24 +1,20 @@
|
|
|
|
|
|
|
|
|
|
1 |
from fastapi import FastAPI, Request
|
2 |
-
from transformers import AutoModelForSequenceClassification,
|
3 |
from scipy.special import softmax
|
4 |
import numpy as np
|
5 |
-
import os
|
6 |
|
7 |
app = FastAPI()
|
8 |
|
9 |
-
# Set HF cache and home directory to writable path
|
10 |
-
os.environ["TRANSFORMERS_CACHE"] = "/tmp/hf-cache"
|
11 |
-
os.environ["HF_HOME"] = "/tmp/hf-home"
|
12 |
-
|
13 |
-
# Model and tokenizer setup
|
14 |
MODEL = "cardiffnlp/twitter-roberta-base-sentiment-latest"
|
15 |
-
TOKENIZER_MODEL = "cardiffnlp/twitter-roberta-base-sentiment"
|
16 |
|
17 |
-
tokenizer =
|
18 |
config = AutoConfig.from_pretrained(MODEL)
|
19 |
model = AutoModelForSequenceClassification.from_pretrained(MODEL)
|
20 |
|
21 |
-
# Preprocessing
|
22 |
def preprocess(text):
|
23 |
tokens = []
|
24 |
for t in text.split():
|
@@ -29,22 +25,17 @@ def preprocess(text):
|
|
29 |
tokens.append(t)
|
30 |
return " ".join(tokens)
|
31 |
|
32 |
-
# Endpoint
|
33 |
@app.post("/analyze")
|
34 |
async def analyze(request: Request):
|
35 |
data = await request.json()
|
36 |
text = preprocess(data.get("text", ""))
|
37 |
-
|
38 |
encoded_input = tokenizer(text, return_tensors='pt')
|
39 |
output = model(**encoded_input)
|
40 |
scores = output[0][0].detach().numpy()
|
41 |
scores = softmax(scores)
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
label = config.id2label[i]
|
47 |
-
score = round(float(scores[i]), 4)
|
48 |
-
result.append({"label": label, "score": score})
|
49 |
-
|
50 |
return {"result": result}
|
|
|
|
1 |
+
import os
|
2 |
+
os.environ["TRANSFORMERS_CACHE"] = "/tmp/hf-cache"
|
3 |
+
os.environ["HF_HOME"] = "/tmp/hf-home"
|
4 |
+
|
5 |
from fastapi import FastAPI, Request
|
6 |
+
from transformers import AutoModelForSequenceClassification, AutoTokenizer, AutoConfig
|
7 |
from scipy.special import softmax
|
8 |
import numpy as np
|
|
|
9 |
|
10 |
app = FastAPI()
|
11 |
|
|
|
|
|
|
|
|
|
|
|
12 |
MODEL = "cardiffnlp/twitter-roberta-base-sentiment-latest"
|
|
|
13 |
|
14 |
+
tokenizer = AutoTokenizer.from_pretrained(MODEL)
|
15 |
config = AutoConfig.from_pretrained(MODEL)
|
16 |
model = AutoModelForSequenceClassification.from_pretrained(MODEL)
|
17 |
|
|
|
18 |
def preprocess(text):
|
19 |
tokens = []
|
20 |
for t in text.split():
|
|
|
25 |
tokens.append(t)
|
26 |
return " ".join(tokens)
|
27 |
|
|
|
28 |
@app.post("/analyze")
|
29 |
async def analyze(request: Request):
|
30 |
data = await request.json()
|
31 |
text = preprocess(data.get("text", ""))
|
|
|
32 |
encoded_input = tokenizer(text, return_tensors='pt')
|
33 |
output = model(**encoded_input)
|
34 |
scores = output[0][0].detach().numpy()
|
35 |
scores = softmax(scores)
|
36 |
+
result = [
|
37 |
+
{"label": config.id2label[i], "score": round(float(scores[i]), 4)}
|
38 |
+
for i in scores.argsort()[::-1]
|
39 |
+
]
|
|
|
|
|
|
|
|
|
40 |
return {"result": result}
|
41 |
+
|