pytorch-textsummary,中文文本摘要实践

pytorch-textsummary,中文文本摘要实践

pytorch-textsummary是一个以pytorch和transformers为基础,专注于中文文本摘要的轻量级自然语言处理工具,支持抽取式摘要等。

目录

  • 数据
  • 使用方式
  • paper
  • 参考

项目地址

  • pytorch-textsummary: https://github.com/yongzhuo/Pytorch-NLU/pytorch_textsummary

数据

数据来源

免责声明:以下数据集由公开渠道收集而成, 只做汇总说明; 科学研究、商用请联系原作者; 如有侵权, 请及时联系删除。

  • chinese_abstractive_corpus, 教育培训行业抽象式自动摘要中文语料:语料库收集了教育培训行业主流垂直媒体的历史文章(截止到2018年6月5日)大约24500条数据集。主要是为训练抽象式模型而整理,每条数据有summary(摘要)和text(正文),两个字段,Summary字段均为作者标注。
  • NLPCC2017-task3-Single Document Summarization, NLPCC 2017 task3 单文档摘要;
  • A Large-Scale Chinese Long-text Extractive Summarization Corpus, 哈工大长文本摘要数据;
  • LCSTS: A Large-Scale Chinese Short Text Summarization Dataset, 哈工大LCSTS短文本摘要数据;
  • 生成式文本摘要可以用一些带标题的文章来训练;

数据格式

1. 文本摘要  (txt格式, 每行为一个json):1.1 抽取式文本摘要格式:
{"label": [0, 1, 0, 0, 1, 0, 0, 0, 0, 0], "text": ["针对现有法向量估值算法都只能适用于某一类特定形状模型的问题。", "提出三维点云模糊分类的法向量估值算法。", "利用模糊推理系统对模型的点云数据分类。", "根据点云在不同形状区域的分布情况和曲率变化给出模糊规则。", "将点云分成属于平滑形状区域、薄片形状区域和尖锐形状区域三类。", "每类点云对应给出特定的法向量估值算法。", "由于任意模型形状分布的差别。", "其点云数据经过模糊分类后调用相应的估值算法次数会有差别。", "因此采用牙齿模型点云数据验证了算法的可行性。", "经过与三种典型算法比较可以看出本算法估算准确、简单可行。"]}
{"label": [0, 0, 1, 1, 0, 0], "text": ["医院物联网是物联网技术在医疗行业应用的集中体现。", "在简单介绍医院物联网基本概念的基础上。", "结合物联网机制和医院的实际特点。", "探讨了适用于医院物联网的体系结构。", "并分析了构建中的关键技术。", "包括医院物联网的标准建设、中间件技术及嵌入式电子病历的研究与设计等。"]}

使用方式

更多样例sample详情见test/ts

    1. 需要配置好预训练模型目录, 即变量 pretrained_model_dir、pretrained_model_name_or_path、idx等;
    1. 需要配置好自己的语料地址, 即字典 model_config[“path_train”]、model_config[“path_dev”]
    1. cd到该脚本目录下运行普通的命令行即可, 例如: python3 tet_ts_base_train.py , python3 tet_ts_base_pred.py

文本摘要(TS), Text-Summary

