📅  最后修改于: 2023-12-03 15:35:11.317000             🧑  作者: Mango
Sumy 是一个 Python 库,它可以帮助你自动地从文本中提取出最重要的句子或者段落,生成文本摘要或关键词,或者提取新闻文章或论文等文本摘要。Sumy 库依据多种算法根据文本内容,抽取出其中最具代表性、最能概括文章主旨的关键字句,是在处理大量文本中自动提取关键信息的有效工具。
你可以使用 pip 命令来安装 Sumy 库,如下所示:
pip install sumy
Sumy 库支持多种摘要生成算法(如 LSA、TextRank、KL-Sum、LexRank 等),你可以根据你的需求选择适合自己的算法,在代码中调用摘要生成函数来实现文本自动摘要。
from sumy.parsers.html import HtmlParser
from sumy.nlp.tokenizers import Tokenizer
from sumy.summarizers.lsa import LsaSummarizer
url = "http://www.example.com/news/article0001.html"
parser = HtmlParser.from_url(url, Tokenizer("english"))
summarizer = LsaSummarizer()
from sumy.parsers.plaintext import PlaintextParser
from sumy.summarizers.lsa import LsaSummarizer
from sumy.nlp.tokenizers import Tokenizer
parser = PlaintextParser.from_string(text, Tokenizer("english"))
summarizer = LsaSummarizer()
summary = summarizer(parser.document, 3)
from sumy.parsers.plaintext import PlaintextParser
from sumy.summarizers.lsa import LsaSummarizer
from sumy.nlp.tokenizers import Tokenizer
parser = PlaintextParser.from_file("document.txt", Tokenizer("english"))
summarizer = LsaSummarizer()
summary = summarizer(parser.document, 3)
生成的摘要可以返回给用户或者记录在数据库中以备后续使用。
Sumy 库中的摘要算法有以下几种:
LSA 通过计算词汇在文本中出现的频率来生成一个词汇关系矩阵,并对该矩阵进行奇异值分解并留下最大的 K 个奇异值,然后重新生成一个新的矩阵,该矩阵包含相似的主题。通过计算每个句子向量和相似主题之间的权重来确定最终的摘要。
TextRank 通过计算句子之间的相似度来生成一张句子之间的图,使用 PageRank 算法计算每个节点的排名。排名较高的句子会被选中作为摘要的一部分。
KL-Sum 旨在用最小化摘要与原始文本之间的 KL 散度来确定摘要内容。该摘要算法通过计算句子与摘要之间的 KL 散度来评估句子的相关性。根据相关性对每个句子进行评分,然后选择最相关的句子作为摘要的一部分。
LexRank 与 TextRank 类似,只是它计算句子之间的余弦相似度,在句子之间建立一个无向图。LexRank 还使用了一些 Pagerank 的修正算法来减少冗余度。
Sumy 库是一个非常有用的工具,在处理大量文本相关任务中自动提取关键信息,应用非常广泛。学会使用 Sumy 库可以大大提高编写自然语言处理应用的效率和准确性。