python根据文章标题内容自动生成摘要的实例

下面我将为你详细讲解如何实现“python根据文章标题内容自动生成摘要”的方法:

1. 安装依赖库

我们需要安装python中的一个依赖库——gensim,用于进行文本相似性计算。在终端中输入以下命令进行安装:

pip install gensim

2. 数据预处理

我们将从文章中提取出所有的句子,并进行一些基本的预处理工作。为了演示方便,我们将使用一个简单的示例——生成一篇Northwestern大学学校公告的摘要。我们先定义以下变量:

import re

text = "北西大学接受自2022年1月1日起提交的申请。本教程将引导您完成操作。"

sentences = text.split('.')
sentences = [sentence.strip() for sentence in sentences if len(sentence) > 0]

stopwords = ['a', 'an', 'the']

以上代码会将文章文本按句子划分,并去掉每句话两边多余的空格。

3. 计算文本相似性

我们现在可以为每个句子生成一个相似度评分。我们将以句子“本教程将引导您完成操作”为例进行演示。代码如下:

from gensim.models import word2vec
import numpy as np

model = word2vec.Word2Vec.load('word2vec.model')

def sentence2vec(sentence, model):
    words = re.findall(r'\b\w+\b', sentence.lower())
    filtered = [w for w in words if w not in stopwords]
    vectors = [model.wv[word] for word in filtered if word in model.wv.vocab]
    return np.mean(vectors, axis=0)

scores = []
for sentence in sentences:
    score = model.similarity('操作', sentence2vec(sentence, model))
    scores.append(score)
print(scores)

以上代码通过调用预先训练好的词向量模型,将每个句子转换成一个向量,并计算每个向量与“操作”这个词的相似度。在本例中,输出的相似度值为 [0.3872683, 0.27397558]。

4. 生成摘要

现在,我们将通过排序的方式来生成文章的摘要,选取相似度最高的两个句子作为摘要。代码如下:

idxs = sorted(range(len(scores)), key=lambda i: scores[i], reverse=True)[:2]
summary = '. '.join([sentences[i] for i in idxs])
print(summary)

以上代码会输出两个最相似的句子,并将它们用句号连接成一段摘要,示例输出如下:

本教程将引导您完成操作. 北西大学接受自2022年1月1日起提交的申请

示例2

除了以上提到的示例,对于更长的文章,我们可以尝试在第一步预处理时对文章进行分段,再为每一个段落分别生成摘要。代码如下:

import re

text = """
上个月,我们招募了一个新的团队成员。他非常优秀,拥有多年的软件开发经验。他的加入让我们能够更快更好地开发新的功能。
但是,随着团队的增长,我们发现了一些新的问题。我们决定重新组织我们的团队,以确保我们能够更好地协作和沟通。
"""

paragraphs = re.split('\r|\n|\r\n', text)

stopwords = ['a', 'an', 'the']

model = word2vec.Word2Vec.load('word2vec.model')

def sentence2vec(sentence, model):
    words = re.findall(r'\b\w+\b', sentence.lower())
    filtered = [w for w in words if w not in stopwords]
    vectors = [model.wv[word] for word in filtered if word in model.wv.vocab]
    return np.mean(vectors, axis=0)

def summarize(text, model, num_paragraphs=1):
    paragraphs = re.split('\r|\n|\r\n', text)
    paragraphs = [p.strip() for p in paragraphs if len(p.strip()) > 0]
    scores = []
    for paragraph in paragraphs:
        sentences = re.split('[?!.]', paragraph)
        sentences = [s.strip() for s in sentences if len(s.strip()) > 0]
        if len(sentences) < 2:
            continue
        paragraph_scores = []
        for sentence in sentences:
            score = model.similarity('团队', sentence2vec(sentence, model))
            paragraph_scores.append(score)
        scores.append(np.mean(paragraph_scores))
    idxs = sorted(range(len(scores)), key=lambda i: scores[i], reverse=True)[:num_paragraphs]

    summary = '. '.join([paragraphs[i] for i in idxs])
    return summary

summary = summarize(text, model, 1)
print(summary)

以上代码中,我们对输入文本进行了分段,并为每个段落生成了摘要。示例输出为:

