Python 计算机文章摘要

Python 计算机文章摘要,python,markdown,Python,Markdown,我正在寻找一种自动生成摘要的方法,基本上是博客条目的前几个句子/段落,以显示在文章列表中(以降价方式编写)。目前,我正在做这样的事情: def abstract(article, paras=3): return '\n'.join(article.split('\n')[0:paras]) from textwrap import wrap def getAbstract(text, lines=5, screenwidth=100): width = len(' '.jo

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

def abstract(article, paras=3):
    return '\n'.join(article.split('\n')[0:paras])
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] + '...'
只需要抓取前几行文字,但我对结果并不完全满意

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


有哪家图书馆擅长这方面的工作?如果没有,您有什么改进输出的建议吗?

我不太确定您想要什么

然而,我建议在X个字符后删掉这篇文章,并加上“…”。然后,您可以更好地控制“摘要”的大小(如果这是当前实现中困扰您的问题)。

编辑:

您可以这样做:

def abstract(article, paras=3):
    return '\n'.join(article.split('\n')[0:paras])
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] + '...'
这利用textwrap算法获得理想的文本长度。它会将文本分成屏幕大小的行,并使用它们来计算所需行数的长度

例如,在条目上应用此算法:

将为您提供以下输出:

Python是一种通用的高级语言 编程语言。它的设计 哲学强调代码 可读性。[3]Python声称 “[结合]卓越的力量和非常 清晰语法“,[4]及其标准 图书馆规模大,综合性强。 它使用压痕作为块 分隔符在流行语言中是不常见的 编程语言

Python支持多种编程 范例(主要是面向对象的, 命令式、功能性)和 具有全动态类型系统 和自动内存管理, 类似于Perl、Ruby、Scheme和 Tcl。像其他动态语言一样, Python经常被用作脚本


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

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

import textwrap

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

这也将用空格取代换行符,根据您的要求,空格可能是可取的。

什么是“不完全满意”呢?你能举出“错误”和“正确”摘要的例子吗?Doug Hellman在他的每周Python模块博客中也有一篇关于textwrap的好文章: