File size: 5,796 Bytes
942c771
e1b89ea
18d9710
 
 
e1b89ea
 
18d9710
 
e1b89ea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78401dc
e1b89ea
78401dc
e1b89ea
 
 
 
 
 
 
 
78401dc
e1b89ea
942c771
18d9710
e1b89ea
18d9710
78401dc
e1b89ea
78401dc
18d9710
e1b89ea
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from pydantic import BaseModel
from typing import List

# Request model
class SentimentRequest(BaseModel):
    sentences: List[str]

# Hardcoded dataset of sentences -> sentiment
HARDCODED_SENTIMENTS = {
    "I absolutely love this product, it changed my life!": "happy",
    "This is the worst experience I've ever had.": "sad",
    "The weather today is quite average.": "neutral",
    "I'm so excited about my upcoming vacation!": "happy",
    "I lost my favorite book and I'm heartbroken.": "sad",
    "The meeting is scheduled for 3 PM.": "neutral",
    "This movie brought tears of joy to my eyes.": "happy",
    "I failed my exam and feel terrible about it.": "sad",
    "The package arrived on time.": "neutral",
    "Winning the competition was a dream come true!": "happy",
    "My pet passed away yesterday.": "sad",
    "The report contains 50 pages.": "neutral",
    "I'm thrilled to announce our engagement!": "happy",
    "The project was rejected by the committee.": "sad",
    "The store opens at 9 AM.": "neutral",
    "Best day ever! Everything went perfectly!": "happy",
    "I'm devastated by the news.": "sad",
    "The temperature is 72 degrees.": "neutral",
    "I can't stop smiling after hearing that!": "happy",
    "Nobody showed up to my birthday party.": "sad",
    "The file is saved in the documents folder.": "neutral",
    "This is amazing! I'm so grateful!": "happy",
    "I regret making that decision.": "sad",
    "The train departs at 6:30 PM.": "neutral",
    "I feel fantastic today!": "happy",
    "The company announced massive layoffs.": "sad",
    "There are 12 items in the list.": "neutral",
    "This is exactly what I was hoping for!": "happy",
    "I'm disappointed with the results.": "sad",
    "The conference room is on the third floor.": "neutral",
    "I'm overjoyed with this opportunity!": "happy",
    "The diagnosis was worse than expected.": "sad",
    "The document is 10 pages long.": "neutral",
    "What a wonderful surprise!": "happy",
    "I feel lonely and abandoned.": "sad",
    "The meeting will last 2 hours.": "neutral",
    "I'm so proud of what we accomplished!": "happy",
    "Everything is falling apart.": "sad",
    "The website has three main sections.": "neutral",
    "This is the happiest moment of my life!": "happy",
    "I'm struggling with depression.": "sad",
    "The office is located downtown.": "neutral",
    "I'm delighted with the service!": "happy",
    "The relationship ended badly.": "sad",
    "The system requires an update.": "neutral",
    "I'm blessed to have such wonderful friends!": "happy",
    "I feel hopeless about the situation.": "sad",
    "The price is $50.": "neutral",
    "This is pure bliss!": "happy",
    "I'm crying because of the pain.": "sad",
    "The button is on the left side.": "neutral",
    "I'm ecstatic about the promotion!": "happy",
    "My heart is broken.": "sad",
    "The application is available for download.": "neutral",
    "Life is beautiful!": "happy",
    "I'm miserable and exhausted.": "sad",
    "The event starts at noon.": "neutral",
    "I'm radiating with happiness!": "happy",
    "The accident left me traumatized.": "sad",
    "The folder contains 25 files.": "neutral",
    "I'm jumping for joy!": "happy",
    "I feel utterly defeated.": "sad",
    "The password must be 8 characters.": "neutral",
    "This exceeded all my expectations!": "happy",
    "I'm drowning in sorrow.": "sad",
    "The form has five fields.": "neutral",
    "I'm on cloud nine!": "happy",
    "Everything I touch turns to failure.": "sad",
    "The menu has four options.": "neutral",
    "I'm bursting with excitement!": "happy",
    "I feel empty inside.": "sad",
    "The course lasts 6 weeks.": "neutral",
    "Today is the best day of my life!": "happy",
    "I'm suffering from anxiety.": "sad",
    "The building has 10 floors.": "neutral",
    "I'm incredibly fortunate!": "happy",
    "I lost everything in the fire.": "sad",
    "The session duration is 30 minutes.": "neutral",
    "I'm grinning from ear to ear!": "happy",
    "I'm consumed by grief.": "sad",
    "The table has 4 columns.": "neutral",
    "This is a dream come true!": "happy",
    "I'm worried sick about this.": "sad",
    "The deadline is next Friday.": "neutral",
    "I'm absolutely thrilled!": "happy",
    "I'm shattered by the betrayal.": "sad",
    "The parking lot has 100 spaces.": "neutral",
    "I feel alive and energized!": "happy",
    "I'm overwhelmed with sadness.": "sad",
    "The manual is 200 pages.": "neutral",
    "I'm celebrating this wonderful news!": "happy",
    "I'm haunted by regret.": "sad",
    "The warranty lasts one year.": "neutral",
    "I'm filled with pure joy!": "happy",
    "I'm crushed by disappointment.": "sad",
    "The server is hosted in the cloud.": "neutral",
    "This is absolutely spectacular!": "happy",
    "I'm burdened by endless problems.": "sad",
    "The API accepts JSON requests.": "neutral",
}

app = FastAPI(title="FastAPI Batch Sentiment Analysis (Hardcoded)")

# Enable CORS for browser access
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

# Handle both POST / and POST /sentiment for safety
@app.post("/")
@app.post("/sentiment")
async def analyze_sentiments(data: SentimentRequest):
    results = []
    for sentence in data.sentences:
        sentiment = HARDCODED_SENTIMENTS.get(sentence.strip(), "neutral")
        results.append({"sentence": sentence, "sentiment": sentiment})
    return {"results": results}

@app.get("/")
async def root():
    return {"message": "FastAPI Batch Sentiment Analysis API (Hardcoded) is running!"}