python | sumy,一个超酷的 用于文本摘要的 Python 库!

本文来源公众号“python”,仅用于学术分享,侵权删,干货满满。

原文链接:sumy,一个超酷的 Python 库!

大家好,今天为大家分享一个超酷的 Python 库 - sumy。

Github地址:https://github.com/miso-belica/sumy

在信息爆炸的时代,如何快速提取有价值的信息是一个重要的课题。文本摘要技术能够自动从文本中提取关键内容,为用户节省时间和精力。sumy 是一个用于文本摘要的 Python 库,它提供了多种算法来生成摘要,支持多种语言,是一个简单而强大的工具。本文将详细介绍 sumy 库,包括其安装方法、主要特性、基本和高级功能,以及实际应用场景,帮助全面了解并掌握该库的使用。

安装

要使用 sumy 库,首先需要安装它。以下是安装步骤:

使用 pip 安装

可以通过 pip 直接安装 sumy

pip install sumy

安装依赖项

sumy 依赖于一些其他库,如 nltknumpy,这些依赖项可以通过以下命令安装:

pip install nltk numpy

下载 NLTK 数据

sumy 使用 nltk 进行文本处理,因此需要下载 nltk 的一些数据包:

import nltk
nltk.download('punkt')

特性

  1. 多种摘要算法:支持多种文本摘要算法,包括 LexRank、Lsa、TextRank、Luhn 和 Edmundson。

  2. 多语言支持:支持多种语言的文本摘要,如英语、法语、德语、中文等。

  3. 易于使用:提供简单的 API,可以快速上手。

  4. 可扩展性强:支持自定义处理和扩展,满足特定需求。

基本功能

生成英文文本摘要

可以使用 sumy 生成英文文本的摘要:

from sumy.parsers.plaintext import PlaintextParser
from sumy.nlp.tokenizers import Tokenizer
from sumy.summarizers.lsa import LsaSummarizer

# 输入文本
text = """
Natural language processing (NLP) is a subfield of linguistics, computer science, and artificial intelligence
concerned with the interactions between computers and human language, in particular how to program computers to process
and analyze large amounts of natural language data. The result is a computer capable of "understanding" the contents
of documents, including the contextual nuances of the language within them. The technology can then accurately extract
information and insights contained in the documents as well as categorize and organize the documents themselves.
"""

# 解析文本
parser = PlaintextParser.from_string(text, Tokenizer("english"))
summarizer = LsaSummarizer()

# 生成摘要
summary = summarizer(parser.document, 2)
for sentence in summary:
    print(sentence)

生成中文文本摘要

可以使用 sumy 生成中文文本的摘要:

from sumy.parsers.plaintext import PlaintextParser
from sumy.nlp.tokenizers import Tokenizer
from sumy.summarizers.lsa import LsaSummarizer

# 输入中文文本
text = """
自然语言处理(NLP)是计算机科学、人工智能和语言学领域的一个子领域,研究计算机与人类语言之间的相互作用,特别是如何编程以处理和分析大规模的自然语言数据。
最终目标是使计算机能够“理解”文档的内容,包括其中的语言细微差别。该技术可以准确地提取文档中包含的信息和见解,并对文档进行分类和组织。
"""

# 解析文本
parser = PlaintextParser.from_string(text, Tokenizer("chinese"))
summarizer = LsaSummarizer()

# 生成摘要
summary = summarizer(parser.document, 2)
for sentence in summary:
    print(sentence)

使用不同的摘要算法

sumy 支持多种摘要算法,可以根据需求选择不同的算法生成摘要:

from sumy.summarizers.luhn import LuhnSummarizer
from sumy.summarizers.edmundson import EdmundsonSummarizer

# 使用 Luhn 算法生成摘要
luhn_summarizer = LuhnSummarizer()
summary = luhn_summarizer(parser.document, 2)
for sentence in summary:
    print(sentence)

# 使用 Edmundson 算法生成摘要
edmundson_summarizer = EdmundsonSummarizer()
summary = edmundson_summarizer(parser.document, 2)
for sentence in summary:
    print(sentence)

高级功能

自定义关键词和句子评分

可以使用 Edmundson 算法自定义关键词和句子评分,生成更符合需求的摘要:

from sumy.nlp.stemmers import Stemmer
from sumy.summarizers.edmundson import EdmundsonSummarizer

# 初始化 EdmundsonSummarizer
stemmer = Stemmer("english")
summarizer = EdmundsonSummarizer(stemmer)