上个月,我们招募了一个新的团队成员。他非常优秀,拥有多年的软件开发经验。他的加入让我们能够更快更好地开发新的功能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python根据文章标题内容自动生成摘要的实例 - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • 云计算、大数据和人工智能如何区分?

    今天跟大家讲讲三个词:云计算、大数据和人工智能。为什么讲这三个东西呢?因为这三个东西现在非常火,并且它们之间好像互相有关系:一般谈云计算的时候会提到大数据、谈人工智能的时候会提大数据、谈人工智能的时候会提云计算…… 感觉三者之间相辅相成又不可分割。 但如果是非技术的人员,就可能比较难理解这三者之间的相互关系,所以有必要解释一下。 云计算最初的目标 我们首先来…

    云计算 2023年4月12日
    00
  • 【Cloudaily】新一代国产云计算操作系统发布,国内首个智慧物流指数发布

    Cloudaily网罗新鲜要闻,每日为你呈现大数据和云计算领域热点新闻。本次内容播报如下: 全球首座深渊生物大数据库落户上海 日前,全球首座深渊生物、微生物样品大数据中心在上海临港建成启用。深渊生物、微生物菌种具有同样重要的科研价值和经济价值,在生物医药、食品保健品、环保产业、海洋防腐、冶金和化学工业等诸多产业部门具有广阔的应用前景。清华大学海洋生物技术研究…

    云计算 2023年4月12日
    00
  • 如何实现云数据治理中的数据安全?

    云计算被定义为计算资源的共享池,已经在不同的应用领域广泛部署和使用。在云计算中,数据治理在提高整体性能和确保数据安全方面发挥着至关重要的作用。本研究从管理和技术应用两方面探讨如何实现云数据治理中的数据 作者:京东科技 李然辉 摘要 云计算被定义为计算资源的共享池,已经在不同的应用领域广泛部署和使用。在云计算中,数据治理在提高整体性能和确保数据安全方面发挥着至…

    2023年4月10日
    00
  • 基于Django框架的rest_framework的身份验证和权限解析

    下面我将为你讲解基于Django框架的rest_framework的身份验证和权限解析的完整攻略。 什么是rest_framework(DRF) rest_framework(DRF)是一个基于Django框架的RESTful API开发工具包,可以帮助我们快速构建API接口。DRF提供了身份验证和权限解析两个功能,下面将详细介绍。 身份验证 身份验证可以防…

    云计算 2023年5月18日
    00
  • 面向大规模队列,百万并发的多优先级消费系统设计

    大规模队列的核心诉求,不仅需要「快」,还需要兼顾「公平」。 01 引言 HTTP是一种常用的通信协议,除了常见网站访问、上传下载,HTTP协议还经常被用在消息推送场景上。 设想你搭建了一个电商平台,有很多大型商家入驻了该电商平台并售卖各类商品,在消费者购买某个商品后,平台会通过HTTP协议将消费者购买商品的信息通知商家,商家则会在后台接收平台推送过来的消息。…

    云计算 2023年4月13日
    00
  • linux云计算(keystone swift cinder配置)

    独立安装openstack组件 准备服务器,为安装openstack的服务器加3块额外硬盘 qemu-img create -f qcow2 rh71.img 20G qemu-img create -f qcow2 rh71.img 20G qemu-img create -f qcow2 rh71.img 20G keystone介绍 keystone是…

    云计算 2023年4月10日
    00
  • ASP.NET Core配置和管理Web主机

    ASP.NET Core配置和管理Web主机是一个比较重要的话题。下面我来给你详细讲解一下这个攻略。 配置和管理Web主机的重要性 ASP.NET Core支持多种方式来托管运行ASP.NET Core应用程序的Web服务器,比如:- Internet Information Services(IIS)- Apache HTTP Server- Nginx-…

    云计算 2023年5月17日
    00
  • 详解如何在ASP.NET Core Web API中以三种方式返回数据

    下面是详解如何在ASP.NET Core Web API中以三种方式返回数据的攻略。 背景 ASP.NET Core是一种跨平台的开源框架,用于构建Web应用程序,包括Web API应用程序。Web API的主要作用是提供服务端的接口,向客户端提供数据。 在ASP.NET Core Web API中,我们通常有三种方式可以返回数据。这三种方式分别是:返回对象…

    云计算 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部