计算文章摘要

2024-06-02 06:09:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一种方法来自动生成一个摘要,基本上是博客条目的前几个句子/段落,以显示在文章列表中(这些文章是用markdown编写的)。目前,我正在做这样的事情:

def abstract(article, paras=3):
    return '\n'.join(article.split('\n')[0:paras])

只是抓取文本的前几行,但我对结果不太满意。在

我真正想要的是在条目列表中显示大约1/3的格式化文本,但是使用上面的算法,提取的数量最终会有很大的变化,只有一两行,常常与更理想大小的摘要混合在一起。在

有没有图书馆擅长这种事?如果没有,你有什么改进产出的建议吗?在


Tags: 方法文本目的abstract列表returndefarticle
2条回答

编辑:

你可以这样做:

from textwrap import wrap

def getAbstract(text, lines=5, screenwidth=100):
    width = len(' '.join([
               line for block in text.splitlines()
               for line in wrap(block, width=screenwidth)
            ][:lines]))
    return text[:width] + '...'

这将使用textwap算法来获得理想的文本长度。它将文本分成屏幕大小的行,并使用它们计算所需行数的长度。在

例如,在python wikipedia page项上应用此算法:

^{pr2}$

将为您提供以下输出:

Python is a general-purpose high-level programming language.2 Its design philosophy emphasizes code readability.[3] Python claims to "[combine] remarkable power with very clear syntax",[4] and its standard library is large and comprehensive. Its use of indentation as block delimiters is unusual among popular programming languages.

Python supports multiple programming paradigms (primarily object oriented, imperative, and functional) and features a fully dynamic type system and automatic memory management, similar to Perl, Ruby, Scheme, and Tcl. Like other dynamic languages, Python is often used as a scripting...


没有进一步的细节,很难帮助你。但是如果您的问题是,对于某些条目来说,使用前几行太多,那么您可能需要查看一下textwrap

例如,如果只需要100个字符的摘要,可以执行以下操作:

import textwrap

abstract = textwrap.wrap(text, 100)[0]

这也将用空格代替换行符,根据您的需求,这些空格可能是理想的。在

我不太确定你想要什么。在

不过,我建议把文章删去X个字符后,加上“…”。然后,您可以更好地控制“抽象”的大小(如果这是当前实现中困扰您的问题)。在

相关问题 更多 >