📜  sumy 库 (1)

📅  最后修改于: 2023-12-03 15:35:11.317000             🧑  作者: Mango

Sumy 库介绍

Sumy 是一个 Python 库,它可以帮助你自动地从文本中提取出最重要的句子或者段落,生成文本摘要或关键词,或者提取新闻文章或论文等文本摘要。Sumy 库依据多种算法根据文本内容,抽取出其中最具代表性、最能概括文章主旨的关键字句,是在处理大量文本中自动提取关键信息的有效工具。

安装 Sumy 库

你可以使用 pip 命令来安装 Sumy 库,如下所示:

pip install sumy
使用 Sumy 库

Sumy 库支持多种摘要生成算法(如 LSA、TextRank、KL-Sum、LexRank 等),你可以根据你的需求选择适合自己的算法,在代码中调用摘要生成函数来实现文本自动摘要。

初始化一个 Sumy 摘要生成器:

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 库中的摘要算法有以下几种:

  1. LSA(Latent Semantic Analysis)

LSA 通过计算词汇在文本中出现的频率来生成一个词汇关系矩阵,并对该矩阵进行奇异值分解并留下最大的 K 个奇异值,然后重新生成一个新的矩阵,该矩阵包含相似的主题。通过计算每个句子向量和相似主题之间的权重来确定最终的摘要。

  1. TextRank

TextRank 通过计算句子之间的相似度来生成一张句子之间的图,使用 PageRank 算法计算每个节点的排名。排名较高的句子会被选中作为摘要的一部分。

  1. KL-Sum(Kullback-Leibler divergence Summarization)

KL-Sum 旨在用最小化摘要与原始文本之间的 KL 散度来确定摘要内容。该摘要算法通过计算句子与摘要之间的 KL 散度来评估句子的相关性。根据相关性对每个句子进行评分,然后选择最相关的句子作为摘要的一部分。

  1. LexRank

LexRank 与 TextRank 类似,只是它计算句子之间的余弦相似度,在句子之间建立一个无向图。LexRank 还使用了一些 Pagerank 的修正算法来减少冗余度。

结论

Sumy 库是一个非常有用的工具,在处理大量文本相关任务中自动提取关键信息,应用非常广泛。学会使用 Sumy 库可以大大提高编写自然语言处理应用的效率和准确性。