Skip to main content

Topic Analysis (ABSA)

ABSA (Aspect-Based Sentiment Analysis) extracts specific topics from employee reviews and their associated sentiment.

🎯 What is ABSA?

ABSA goes beyond simple positive/negative classification. It identifies what aspects employees discuss and how they feel about each one.

Example:

"Great salary but terrible management"

AspectSentiment
Salary and BenefitsPOSITIVE
ManagementNEGATIVE

📊 Predefined Aspects

The system recognizes 10 core workplace topics:

#AspectKeywords
1Salary and Benefitspay, bonus, insurance, pension
2Work-Life Balancehours, overtime, remote, flexibility
3Managementboss, leadership, supervision
4Company Cultureatmosphere, values, team spirit
5Career Growthpromotion, opportunities, development
6Job Securitystability, layoffs, restructuring
7Work Environmentoffice, facilities, equipment
8Colleaguescoworkers, team dynamics
9Traininglearning, courses, skills
10Communicationtransparency, feedback, information

🔧 Extraction Methods

1. Rule-Based (Default)

  • Fast keyword matching
  • ~65% accuracy
  • No API costs
  • Runs automatically

2. AI-Powered (Gemini)

  • Context-aware extraction
  • ~85% accuracy
  • ~$0.001 per review
  • Used for high-priority companies

📈 Dashboard: Topics Tab

The Topics page in the dashboard shows:

Top 10 Discussed Topics

Bar chart of most frequently mentioned aspects with sentiment breakdown.

Topic Insights

  • Most positive topic - Highest positive sentiment
  • Most negative topic - Highest negative sentiment
  • Most discussed - Highest mention count

Detailed Breakdown

Click any topic to see:

  • Sample review excerpts
  • Sentiment distribution
  • Trend over time

🔌 API Access

curl "https://sentryanalytic.com/api/aspects?company=BMW"

Response:

{
"company": "BMW",
"aspects": [
{"aspect": "salary and benefits", "sentiment": "positive", "count": 421},
{"aspect": "management", "sentiment": "negative", "count": 318},
{"aspect": "work-life balance", "sentiment": "positive", "count": 256}
]
}

🔄 Automation

ABSA runs automatically after scraping:

Scraping Complete → Sentiment Analysis → ABSA → Materialized Views Refresh

No manual intervention needed!

🛠️ Manual Run

For ad-hoc analysis:

cd backend
source venv/bin/activate

# Analyze specific company
python absa_analyzer.py --company "BMW" --limit 200

# Use AI mode (more accurate)
python absa_analyzer.py --company "BMW"

# Rule-based only (faster)
python absa_analyzer.py --company "BMW" --no-ai

📊 Database Schema

CREATE TABLE review_aspects (
id SERIAL PRIMARY KEY,
review_id VARCHAR REFERENCES reviews(review_id),
aspect VARCHAR(100),
sentiment VARCHAR(20),
confidence FLOAT,
snippet TEXT
);

🎨 Use Cases

For Job Seekers

  • "What do employees say about work-life balance at BMW?"
  • Quickly identify company strengths and weaknesses

For HR Teams

  • "Which topics have the most negative feedback?"
  • Prioritize improvement areas

For Investors

  • "Is there a pattern of management issues?"
  • Risk assessment for due diligence

ABSA is powered by Gemini 2.5 Flash for AI-powered extraction.