Summary
The Summary pipeline summarizes text. This pipeline runs a text2text model that abstractively creates a summary of the input text.
Example
The following shows a simple example using this pipeline.
from txtai.pipeline import Summary
# Create and run pipeline
summary = Summary()
summary("Enter long, detailed text to summarize here")
See the link below for a more detailed example.
Notebook | Description | |
---|---|---|
Building abstractive text summaries | Run abstractive text summarization |
Configuration-driven example
Pipelines are run with Python or configuration. Pipelines can be instantiated in configuration using the lower case name of the pipeline. Configuration-driven pipelines are run with workflows or the API.
config.yml
# Create pipeline using lower case class name
summary:
# Run pipeline with workflow
workflow:
summary:
tasks:
- action: summary
Run with Workflows
from txtai.app import Application
# Create and run pipeline with workflow
app = Application("config.yml")
list(app.workflow("summary", ["Enter long, detailed text to summarize here"]))
Run with API
CONFIG=config.yml uvicorn "txtai.api:app" &
curl \
-X POST "http://localhost:8000/workflow" \
-H "Content-Type: application/json" \
-d '{"name":"summary", "elements":["Enter long, detailed text to summarize here"]}'
Methods
Python documentation for the pipeline.
__init__(self, path=None, quantize=False, gpu=True, model=None)
special
Source code in txtai/pipeline/text/summary.py
def __init__(self, path=None, quantize=False, gpu=True, model=None):
super().__init__("summarization", path, quantize, gpu, model)
__call__(self, text, minlength=None, maxlength=None, workers=0)
special
Runs a summarization model against a block of text.
This method supports text as a string or a list. If the input is a string, the return type is text. If text is a list, a list of text is returned with a row per block of text.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
text | text|list | required | |
minlength | minimum length for summary | None | |
maxlength | maximum length for summary | None | |
workers | number of concurrent workers to use for processing data, defaults to None | 0 |
Returns:
Type | Description |
---|---|
summary text |
Source code in txtai/pipeline/text/summary.py
def __call__(self, text, minlength=None, maxlength=None, workers=0):
"""
Runs a summarization model against a block of text.
This method supports text as a string or a list. If the input is a string, the return
type is text. If text is a list, a list of text is returned with a row per block of text.
Args:
text: text|list
minlength: minimum length for summary
maxlength: maximum length for summary
workers: number of concurrent workers to use for processing data, defaults to None
Returns:
summary text
"""
# Validate text length greater than max length
check = maxlength if maxlength else self.maxlength()
# Skip text shorter than max length
texts = text if isinstance(text, list) else [text]
params = [(x, text if len(text) >= check else None) for x, text in enumerate(texts)]
# Build keyword arguments
kwargs = self.args(minlength, maxlength)
inputs = [text for _, text in params if text]
if inputs:
# Run summarization pipeline
results = self.pipeline(inputs, num_workers=workers, **kwargs)
# Pull out summary text
results = iter([self.clean(x["summary_text"]) for x in results])
results = [next(results) if text else texts[x] for x, text in params]
else:
# Return original
results = texts
return results[0] if isinstance(text, str) else results