Spaces:
Paused
Paused
from peft import AutoPeftModelForCausalLM | |
import spacy | |
import pandas as pd | |
from textblob import TextBlob | |
def load_model(): | |
nlp = spacy.load("en_core_web_sm") | |
return nlp | |
def extract_entities(text,nlp): | |
doc = nlp(text) | |
entities = [(ent.text, ent.label_) for ent in doc.ents] | |
return entities | |
# Function to extract entities context | |
def extract_entities_with_context(text, nlp, window=5): | |
doc = nlp(text) | |
entity_context = [] | |
for ent in doc.ents: | |
start = max(0, ent.start - window) | |
end = min(len(doc), ent.end + window) | |
context = doc[start:end].text | |
entity_context.append((ent.text, ent.label_, context)) | |
return entity_context | |
def get_sentiment(text): | |
return TextBlob(text).sentiment.polarity | |
def analyze_entity_sentiments(entity_contexts): | |
sentiments = [] | |
for text, label, context in entity_contexts: | |
sentiment = get_sentiment(context) | |
sentiments.append((text, label, sentiment)) | |
return sentiments | |
def analyze_entity_sentiments_score(entity_contexts): | |
sentiments = [] | |
for text, label, context in entity_contexts: | |
sentiment = get_sentiment(context) | |
sentiments.append((sentiment)) | |
return sentiments | |
def calculate_avg_score(scores): | |
if scores: | |
return sum(scores) / len(scores) | |
else: | |
return float('inf') | |
def categorize_sentiment(score): | |
if score <= -0.1: | |
return 'Negative' | |
elif score >= 0.1: | |
return 'Positive' | |
else: | |
return 'Neutral' |