Spaces:
Sleeping
Sleeping
File size: 1,882 Bytes
52d4ec9 793bade 52d4ec9 793bade 52d4ec9 793bade 52d4ec9 793bade 52d4ec9 793bade 52d4ec9 793bade 52d4ec9 793bade 52d4ec9 793bade 52d4ec9 793bade 52d4ec9 793bade |
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 |
import streamlit as st
from datasets import load_dataset
from transformers import pipeline
from langchain.prompts.few_shot import FewShotChatMessagePromptTemplate
from langchain.prompts.example_selector import LengthBasedExampleSelector
# Load dataset (small subset)
@st.cache_data
def load_examples():
dataset = load_dataset("knkarthick/dialogsum", split="train[:5]") # Take only 5 for speed
examples = []
for example in dataset:
examples.append({
"input": example["dialogue"],
"output": example["summary"]
})
return examples
examples = load_examples()
# Set up the summarization model
summarizer = pipeline("summarization", model="t5-small")
# Few-shot prompt template
example_prompt = FewShotChatMessagePromptTemplate.from_examples(
examples=examples,
example_selector=LengthBasedExampleSelector(examples=examples, max_length=1000),
input_variables=["input"],
prefix="You are a helpful assistant that summarizes dialogues. Examples:",
suffix="Now summarize this:\n{input}"
)
# Streamlit UI
st.title("π¬ Dialogue Summarizer using Few-Shot Prompt + T5")
input_text = st.text_area("π Paste your conversation:")
if st.button("Generate Summary"):
if input_text.strip():
# Create prompt
messages = example_prompt.format_messages(input=input_text)
with st.expander("π Generated Prompt"):
for msg in messages:
st.markdown(f"**{msg.type.upper()}**:\n```\n{msg.content}\n```")
# Generate summary using model
full_prompt = "\n".join([m.content for m in messages if m.type == "human"])
summary = summarizer("summarize: " + input_text, max_length=80, min_length=15, do_sample=False)[0]['summary_text']
st.success("β
Summary:")
st.write(summary)
else:
st.warning("Please enter some text.")
|