简单介绍Python实现文章摘要提取的方法,实例分析了Python提取文章摘要的原理与实现技巧,具体如下:

二、纯文本摘要

纯文本文档 就是一个长字符串,很容易实现对它的摘要提取:#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""Get a summary of the TEXT-format document"""

def get_summary(text, count):

u"""Get the first `count` characters from `text`

>>> text = u'Welcome 这是一篇关于Python的文章'

>>> get_summary(text, 12) == u'Welcome 这是一篇'

True

"""

assert(isinstance(text, unicode))

return text[0:count]

if __name__ == '__main__':

import doctest

doctest.testmod()

三、HTML摘要

HTML文档 中包含大量标记符(如

、等等),这些字符都是标记指令,并且通常是成对出现的,简单的文本截取会破坏HTML的文档结构,进而导致摘要在浏览器中显示不当。

在遵循HTML文档结构的同时,又要对内容进行截取,就需要解析HTML文档。在Python中,可以借助标准库 HTMLParser 来完成。

一个最简单的摘要提取功能,是忽略HTML标记符而只提取标记内部的原生文本。以下就是类似该功能的Python实现:#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""Get a raw summary of the HTML-format document"""

from HTMLParser import HTMLParser

class SummaryHTMLParser(HTMLParser):

"""Parse HTML text to get a summary

>>> text = u'

Hi guys:

This is a example using SummaryHTMLParser.

'

>>> parser = SummaryHTMLParser(10)

>>> parser.feed(text)

>>> parser.get_summary(u'...')

u'

Higuys:Thi...

'

"""

def __init__(self, count):

HTMLParser.__init__(self)

self.count = count

self.summary = u''

def feed(self, data):

"""Only accept unicode `data`"""

assert(isinstance(data, unicode))

HTMLParser.feed(self, data)

def handle_data(self, data):

more = self.count - len(self.summary)

if more > 0:

# Remove possible whitespaces in `data`

data_without_whitespace = u''.join(data.split())

self.summary += data_without_whitespace[0:more]

def get_summary(self, suffix=u'', wrapper=u'p'):

return u'{1}{2}{0}>'.format(wrapper, self.summary, suffix)

if __name__ == '__main__':

import doctest

doctest.testmod()

HTMLParser(或者 BeautifulSoup 等等)更适合完成复杂的HTML摘要提取功能,对于上述简单的HTML摘要提取功能,其实有更简洁的实现方案(相比 SummaryHTMLParser 而言):#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""Get a raw summary of the HTML-format document"""

import re

def get_summary(text, count, suffix=u'', wrapper=u'p'):

"""A simpler implementation (vs `SummaryHTMLParser`).

>>> text = u'

Hi guys:

This is a example using SummaryHTMLParser.

'

>>> get_summary(text, 10, u'...')

u'

Higuys:Thi...

'

"""

assert(isinstance(text, unicode))

summary = re.sub(r'<.>', u'', text) # key difference: use regex

summary = u''.join(summary.split())[0:count]

return u'{1}{2}{0}>'.format(wrapper, summary, suffix)

if __name__ == '__main__':

import doctest

doctest.testmod()

