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的好文章: