首页 > 编程语言 >基于Python的自然语言处理系列(26):Get to the Point Summarization

基于Python的自然语言处理系列(26):Get to the Point Summarization

时间:2024-10-13 23:46:54浏览次数:8  
标签:Summarization Get Python Pointer self param init data 模型

        在本篇文章中,我们将实现经典的"Get to the Point"模型,该模型最初发表于 Get to the Point: Summarization with Pointer-Generator Networks。这是当时最著名的摘要生成模型之一,至今仍有很多人使用其Pointer-Generator架构作为他们模型的一部分。

1. 模型简介

        "Get to the Point" 模型结合了Pointer机制和覆盖率机制,解决了生成式摘要系统中的词汇外词(OOV)问题以及重复生成问题。

        该模型的核心思想是使用Pointer-Generator机制将生成器(Generator)和指针(Pointer)结合,从而在预测新词时可以选择从词汇表中生成词语,或者直接复制文章中的词。覆盖率机制则通过引入覆盖向量,帮助模型避免生成重复内容。

模型总体架构:

2. 模型参数与配置

import torch
import torch.nn.functional as F

# 配置参数
beam_size = 4
emb_dim = 128
batch_size = 16
hidden_dim = 256
max_enc_steps = 400
max_dec_steps = 100
vocab_size = 50000

lr = 0.15
cov_loss_wt = 1.0
pointer_gen = True
is_coverage = True
max_grad_norm = 2.0

3. 数据准备

        我们使用CNN/DailyMail数据集,首先需要进行数据下载和处理。处理好的数据文件。

数据预处理流程(跳过分词部分)

# 已经过Tokenize的文件,可以直接跳过分词部分
train_data_path  = "data/finished_files/chunked/train_*"
eval_data_path   = "data/finished_files/val.bin"
decode_data_path = "data/finished_files/test.bin"
vocab_path       = "data/finished_files/vocab"

4. 模型结构

4.1 基本模块

        我们为所有模块定义一个基础类BasicModule,其初始化方法采用了截断正态分布来初始化参数。

class BasicModule(nn.Module):
    def __init__(self, init='uniform'):
        super(BasicModule, self).__init__()
        self.init = init

    def init_params(self):
        for param in self.parameters():
            if param.requires_grad and len(param.shape) > 0:
                stddev = 1 / math.sqrt(param.shape[0])
                if self.init == 'uniform':
                    torch.nn.init.uniform_(param, a=-0.05, b=0.05)
                elif self.init == 'normal':
                    torch.nn.init.normal_(param, std=stddev)
                elif self.init == 'truncated_n

标签:Summarization,Get,Python,Pointer,self,param,init,data,模型
From: https://blog.csdn.net/ljd939952281/article/details/142648817

相关文章

  • python基础知识(十一)面向过程,面向对象,对象属性,魔法方法,继承,私有权限
    目录面向过程是什么什么是面向对象?面向对象的三大特性:继承多态类对象self关键字对象属性类外面访问属性类内部获取属性魔法方法无参init()方法有参init()方法str()方法del()方法继承基础什么是继承单继承多继承继承进阶方法重写调用父类方法多层继承......
  • Python 禅道测试用例助手
    程序及源码下载地址:https://gitee.com/ishouke/zen-tao-testcase-helper实现功能禅道测试用例助手。实现xmind用例导入禅道,支持自动创建产品,模块,删除用例,此外,支持禅道导出的excel用例转xmind用例之后,再导入禅道,实现禅道用例管理闭环使用要求适配xmind版本:xmind8update9(XM......
  • 猫头虎分享:Python库 Selenium 的简介、安装、用法详解入门教程
    ......
  • Python包导入报错:ValueError: attempted relative import beyond top-level package
    Python包导入报错:ValueError:attemptedrelativeimportbeyondtop-levelpackage前置知识:python-m命令python-m命令用于以模块的方式运行Python代码,而不是直接执行脚本文件。它为执行Python代码提供了一种更加灵活和标准化的方式,特别适用于包和模块。python-m的工作原......
  • Java 和 Python 的终极对决:毕业设计选谁才不掉头发?
    前言:老铁们,毕业设计来了,你准备好了么?听说最近有不少同学陷入了毕业设计选择恐慌,尤其是你手边摆着两把编程界的“大宝剑”:Java和Python,不知选哪把能少掉几根头发,甚至怀疑自己还能不能顺利毕业?其实,这个问题很简单,就好像你在超市里面对两袋薯片——“哎,这袋多一点,那袋口味更好,真......
  • python与C++的一些区别以及一些新的东西
    目录第一个Python程序输入与输出Python基础数据类型和变量字符串和编码使用list和tuple条件判断模式匹配循环使用dict和set第一个Python程序输入与输出Python基础数据类型和变量字符串和编码第一行代码的输出如下解释如下:'%2d-%02d'是格式化字......
  • python数据分析与可视化
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满。学成后可......
  • Python 在Python中使用Protocol Buffers基础介绍
    实践环境protoc-25.4-win64.zip下载地址:https://github.com/protocolbuffers/protobuf/releaseshttps://github.com/protocolbuffers/protobuf/releases/download/v25.4/protoc-25.4-win64.zipprotobuf5.27.2pipinstallprotobuf==5.27.2Python3.9.13问题域本文将使......
  • 基于python仓库管理系统的设计与实现
    摘 要仓库管理系统设计的目的是为用户提供产品信息等功能。与其它应用程序相比,仓库管理的设计主要面向于仓库,旨在为管理员和用户提供一个仓库管理系统。用户可以通过系统及时查看产品信息等。仓库管理系统是在Windows操作系统下的应用平台。为防止出现兼容性及稳定性问题......
  • 公司订餐系统小程序(Python+Django+lw+系统源码 +调试)
    摘  要随着我国经济的高速发展与人们生活水平的日益提高,人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下,人们更趋向于足不出户解决生活上的问题,菜品信息展现了其蓬勃生命力和广阔的前景。与此同时,为解决用户需求,教室预约发展愈发多元化与网络化,与电子信......