BrandSightAI / src /llm_analysis.py
akashjayampu's picture
Update src/llm_analysis.py
455004e verified
Raw
History Blame Contribute Delete
1.17 kB
from transformers import pipeline
import streamlit as st
@st.cache_resource
def get_llm_pipelines():
classifier = pipeline("zero-shot-classification", model="facebook/bart-large-mnli", truncation=True)
sentiment_pipe = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english", truncation=True)
summarizer = pipeline("summarization", model="sshleifer/distilbart-cnn-6-6", truncation=True)
return classifier, sentiment_pipe, summarizer
def analyze_post(text, classifier, sentiment_pipe, summarizer):
if not text or not text.strip():
return {"category": "N/A", "sentiment": "N/A", "summary": "Empty"}
result = {}
labels = ["Bug Report", "Feature Request", "Competitor Mention", "Positive Feedback"]
hypothesis = "This text is about a {}."
result["category"] = classifier(text, labels, hypothesis_template=hypothesis)["labels"][0]
result["sentiment"] = sentiment_pipe(text)[0]['label']
if len(text.split()) > 40:
result["summary"] = summarizer(text, max_length=60, min_length=20, do_sample=False)[0]['summary_text']
else:
result["summary"] = text
return result