CS-549-NAACP / app.py
spxwlkr's picture
Update app.py
7159f3e verified
from AICodeInit import *
from peft import AutoPeftModelForCausalLM
from transformers import AutoTokenizer, pipeline
import gradio as gr
from huggingface_hub import login
import os
# Huggingface Authentication
api_key = os.getenv('cs549_naacp_access_key')
if api_key is None:
raise ValueError("API_KEY is not set in the environment variables.")
login(api_key)
# Load the model
# model = AutoPeftModelForCausalLM.from_pretrained("Moritz-Pfeifer/financial-times-classification-llama-2-7b-v1.3")
# tokenizer = AutoTokenizer.from_pretrained("Moritz-Pfeifer/financial-times-classification-llama-2-7b-v1.3")
# def predict_text(test, model, tokenizer):
# prompt = f"""
# You are given a news article regarding the greater Boston area.
# Analyze the sentiment of the article enclosed in square brackets,
# determine if it is positive, negative or other, and return the answer as the corresponding sentiment label
# "positive" or "negative". If the sentiment is neither positive or negative, return "other".
# [{test}] ="""
# pipe = pipeline(task="text-generation",
# model=model,
# tokenizer=tokenizer,
# max_new_tokens = 1,
# temperature = 0.1,
# )
# result = pipe(prompt)
# answer = result[0]['generated_text'].split("=")[-1]
# # print(answer)
# if "positive" in answer.lower():
# return "positive"
# elif "negative" in answer.lower():
# return "negative"
# else:
# return "other"
# def predict(input_text):
# return predict_text(input_text, model, tokenizer)
# interface = gr.Interface(fn=predict, inputs="text", outputs="text", title="Text Classifier", description="Insert your text and get the classification result.")
# interface.launch()
#initialize llama model model, tokenizer, prompt, pipe = create_pipeline()
nlp = load_model()
prompt, pipe = create_pipeline()
#demo function calls predict text from other file
def entity_sentiment(text):
entities = set(extract_entities(text,nlp))
entities_context = extract_entities_with_context(text, nlp)
#sentiment = get_sentiment(text)
entity_sentiment_scoreonly=analyze_entity_sentiments_score(entities_context)
#sentiment_category = categorize_sentiment(sentiment)
#average_sentiment = sum(entity_sentiments)/len(entity_sentiments)
average_score = calculate_avg_score(entity_sentiment_scoreonly)
average_sentiment = categorize_sentiment(average_score)
llama_sentiment = predict_text(text,pipe,prompt)
return entities,entities_context,entity_sentiment_scoreonly,average_score,average_sentiment,llama_sentiment
demo = gr.Interface(
fn=entity_sentiment,
inputs=["text"],
outputs=[
gr.Textbox(label="Entities"),
gr.Textbox(label="Entity Contexts"),
gr.Textbox(label="Entity Sentiment Scores"),
gr.Textbox(label="Average Score"),
gr.Textbox(label="Average Sentiment"),
gr.Textbox(label="Llama Sentiment")
])
# output_label=["Entities","Entity Contexts", "Entity Sentiment Scores","Average Score of Entites","Llama sentiment on Lede"]
demo.launch(share=True)
if __name__ == "__main__":
interface.launch(share=True)