blacksmithop's picture
Create app.py
e0c9218 verified
import gradio as gr
import pandas as pd
from utils import get_textrank_summary
def textrank_summarizer(text, level, max_tokens, verbose):
summary, verbose_info = get_textrank_summary(text=text, level=level, token_count=max_tokens, verbose=verbose)
return summary, verbose_info
def option2_summarizer(text, max_tokens):
return f"[Option2 Summary]\n{text[:max_tokens]}...", ""
def option3_summarizer(text, max_tokens):
return f"[Option3 Summary]\n{text[:max_tokens]}...", ""
def summarize_text(text, method, level, max_tokens, verbose):
if method == "TextRank":
return textrank_summarizer(text, level, max_tokens, verbose)
elif method == "Option2":
return option2_summarizer(text, max_tokens)
elif method == "Option3":
return option3_summarizer(text, max_tokens)
return "Invalid method selected.", "Invalid method selected."
def process_file(file, method, level, max_tokens, verbose):
try:
if file.name.endswith(".csv"):
df = pd.read_csv(file.name)
elif file.name.endswith(".xlsx"):
df = pd.read_excel(file.name)
else:
return "Unsupported file format.", ""
summaries = []
logs = []
for column in df.columns:
column_summary, verbose_log = summarize_text(
" ".join(df[column].astype(str).tolist()),
method, level, max_tokens, verbose
)
summaries.append({"Column": column, "Summary": column_summary})
logs.append(f"Column: {column}\n{verbose_log}")
return pd.DataFrame(summaries), "\n\n".join(logs)
except Exception as e:
return f"Error processing file: {e}", ""
with gr.Blocks() as demo:
with gr.Tabs():
with gr.TabItem("Text Summarization"):
text_input = gr.TextArea(label="Text", placeholder="Enter your text here...", lines=5)
summarization_method = gr.Radio([
"TextRank", "Option2", "Option3"
], value="TextRank", label="Summarization Method")
level_selector = gr.Radio([
"sentence", "paragraph"
], value="sentence", label="Level", visible=True)
max_tokens_slider = gr.Slider(0, 4096, value=100, label="Max Tokens")
verbose_checkbox = gr.Checkbox(label="Verbose Mode", value=False)
summarize_button = gr.Button("Summarize", interactive=False)
output = gr.TextArea(label="Summary", interactive=False, lines=5, show_copy_button=True)
verbose_output = gr.Markdown(label="Verbose Logs")
def toggle_level_selector(method):
return gr.update(visible=(method == "TextRank"))
def toggle_summarize_button(method):
return gr.update(interactive=(len(method) != 0))
def toggle_verbose_logs(verbose_mode):
return gr.update(visible=verbose_mode)
summarization_method.change(toggle_level_selector, inputs=summarization_method, outputs=level_selector)
text_input.change(toggle_summarize_button, inputs=text_input, outputs=summarize_button)
verbose_checkbox.change(toggle_verbose_logs, inputs=verbose_checkbox, outputs=verbose_output)
summarize_button.click(
summarize_text,
inputs=[text_input, summarization_method, level_selector, max_tokens_slider, verbose_checkbox],
outputs=[output, verbose_output],
show_progress=True
)
with gr.TabItem("File Processing"):
file_input = gr.File(label="Upload File (xlsx, csv)")
summarization_method_file = gr.Radio([
"TextRank", "Option2", "Option3"
], value="TextRank", label="Summarization Method")
level_selector_file = gr.Radio([
"sentence", "paragraph"
], value="sentence", label="Level", visible=True)
max_tokens_slider_file = gr.Slider(0, 4096, value=100, label="Max Tokens")
verbose_checkbox_file = gr.Checkbox(label="Verbose Mode", value=False)
load_button = gr.Button("Load and Process")
file_output = gr.Dataframe()
verbose_file_output = gr.TextArea(label="Verbose Logs", interactive=False, lines=10)
def toggle_level_selector_file(method):
return gr.update(visible=(method == "TextRank"))
summarization_method_file.change(toggle_level_selector_file, inputs=summarization_method_file, outputs=level_selector_file)
load_button.click(
process_file,
inputs=[file_input, summarization_method_file, level_selector_file, max_tokens_slider_file, verbose_checkbox_file],
outputs=[file_output, verbose_file_output],
show_progress=True
)
demo.launch()