基于python的论文摘要怎么写_Python实现文章摘要的提取方式相关推荐

  1. 基于python的论文摘要怎么写_Django显示文章摘要需要如何写

    需要在blog主页显示文章的摘要, 即显示文章的前面一部分. 在django中, 我尝试过以下做法: article|safe|truncatechars:100 // 截取文章的前100个单词 但问 ...

  2. 基于Python长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析等领域中的应用实践技术

    查看原文>>>基于Python长时间序列遥感数据处理及在全球变化.物候提取.植被变绿与固碳分析.生物量估算与趋势分析等领域中的应用实践 目录 专题一.长时序遥感产品在全球变化/植被变 ...

  3. 基于python的论文分析_【论文实现】一篇Sigkdd的弹幕分析论文的python实现【LDA 实践者】...

    [论文实现]一篇Sigkdd的弹幕分析论文的python实现 [LDA 实践者] Author : Jasper Yang School : Bupt warning : 此篇文章基于较为熟悉Gibb ...

  4. python代码说明文档怎么写_Python写完代码怎么用

    Python写完代码怎么用 python运行有两种方式,一种是在python交互式命令行下运行:另一种是使用文本编辑器,在命令行中直接运行. 一.命令行与交互式命令行 首先要搞清楚这个命令行的概念. ...

  5. python从第二行开始写_Python第2课 - 第一个Python程序

    在本节课中,你将运行自己的第一个程序 -- hello_world.py.在这之前,需要熟悉两个概念:命令行模式和Python交互模式.同时掌握输入和输出. 1. 命令行模式和Python交互模式 1 ...

  6. 基于Python的离线OCR图片文字识别(一)——命令行方式对图像文件处理生成同名txt文件

    应用背景:在正式开始文章之前,先阐述一下项目的应用背景--项目需要对已有的电子档案数据进行"大数据"处理和呈现,但是由于之前进行档案电子化时都是以扫描文件的图像格式存储在硬盘上(准 ...

  7. 基于Python长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析

    植被是陆地生态系统中最重要的组分之一,也是对气候变化最敏感的组分,其在全球变化过程中起着重要作用,能够指示自然环境中的大气.水.土壤等成分的变化,其年际和季节性变化可以作为地球气候变化的重要指标.此外 ...

  8. 基于 Python 长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析等领域中的应用

    植被是陆地生态系统中最重要的组分之一,也是对气候变化最敏感的组分,其在全球变化过程中起着重要作用,能够指示自然环境中的大气.水.土壤等成分的变化,其年际和季节性变化可以作为地球气候变化的重要指标.此外 ...

  9. php文章摘要,PHP:如何生成文章摘要

    2017年第一篇日志,今天来说说一个我觉得很有意思的东西,文章摘要的生成.主要利用到了正则匹配来完成,下面来详细说说原理. 问题 生成文章摘要,就像下面的图片显示的一样, 困难有如下两点: 汉字的截取 ...

  10. python爬虫论文摘要怎么写_Python爬虫根据关键词爬取知网论文摘要并保存到数据库中【入门必学】...

    搜索出来的结果和知网上的结果几乎一样,另外以后面试找Python工作,项目经验展示是核心,如果你缺项目练习,去小编的Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面很多新 ...

最新文章

  1. 怎么在手机上下载python模块_python下载模块然后怎么安装
  2. Microsoft Dynamics CRM 2011中,Lookup字段的赋值
  3. spring mvc DispatcherServlet详解之二---request通过Controller获取ModelAndView过程
  4. linux用户管理常用命令
  5. python实现监控增量_Python 快速计算增量的方法
  6. RabbitMQ的元数据重建
  7. “约见”面试官系列之常见面试题第三十四篇之事件冒泡、事件捕获、事件代理(建议收藏)
  8. 在C#中使用C++编写的类
  9. php黑名单,php IP黑名单
  10. 孙鑫VC学习笔记:第九讲 界面修改,工具栏,状态栏,启动画面的制作
  11. linux网络编程之:UDP数据包格式
  12. iozone使用简介
  13. MVG基站天线测量系统获盛路通信选用
  14. winapi检测鼠标是否在任务栏
  15. API的理解和使用——全局命令
  16. 用python画竹子_基于Python的一个简单爬虫(糗事百科爬虫)
  17. Windows如何强制关闭电脑全部代理
  18. MIT推出3D全息图生成新方法,可在智能手机上实时运行
  19. C#一元一次算法求解
  20. 拿走不谢!固件逆向分析过程中的工具和技巧(上)

热门文章

  1. 维基百科数据导入mysql数据库并进行检索操作
  2. 关于升级短信源码开发接入SMPP通道
  3. 一位SAP培训顾问的建议:SAP HANA应该如何学习?
  4. 常用元器件的识别与使用(电阻、电容、电感)
  5. C++之个人银行账户管理程序
  6. 台式机装苹果系统_AMD台式机装苹果系统!!
  7. 茶叶的基本知识,喝茶的好处和坏处
  8. M1 Pro 折腾一年的心得:一堆很“哇塞”的技巧和 App
  9. ElasticSearch 中文同义词实现
  10. 移动端百度点击软件操作方法及常见问题