# 设置自定义关键词和评分
summarizer.bonus_words = ["NLP", "language"]
summarizer.stigma_words = ["computer", "data"]
summarizer.null_words = ["is", "a", "of"]

# 生成摘要
summary = summarizer(parser.document, 2)
for sentence in summary:
    print(sentence)

处理 HTML 文档

sumy 可以直接处理 HTML 文档,提取其中的文本并生成摘要:

from sumy.parsers.html import HtmlParser

# 输入 HTML 文档
url = "https://example.com/article"
parser = HtmlParser.from_url(url, Tokenizer("english"))

# 使用 LexRank 算法生成摘要
from sumy.summarizers.lex_rank import LexRankSummarizer
summarizer = LexRankSummarizer()

summary = summarizer(parser.document, 2)
for sentence in summary:
    print(sentence)

多语言支持

sumy 支持多种语言的文本摘要,只需指定相应的语言即可:

# 处理法语文本
from sumy.nlp.tokenizers import Tokenizer
from sumy.summarizers.text_rank import TextRankSummarizer

text = """
Le traitement automatique des langues (TAL) est un domaine interdisciplinaire de l'informatique, de l'intelligence artificielle
et de la linguistique qui concerne les interactions entre les ordinateurs et les langues naturelles. Le but ultime est de permettre
aux ordinateurs de comprendre, interpréter et manipuler le langage humain de manière utile.
"""

parser = PlaintextParser.from_string(text, Tokenizer("french"))
summarizer = TextRankSummarizer()

summary = summarizer(parser.document, 2)
for sentence in summary:
    print(sentence)

实际应用场景

新闻摘要生成

在新闻门户网站上,通过 sumy 提取新闻文章的关键内容,为用户提供简洁的新闻摘要。

from sumy.parsers.html import HtmlParser
from sumy.nlp.tokenizers import Tokenizer
from sumy.summarizers.text_rank import TextRankSummarizer

# 输入新闻文章 URL
url = "https://news.example.com/article"
parser = HtmlParser.from_url(url, Tokenizer("english"))
summarizer = TextRankSummarizer()

# 生成新闻摘要
summary = summarizer(parser.document, 3)
for sentence in summary:
    print(sentence)

文献综述生成

在学术研究中,通过 sumy 提取文献的关键内容,帮助研究人员快速了解文献的主要观点。

from sumy.parsers.plaintext import PlaintextParser
from sumy.nlp.tokenizers import Tokenizer
from sumy.summarizers.lex_rank import LexRankSummarizer

# 输入文献内容
text = """
The field of natural language processing (NLP) has seen significant advancements in recent years. With the advent of deep learning,
NLP has achieved new heights in various applications such as machine translation, sentiment analysis, and text summarization. This paper
reviews the recent progress in NLP, highlighting key techniques and models that have contributed to its success.
"""

parser = PlaintextParser.from_string(text, Tokenizer("english"))
summarizer = LexRankSummarizer()

# 生成文献综述
summary = summarizer(parser.document, 3)
for sentence in summary:
    print(sentence)

客户评论分析

在电商平台上,通过 sumy 提取客户评论的关键内容,帮助商家快速了解客户反馈。

from sumy.parsers.plaintext import PlaintextParser
from sumy.nlp.tokenizers import Tokenizer
from sumy.summarizers.luhn import LuhnSummarizer

# 输入客户评论
text = """
This product is amazing! It has exceeded my expectations in every way. The build quality is superb, and the features are outstanding.
I would highly recommend this product to anyone looking for a high-quality item. However, the shipping was a bit slow, and the customer
service could be improved.
"""

parser = PlaintextParser.from_string(text, Tokenizer("english"))
summarizer = LuhnSummarizer()

# 生成评论摘要
summary = summarizer(parser.document, 2)
for sentence in summary:
    print(sentence)

总结

sumy 库是一个功能强大且易于使用的文本摘要工具,能够帮助开发者在各种应用场景中高效地提取文本的关键内容。通过支持多种摘要算法、多语言支持、易于使用和灵活扩展,sumy 提供了强大的功能和灵活的扩展能力。本文详细介绍了 sumy 库的安装方法、主要特性、基本和高级功能,以及实际应用场景。希望本文能帮助大家全面掌握 sumy 库的使用,并在实际项目中发挥其优势。无论是在新闻摘要、文献综述还是客户评论分析中,sumy 库都将是一个得力的工具。

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值