Analyze the sentiment of thousands of reviews in bulk
What sentiment analysis actually measures
Sentiment analysis returns a binary response (positive/negative) or a score from -1 to +1 for a given text. It sounds simple, but it teaches you something important: a sentence can be grammatically neutral and emotionally charged at the same time.
Examples:
- "The product arrived." — grammatically neutral, but compared to "it arrived super fast!" it reads as relatively negative
- "Works as expected." — sounds positive, but for someone who expected more, it signals disappointment
- "I'll never buy again." — clearly negative, even without an explicit negative word
Modern NLP models capture 92%+ of these nuances in English. But you still need to interpret the score within the context of your business.

How to process 10,000 reviews in 60 seconds
Brainiall offers a batch endpoint that accepts arrays of up to 1,000 texts per request. For 10,000 reviews:
1. Split into 10 batches of 1,000
2. Send in parallel via asyncio
3. Receive structured results in JSON
4. Total latency: 30–60s for 10k texts
Using Python:
`python
import httpx, asyncio
async def analyze_batch(texts):
async with httpx.AsyncClient(timeout=60) as client:
r = await client.post(
"https://api.brainiall.com/api/nlp/sentiment/batch",
json={"texts": texts},
headers={"Authorization": "Bearer brnl-xxxxx"}
)
return r.json()
results = asyncio.run(analyze_batch(reviews[:1000]))`
Beyond positive/negative: aspect-based sentiment
A single review can contain contradictory opinions about different aspects:
> "The food is excellent, but the waiter was rude and the price outrageous."
Overall sentiment: -0.1 (slightly negative). But you've lost critical information:
- Food: +0.9 (very positive)
- Service: -0.7 (very negative)
- Price: -0.6 (negative)
Aspect-based sentiment extracts these aspects and scores each one individually. Perfect for competitive analysis, product feedback, and enriched NPS.

Classic mistakes beginners make
- Ignoring magnitude: sentiment -0.1 and -0.9 are treated the same in binary analysis. Always use the continuous score.
- Not filtering by relevance: reviews like "all good" still show up in your data — but they tell you nothing. Filter by minimum length and lexical diversity.
- Naive aggregation: a simple average of scores can hide bimodality (half loved it, half hated it = neutral average). Always plot the histogram.
- Mixed languages: multilingual models have roughly 10% lower accuracy on average. When possible, detect the language and use a dedicated model.
Practical use cases
- Voice of Customer: analyze all reviews for a product and compare against competitors
- Social media: monitor mentions of your brand on Twitter/Reddit in real time
- Internal feedback: analyze employee survey responses at scale
- Support prioritization: tickets with very negative sentiment = high priority
- Qualitative A/B testing: did one variation generate more positive reviews?
Try it right now
In the Brainiall chat, ask "analyze the sentiment of this review: [text]". For batch processing, use the /api/nlp/sentiment/batch endpoint via API. The Pro plan at $29 includes generous usage; Business offers API credits to process millions through external integrations.