File size: 5,083 Bytes
1db46cf 5ad2dc4 1db46cf f85a256 75d538e 1db46cf f85a256 1db46cf f85a256 1db46cf d4179ef c22fc44 d4179ef 1db46cf f85a256 1db46cf d4c506e f85a256 d4c506e f85a256 d4c506e 1db46cf f85a256 1db46cf d4179ef 1db46cf c22fc44 ae10a2a d4179ef 1db46cf f85a256 1db46cf f85a256 1db46cf f85a256 1db46cf f85a256 ae10a2a 1db46cf d4c506e ae10a2a ffaf614 ae10a2a d4179ef |
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 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
import streamlit as st
import json
import requests
import time
from newspaper import Article
# Page title layout
c1, c2 = st.columns([0.32, 2])
with c1:
st.image("images/newspaper.png", width=85)
with c2:
st.title("Website Article Summarize")
st.markdown("**Generate summaries of articles from websites using abstractive summarization with Google's Pegasus language model.**")
st.caption("Created by Bayhaqy.")
# Sidebar content
st.sidebar.subheader("About the app")
st.sidebar.info("This app uses optional 🤗HuggingFace's Model [facebook/bart-large-cnn](https://huggingface.co/facebook/bart-large-cnn) \
or [pegasus_indonesian_base-finetune](https://huggingface.co/pegasus_indonesian_base-finetune) model.")
st.sidebar.write("\n\n")
st.sidebar.markdown("**Get a free API key from HuggingFace:**")
st.sidebar.markdown("* Create a [free account](https://huggingface.co/join) or [login](https://huggingface.co/login)")
st.sidebar.markdown("* Go to **Settings** and then **Access Tokens**")
st.sidebar.markdown("* Create a new Token (select 'read' role)")
st.sidebar.markdown("* Paste your API key in the text box")
st.sidebar.divider()
st.sidebar.write("Please make sure your article is in English/Indonesia, choose the correct model and is not behind a paywall.")
st.sidebar.write("\n\n")
st.sidebar.divider()
# Inputs
st.subheader("Enter the URL of the article you want to summarize")
default_url = "https://"
url = st.text_input("URL:", default_url)
headers_ = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'
}
fetch_button = st.button("Fetch article")
if fetch_button:
article_url = url
session = requests.Session()
try:
response_ = session.get(article_url, headers=headers_, timeout=10)
if response_.status_code == 200:
with st.spinner('Fetching your article...'):
time.sleep(3)
st.success('Your article is ready for summarization!')
view_button = st.button("View Article")
if view_button:
article = Article(url)
article.download()
article.parse()
title = article.title
text = article.text
html = article.html
st.divider()
st.subheader("Real Article")
st.markdown(f"Your article: **{title}**")
st.markdown(f"**{text}**")
st.divider()
st.divider()
st.subheader("Real Article (HTML)")
st.markdown(f"Your article: **{title}**")
st.markdown(f"**{html}**")
st.divider()
else:
st.write("Error occurred while fetching article.")
except Exception as e:
st.write(f"Error occurred while fetching article: {e}")
# HuggingFace API KEY input
API_KEY = st.text_input("Enter your HuggingFace API key", type="password")
headers = {"Authorization": f"Bearer {API_KEY}"}
# Selectbox to choose between API URLs
selected_api_url = st.selectbox("Select Model", options=["bart-large-cnn", "pegasus_indonesian_base-finetune"])
# Determine the selected Model
if selected_api_url == "bart-large-cnn":
API_URL = "https://api-inference.huggingface.co/models/facebook/bart-large-cnn"
else:
API_URL = "https://api-inference.huggingface.co/models/thonyyy/pegasus_indonesian_base-finetune"
API_URL_TL = "https://api-inference.huggingface.co/models/facebook/mbart-large-50-many-to-many-mmt"
submit_button = st.button("Submit to Summarize")
# Download and parse the article
if submit_button:
article = Article(url)
article.download()
article.parse()
title = article.title
text = article.text
html = article.html
# HuggingFace API request function summary
def query_sum(payload):
response = requests.post(API_URL, headers=headers, json=payload)
return response.json()
with st.spinner('Doing some AI magic, please wait...'):
time.sleep(1)
# Query the API Summary
output_sum = query_sum({"inputs": text, })
# Display the results
summary = output_sum[0]['summary_text'].replace('<n>', " ")
st.divider()
st.subheader("Summary AI")
st.markdown(f"Your article: **{title}**")
st.markdown(f"**{summary}**")
st.divider()
st.subheader("Real Article")
st.markdown(f"Your article: **{title}**")
st.markdown(f"**{text}**")
st.divider()
st.divider()
st.subheader("Real Article")
st.markdown(f"Your article: **{title}**")
st.markdown(f"**{text}**")
st.divider()
st.divider()
st.subheader("Real Article (HTML)")
st.markdown(f"Your article: **{title}**")
st.markdown(f"**{html}**")
st.divider()
|