# !/usr/bin/python
# -*- coding: utf-8 -*-
# @time    : 2021/2/23 21:34
# @author  : Mo
# @function: 文本摘要, text-summary# 适配linux
import platform
import json
import sys
import os
path_root = os.path.abspath(os.path.join(os.path.dirname(__file__), "../.."))
path_sys = os.path.join(path_root, "pytorch_nlu", "pytorch_textsummary")
sys.path.append(path_sys)
print(path_root)
print(path_sys)from tsTools import get_current_time
from tsConfig import model_config
from tsRun import TextSummary# 预训练模型地址, 本地win10默认只跑2步就评估保存模型
if platform.system().lower() == 'windows':# pretrained_model_dir = "D:/pretrain_models/pytorch"pretrained_model_dir = "E:/DATA/bert-model/00_pytorch"evaluate_steps = 32  # 评估步数save_steps = 32  # 存储步数
else:pretrained_model_dir = "/pretrain_models/pytorch"evaluate_steps = 320  # 评估步数save_steps = 320  # 存储步数ee = 0if __name__ == "__main__":# 训练-验证语料地址, 可以只输入训练地址path_corpus = os.path.join(path_root, "pytorch_nlu", "corpus", "text_summary", "maths_toy")path_train = os.path.join(path_corpus, "train.json")path_dev = os.path.join(path_corpus, "dev.json")model_config["evaluate_steps"] = evaluate_steps  # 评估步数model_config["save_steps"] = save_steps  # 存储步数model_config["path_train"] = path_trainmodel_config["path_dev"] = path_devmodel_config["lr"] = 1e-5  # 测试语料, 可为Nonemodel_config["max_len"] = 256  # 测试语料, 可为Nonemodel_config["batch_size"] = 32  # 测试语料, 可为Nonemodel_config["loss_type"] = "SOFT_MARGIN_LOSS"  # 测试语料, 可为Nonemodel_config["is_dropout"] = True  #model_config["is_adv"] = False  # 测试语料, 可为None# 预训练模型适配的classmodel_type = ["BERT", "ERNIE", "BERT_WWM", "ALBERT", "ROBERTA", "XLNET", "ELECTRA"]pretrained_model_name_or_path = {"BERT_WWM": pretrained_model_dir + "/chinese_wwm_pytorch","ROBERTA": pretrained_model_dir + "/chinese_roberta_wwm_ext_pytorch","ALBERT": pretrained_model_dir + "/albert_base_v1","XLNET": pretrained_model_dir + "/chinese_xlnet_mid_pytorch",# "ERNIE": pretrained_model_dir + "/ERNIE_stable-1.0.1-pytorch","ERNIE": pretrained_model_dir + "/ernie-tiny","BERT": pretrained_model_dir + "/bert-base-chinese",# "BERT": pretrained_model_dir + "/mengzi-bert-base/",}idx = 0  # 选择的预训练模型类型---model_typemodel_config["pretrained_model_name_or_path"] = pretrained_model_name_or_path[model_type[idx]]model_config["model_save_path"] = "../output/text_summary/model_{}".format(model_type[idx])model_config["model_type"] = model_type[idx]# mainlc = TextSummary(model_config)lc.process()lc.train()# shell
# nohup python  tcRun.py > tc.log 2>&1 &
# tail -n 1000  -f tc.log
# |myz|

paper

文本摘要(TS), Text-Summary

  • BertSum: Fine-tune BERT for Extractive Summarization

参考

This library is inspired by and references following frameworks and papers.

  • GPT2-NewsTitle: https://github.com/liucongg/GPT2-NewsTitle
  • BertSum: https://github.com/nlpyang/BertSum

Reference

For citing this work, you can refer to the present GitHub project. For example, with BibTeX:

