Spaces:
Running
Running
File size: 2,641 Bytes
818a838 4b7389c e7e6566 818a838 4b7389c 818a838 4b7389c bcfdcee 818a838 6323541 0ded43b 6323541 bcfdcee 4081ce7 6323541 4081ce7 bcfdcee 4b7389c 4081ce7 4b7389c 0ded43b 6323541 4b7389c bcfdcee 818a838 60f5e0a 0ded43b 60f5e0a 0ded43b 60f5e0a 0ded43b 60f5e0a 0ded43b 60f5e0a 0ded43b 60f5e0a 0ded43b 60f5e0a 4b7389c 818a838 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
import streamlit as st
import wna_googlenews as wna
import pandas as pd
from transformers import pipeline
st.set_page_config(layout="wide")
st.title("WNA Google News App")
st.subheader("Search for News and classify the headlines with sentiment analysis")
query = st.text_input("Enter Query")
models = [
"j-hartmann/emotion-english-distilroberta-base",
"SamLowe/roberta-base-go_emotions"
# "distilbert/distilbert-base-uncased-finetuned-sst-2-english"
]
settings = {
"langregion": "en/US",
"period": "1d",
"model": models[0],
"number_of_pages": 5
}
with st.sidebar:
st.title("Settings")
# add language and country parameters
st.header("Language and Country")
settings["langregion"] = st.selectbox("Select Language", ["en/US", "fr/FR"])
# input field for number of pages
st.header("Number of Pages")
settings["number_of_pages"] = st.number_input("Enter Number of Pages", min_value=1, max_value=10)
settings["region"] = settings["langregion"].split("/")[0]
settings["lang"] = settings["langregion"].split("/")[1]
# add period parameter
st.header("Period")
settings["period"] = st.selectbox("Select Period", ["1d", "7d", "30d"])
# Add models parameters
st.header("Models")
settings["model"] = st.selectbox("Select Model", models)
if st.button("Search"):
classifier = pipeline(task="text-classification", model=settings["model"], top_k=None)
# display a loading progress
with st.spinner("Loading last news ..."):
allnews = wna.get_news(settings, query)
st.dataframe(allnews)
with st.spinner("Processing received news ..."):
df = pd.DataFrame(columns=["sentence", "date","best","second"])
# loop on each sentence and call classifier
for curnews in allnews:
#st.write(curnews)
cur_sentence = curnews["title"]
cur_date = curnews["date"]
model_outputs = classifier(cur_sentence)
cur_result = model_outputs[0]
#st.write(cur_result)
# get label 1
label = cur_result[0]['label']
score = cur_result[0]['score']
percentage = round(score * 100, 2)
str1 = label + " (" + str(percentage) + ")%"
# get label 2
label = cur_result[1]['label']
score = cur_result[1]['score']
percentage = round(score * 100, 2)
str2 = label + " (" + str(percentage) + ")%"
# insert cur_sentence and cur_result into dataframe
df.loc[len(df.index)] = [cur_sentence, cur_date, str1, str2]
# write info on the output
st.write("Number of sentences:", len(df))
st.write("Language:", settings["lang"], "Country:", settings["region"])
st.dataframe(df)
|