Meta_UI / app.py
dishathokal's picture
Upload 2 files
05a2d1c
import streamlit as st
import openai
import nltk
nltk.download('punkt')
import PyPDF2
import string
# st.write("ok")
# Set up OpenAI API credentials
openai.api_key = "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"
def read_pdf(fname):
reader = PyPDF2.PdfReader(fname)
text_ext = []
for i in range(len(reader.pages)):
pageObj = reader.pages[i]
# extracting text from page
text_ext.append(pageObj.extract_text())
return text_ext
def clean_text(text):
if isinstance(text, list):
text = " ".join(text)
text = text.lower()
text = text.translate(str.maketrans("", "", string.punctuation))
text = " ".join(text.split())
return text
def generate_keywords(text):
num_keywords = 6
cleaned_text = text.strip()
response = openai.Completion.create(
engine="text-davinci-002",
prompt=f"What are {num_keywords} highly related keywords for the following text?\n{cleaned_text}\n\nKeywords:",
max_tokens=50,
n=1,
stop=None,
temperature=0.5,
best_of=num_keywords,
)
generated_text = response.choices[0].text.strip()
keywords = generated_text.split(',')
st.write("Top Keywords:")
for i, keyword in enumerate(keywords[:num_keywords]):
st.write(f"{i+1}. {keyword.strip()}")
def generate_summary(text):
summary_length = 2
cleaned_text = text.strip()
response = openai.Completion.create(
engine="text-davinci-002",
prompt=f"Please summarize the following text in {summary_length} sentences:\n{cleaned_text}\n\nSummary:",
max_tokens=100,
n=1,
stop=None,
temperature=0.5,
)
generated_text = response.choices[0].text.strip()
st.write("Description:")
sentences = nltk.sent_tokenize(generated_text)
for sentence in sentences:
st.write(sentence)
# Main Streamlit app
st.title("Meta Magic")
uploaded_file = st.file_uploader("Choose a PDF file", type="pdf")
if uploaded_file is not None:
# Read PDF file and extract text
pages = read_pdf(uploaded_file)
text = clean_text(pages)
# Generate keywords and summary
if st.button("Generate Keywords"):
generate_keywords(text)
if st.button("Generate Summary"):
generate_summary(text)