@software{Pytorch-NLU,url = {https://github.com/yongzhuo/Pytorch-NLU},author = {Yongzhuo Mo},title = {Pytorch-NLU},year = {2021}

*希望对你有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/692888.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker (十)-docker compose容器编排

在实际工作中,部署一个应用可能需要部署多个容器,一个一个部署非常不方便。docker compose可以一键部署和启动多个容器,它使用yaml文件来编排服务。github和docker hub很多项目都提供了docker-compose.yaml文件,我们可以一键部署项…

浅谈木材加工企业的电气火灾隐患及电气火灾监控系统的应用

摘要:本文分析了木材加工企业的特点、现状及常见电气火灾隐患,提出了消灭电气火灾隐患的措施。结尾介绍了木材加工企业常用电气设备的选用及电气火灾监控系统在其低压配电系统的应用方案及产品选型。 关键词:木材加工企业;电气火…

redis 异步队列

//produceMessage.ts 模拟生产者 import Redis from ioredis; const redis new Redis(); // 生产者:将消息推送到队列 async function produceMessage(queueName:string, message:string) {try {await redis.rpush(queueName, message);console.log(Produced messa…

Unity摄像机跟随

Unity摄像机跟随 方法一:摄像机子物体 将摄像机直接拖拽到被跟随的目标下面即可,这样摄像机永远在目标的后面 缺点: 屏幕旋转太平滑了目标物体在屏幕上的位置永远不变目标物体被销毁时总不能把摄像机也销毁了吧 方法二:子物体…

19个Web前端交互式3D JavaScript框架和库

JavaScript (JS) 是一种轻量级的解释(或即时编译)编程语言,是世界上最流行的编程语言。JavaScript 是一种基于原型的多范式、单线程的动态语言,支持面向对象、命令式和声明式(例如函数式编程&am…

从零开始手写mmo游戏从框架到爆炸(十六)— 客户端指定回调路由与登录

导航:从零开始手写mmo游戏从框架到爆炸(零)—— 导航-CSDN博客 我们这次来把注册、登录、选择英雄,进入主页-选择地图的功能完善。 在这之前,我们还要解决一个问题,就是服务端往客户端发消息的路由问题…

phpcms v9敏感词内容替换

后台先在"扩展"——>"敏感词管理"中添加敏感词,然后修改phpcms\modules\content\content.php文件来实现添加或者编辑内容时敏感词的替换。(如果涉及会员投稿和留言等,也需要在对应模块中做类似处理) 在ad…

ADO.NET实现读写分离

在 ADO.NET 中,分片和垂直分表的支持并不是直接提供的,而是需要你在应用程序设计和数据库架构中手动实现。下面是如何在 ADO.NET 中支持分片和垂直分表的一些步骤和策略: 分片 (Sharding) 1. 设计分片策略 首先,你需要设计一个…

《基于CEEMDAN-小波包分析的隧道爆破信号去噪方法》论文思路

相比于小波降噪,小波包分析具有更高的频率分辨率,可以进一步消除高频部分存在的噪声余量,提高去噪精度 依据EEMD 分解的取值范围,利用“试错法”得到本次试验中CEEMDAN分解的特征参数为:正负高斯白噪声标准差为0.2&a…

Linux--shell编程中有关while循环的详细内容

文章关于while循环的内容目录 一、while循环 ​​​​​​​​​​​​​​二、无限循环 ​​​​​​​​​​​​​​三、case语句 ​​​​​​​四、跳出循环 ​​​​​​​​​​​​​​五、break ​​​​​​​六、continue​​​​​​​ ​​​​​​​一、w…

Java Web(六)--XML

介绍 官网:XML 教程 为什么需要: 需求 1 : 两个程序间进行数据通信?需求 2 : 给一台服务器,做一个配置文件,当服务器程序启动时,去读取它应当监听的端口号、还有连接数据库的用户名和密码。spring 中的…

二叉树及其练习题

文章目录 树概念及结构树的概念树的相关概念树的表示形式树的应用 二叉树概念及结构概念两种特殊的二叉树二叉树的性质二叉树的存储二叉树的基本操作二叉树的遍历前中后序遍历递归实现二叉树的基本操作 二叉树相关oj题 树概念及结构 树的概念 树是一种非线性的数据结构&#…

c++:蓝桥杯中的基础算法1(枚举,双指针)

枚举 基础概念&#xff1a; 枚举&#xff08;Enum&#xff09;是一种用户定义的数据类型&#xff0c;用于定义一个有限集合的命名常量。在C中&#xff0c;枚举类型可以通过关键字enum来定义。 下面是一个简单的枚举类型的定义示例&#xff1a; #include <iostream>enum…

【面试题】谈谈MySQL的索引

索引是啥 可以把Mysql的索引看做是一本书的目录&#xff0c;当你需要快速查找某个章节在哪的时候&#xff0c;就可以利用目录&#xff0c;快速的得到某个章节的具体的页码。Mysql的索引就是为了提高查询的速度&#xff0c;但是降低了增删改的操作效率&#xff0c;也提高了空间…

数字经济概念辨析

一些常见的数字经济&#xff0c;数字金融概念辨析 博士学位点-应用经济学、统计学、工商管理、管理科学与工程 可以不懂&#xff0c;但不能装懂&#xff1b;可以不会&#xff0c;但不能不学&#xff1b;可以偷懒&#xff0c;但不能停滞。 增程式和混合动力的电动车都是混合动…

医疗在线问诊小程序:开启数字化医疗新篇章

随着科技的飞速发展&#xff0c;医疗行业正逐步向数字化转型。其中&#xff0c;医疗在线问诊小程序作为一种新型的医疗健康服务模式&#xff0c;为人们提供了更为便捷、高效的医疗咨询服务。本文将探讨医疗在线问诊小程序的发展背景、优势及应用场景&#xff0c;以期为医疗行业…

【JavaScript】模块的导入和导出

文章目录 1. 导出模块1.1 基本导出1.2 默认导出 2. 导入模块2.1 基本导入2.2 导入全部2.3 默认导入 3. 在实际项目中的应用3.1 模块化开发3.2 组织项目结构 4. 模块的导入导出语法比较4.1 命名导出4.2 默认导出 5. 总结 在现代 JavaScript 开发中&#xff0c;模块化编程是一项关…

elementUI 动态校验表单数据的方法

elementUI 动态校验表单数据的方法 直接设置如下 list 为动态获取的数据值列表数据 这里主要设置两块内容 prop为动态数据 rules设置需要校验的值 :prop“list.${index}.title” :rules“rules.title” //title 名称可自己定义 //这里主要设置两块内容 prop为动态数据 rules…

axios介绍和使用

1. Axios是什么 Axios框架全称&#xff08;ajax – I/O – system&#xff09; Axios是一个基于Promise的JavaScript HTTP客户端&#xff0c;用于浏览器和Node.js环境。它可以发送HTTP请求并支持诸如请求和响应拦截、转换数据、取消请求以及自动转换JSON数据等功能。 Axios提…

当服务器磁盘空间报警时怎么处理?

1、df -hT 查看磁盘使用情况 [rootapplication01 ~]# df -hT 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs 44G 8.3G 36G 19% / devtmpfs devtmpfs 7.8G 0 7.8G 0% /dev tmpfs …