Вычисление тезисов статей

Я ищу способ автоматического создания абстрактного, в основном первых нескольких предложений/абзацев записи в блоге, для отображения в списке статей (которые написаны в уценке). В настоящее время я делаю что-то вроде этого:

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

чтобы просто захватить первые несколько строк текста, но я не совсем доволен результатами.

То, что я действительно ищу, состоит в том, чтобы в итоге получить 1/3 экрана отформатированного текста, который будет отображаться в списке записей, но используя вышеприведенный алгоритм, количество выталкиваемых заканчивается дико различающимися суммами, так как немного, как линия или две, часто смешивается с рефератами более идеального размера.

Есть ли библиотека, которая хороша в этом? если нет, есть ли у вас предложения по улучшению вывода?

2 ответа

EDIT:

Вы можете сделать что-то вроде этого:

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 для получения идеальной длины текста. Он разбивает текст на строки размера экрана и использует их для вычисления длины желаемого количества строк.

Например, применяя этот алгоритм на странице pikon wikipedia:

print getAbstract(text, lines=7)

предоставит вам этот результат:

Python - это универсальный высокоуровневый язык программирования. 2 Его дизайн философия подчеркивает код читаемость. [3] Python утверждает, что "[сочетать] замечательную силу с очень четкий синтаксис", [4] и его стандарт библиотека большая и всеобъемлющая. Его использование отступов как блока разделители необычны среди популярных языков программирования.

Python поддерживает несколько программ парадигмы (прежде всего объектно-ориентированные, императивный и функциональный) и имеет полностью динамическую систему типов и автоматическое управление памятью, аналогично Perl, Ruby, Scheme и Tcl. Как и другие динамические языки, Python часто используется в качестве скрипта...

Без дальнейших подробностей вам сложно помочь. Но если ваша проблема заключалась в том, что для первых строк было слишком много строк, вам может потребоваться посмотреть textwrap

Например, если вам нужны только тезисы из 100 символов, вы можете сделать следующее:

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

Это также заменит новые строки пробелами, которые могут быть желательными в зависимости от ваших требований.


Я не совсем уверен, чего вы хотите.

Однако я бы предложил сократить статью после X символов и поставить "...". Затем у вас больше контроля над размером вашего "абстрактного" (если это вас беспокоит в текущей реализации).

licensed under cc by-sa 3.0 with attribution.