Hugging Face实战-系列教程19:文本摘要建模实战1 之 数据清洗(中文商城评价数据处理方法)

🚩🚩🚩Hugging Face 实战系列 总目录

有任何问题欢迎在下面留言
本篇文章的代码运行界面均在Jupyter Notebook中进行
本篇文章配套的代码资源已经上传

文本摘要建模实战1 之 数据清洗
文本摘要建模实战2 之 Tokenizer处理

1 任务概述

1.1 任务概述

  1. 摘要任务要去解决一个什么事情呢
  2. 就是输入一个文章,输出一个总结归纳性的文字或者标题
  3. 输入也是文本,输出也是文本的text-to-text任务
  4. 对原本的文本进行精简,输入长文本,输出短文本
  5. 用一个长文本生成一个标题,用一个标题生成一个长文本,都是文本摘要建模的任务

1.2 数据与任务解析

在这里插入图片描述

数据下载链接,也可以通过代码中加载

这个数据集也是Hugging Face内置的数据集,这个数据集有多个语言版本,我们选中文的就好:
在这里插入图片描述
这个数据中我们主要关注两个字段:(review_body和review_title),其他的我们暂时不需要用,这个数据中body就是我们的输入,title就是我们的标签输出

1.3 数据展示

from datasets import load_dataset
chinese_dataset = load_dataset("A:/amazon_reviews_multi")
chinese_dataset
  1. 从datasets 模块导入load_dataset方法
  2. 从本地路径加载数据
  3. 打印出数据

DatasetDict({
 train: Dataset({
  features: [‘id’, ‘text’, ‘label’, ‘label_text’],
  num_rows: 200000
 })
 validation: Dataset({
  features: [‘id’, ‘text’, ‘label’, ‘label_text’],
  num_rows: 5000
 })
 test: Dataset({
  features: [‘id’, ‘text’, ‘label’, ‘label_text’],
  num_rows: 5000
 })
})

这个数据集中,数据是比较大的,因为包含了各种各样的数据,训练集达到 了20万,验证测试都是5千

def show_samples(dataset, num_samples=3, seed=40):
    sample = dataset["train"].shuffle(seed=seed).select(range(num_samples))
    for example in sample:
        print(f"\n'>> Title: {example['review_title']}'")
        print(f"'>> Review: {example['review_body']}'")
show_samples(chinese_dataset)
  1. 展示样本函数
  2. 从训练集中展示选取3条数据样本
  3. 遍历取出样本
  4. 打印标题
  5. 打印长文本

‘>> Title: 重修版的结局’ ’
‘>> Review:’
重修版的结局还是跟原版没什么很大出入…虽然说把原来伏笔用上句式古风可是结局感觉给人有点仓促’
‘>> Title: 盗版书!!!’
‘>> Review:’
这是盗版书,中间翻不开,胶装在一起的,如果想要翻开看全图,书都要撕掉的感觉,装订特别烂,我才翻了几次就有掉页的趋势,后悔后悔’
‘>> Title: 一分钱一分货’ ‘>> Review: 除了便宜真没什么好的,即便4档面包靠里一面还是会胡,设7档有什么意义。’

2 数据预处理

2.1 查看所有类别

  1. 数据种类挺多的,咱们训练次数比较少,就选一个类别的
  2. 先转换成pandas格式来统计
  3. 书比较多,数据还算可以,咱们就用书的来玩
chinese_dataset.set_format("pandas")#格式转pnadas,这点用着还挺方便
chinese_df = chinese_dataset["train"][:]#对训练数据统计
# 前20个类别的数量
chinese_df["product_category"].value_counts()[:20]
  1. 格式转pnadas,这点用着还挺方便
  2. 取出训练数据
  3. 对训练数据进行各个列的值进行统计,打印统计结果

book   63058
digital_ebook_purchase   19006
apparel   11804
shoes   9877
beauty   9401
kitchen   9170
home   8222
other   7525
grocery   7425
wireless   6432
baby_product   6172
drugstore   6072
sports   6015
pc   4821
toy   3670
home_improvement   3239
watch   3133
electronics   3059
luggage   2984
office_product 2855
Name: product_category, dtype: int64

很明显书占的最多,就只要书这个类别了,看看转换成pandas数据格式后的数据展示,前五条:
在这里插入图片描述

2.2 只要书这个类别

def filter_books(example):
    return ( example["product_category"] == "book")
chinese_dataset.reset_format()
chinese_dataset = chinese_dataset.filter(filter_books)
show_samples(chinese_dataset)
  1. 过滤类别的函数
  2. 返回只要书的类别
  3. 首先转换为 Hugging Face要求的数据格式
  4. 把选用类别的函数给到它
  5. 再用展示样本的函数进行展示

打印结果:

’ Title: 非常推荐!’
‘>> Review: 一本从教育学角度考察慕课发展的书 对理清慕课发展历程非常有帮助!’
‘>> Title: 唠叨’
‘>> Review: 一个人的碎碎念,就是没地方唠叨了,全跑书里来喋喋不休’
‘>> Title: 心碎’
‘>> Review:
只有一层塑料袋装着,到的时候皱皱巴巴不成样子,我的地图啊,亚马逊你让我太失望了(还跟那么多书一起买的,包装都没有),心碎’

这种方法是huggingface推荐的,感觉我先pandas处理好再转换成Hugging Face的数据格式也可以

看一下筛选后的数据维度:

chinese_dataset

DatasetDict({
  train: Dataset({
    features: [‘review_id’, ‘product_id’, ‘reviewer_id’, ‘stars’, ‘review_body’, ‘review_title’, ‘language’, ‘product_category’],
    num_rows: 63058
  })
  validation: Dataset({
    features: [‘review_id’, ‘product_id’, ‘reviewer_id’, ‘stars’, ‘review_body’, ‘review_title’, ‘language’, ‘product_category’],
    num_rows: 1563
  })
test: Dataset({
    features: [‘review_id’, ‘product_id’, ‘reviewer_id’, ‘stars’, ‘review_body’, ‘review_title’, ‘language’, ‘product_category’],
    num_rows: 1567
  })
})

现在我们训练集只有6万条数据了,验证测试都是1500条多

2.3 标签处理

  • 过滤掉标签太短的,这样不利于建模
  • 我们希望预测出来的结果别就两个字
books_dataset = chinese_dataset.filter(lambda x: len(x["review_title"]) > 4)

标签必须要大于4个词的数据我们才要

再看一下我们的数据

books_dataset

DatasetDict({
  train: Dataset({
    features: [‘review_id’, ‘product_id’, ‘reviewer_id’, ‘stars’, ‘review_body’, ‘review_title’, ‘language’, ‘product_category’],
    num_rows: 36452
  })
  validation: Dataset({
    features: [‘review_id’, ‘product_id’, ‘reviewer_id’, ‘stars’, ‘review_body’, ‘review_title’, ‘language’, ‘product_category’],
    num_rows: 902
  })
test: Dataset({
  features: [‘review_id’, ‘product_id’, ‘reviewer_id’, ‘stars’, ‘review_body’, ‘review_title’, ‘language’, ‘product_category’],
  num_rows: 904
  })
})

文本摘要建模实战1 之 数据清洗
文本摘要建模实战2 之 Tokenizer处理

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB求解微积分(代码+详细解读)

大多数实际工程问题常常简化为微分方程,其求解显地至关重要。 符号微积分 极限 % matlab提供的求极限函数limit(),其调用格式为 % y limit(fun,x,x0) % fun为要求解的函数,x为函数自变量,x0为函数自变量的取值,x趋近于x0 clc;…

用户权益保护:TikTok如何守护数字隐私

随着社交媒体的普及,数字隐私问题逐渐成为用户关注的焦点。在这一背景下,TikTok作为一款备受欢迎的短视频应用,怎样保护用户的数字隐私,成为一个备受关注的话题。本文将深入探讨TikTok在用户权益保护方面的举措,以及它…

13代现场实拍图

1. 2.1寸电子墨水屏显示; 2. 无线通信868M,跳频通信; 3. 自带1个按键及三色高亮LED指示灯指示; 4. 超低功耗; 5. 标签ID码正面显示; 6. 通信速率200K/50K; 7. 覆盖通信半径30米以上&#…

C语言求最大公约数(详解版)

1、问题描述 求任意两个正整数的最大公约数(GCD)。 2、问题分析 如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数&#x…

DTO/DO/VO分层与拷贝

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 这一篇其实没太多实质内…

我的创作纪念日【512】

机缘 学知识 收获 沉下心来安静学习的能力 日常 创作学习 成就 只要在学习,没有混时间就有成就感 憧憬 早日成为一个健康、漂亮、自律的富婆。

Android Studio(3.6.2版本)安装 java2smali 插件,java2smali 插件的使用方法简述

一、Android Studio(3.6.2版本)安装 java2smali 插件 1、左上角File—>Setting,如下图 2、Setting界面中:点击Plugins—>选择右侧上方Marketplace—>搜索栏输入java2smali,如下图 3、点击Install按钮—>点…

c语言:指针作为参数传递

探究实参与形参它们相互独立 由于主调函数的变量a,b与被调函数的形参x,y它们相互独立。函数 swap 可以修改变量x,y,但是却无法影响到主调函数中的a,b。 现在利用取地址运算符,分别打印它们的首地址&#x…

枚举enum(学习推荐版,通俗易懂)

定义及特点 第一行的列举名称(都是常量),代表每个枚举的对象(因为枚举不能创建对象,只能依靠罗列名称确定可使用枚举对象个数),这些名称代表的对象可以使用所在枚举类的所有成员变量、成员方法、…

网络编程day3作业

多进程实现TCP并发服务器 #include<myhead.h>#define PORT 8888 #define IP "192.168.125.130"void hadder(int signo) {if(signo SIGCHLD){while(waitpid(-1,NULL,WNOHANG) > 0);} }int information_exchange(int newfd,struct sockaddr_in cin) {char b…

查验身份证c语言

以下是一个简单的C语言程序&#xff0c;用于验证身份证号码的校验码&#xff1a; #include <stdio.h>#include <string.h>int main() { char id[19]; int i, weight[17] {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; int sum 0; char c…

企业微信自动登录自定义系统

方法一&#xff1a;企业微信构造OAuth2链接跳转登录到自定义系统 企业微信自定义应用配置 构造网页授权链接 如果企业需要在打开的网页里面携带用户的身份信息&#xff0c;第一步需要构造如下的链接来获取code参数&#xff1a; https://open.weixin.qq.com/connect/oauth2/…

Elasticsearch 向量相似搜索

Elasticsearch 向量相似搜索的原理涉及使用密集向量(dense vector)来表示文档,并通过余弦相似性度量来计算文档之间的相似性。以下是 Elasticsearch 向量相似搜索的基本原理: 向量表示文档: 文档的文本内容经过嵌入模型(如BERT、Word2Vec等)处理,得到一个密集向量(den…

在openSUSE-Leap-15.5-DVD-x86_64中使用deepin-wine-6.0.0.62再使用微信3.9.5

在openSUSE-Leap-15.5-DVD-x86_64中使用deepin-wine-6.0.0.62再使用微信3.9.5 参考文章&#xff1a; 《记录-下fedora 33安装deepin qq和微信 &#xff0c;不需要安装deepinwine》 https://tieba.baidu.com/p/7279470269 《opensuse使用virtualbox安装win10》 https://blog.c…

简便实用:在 ASP.NET Core 中实现 PDF 的加载与显示

前言 在Web应用开发中&#xff0c;经常需要实现PDF文件的加载和显示功能。本文小编将为您介绍如何在ASP.NET Core中实现这一功能&#xff0c;以便用户可以在Web应用中查看和浏览PDF文件。 实现步骤 1&#xff09;在服务器端创建PDF 打开 Visual Studio 并创建新的 ASP. NET…

PDF转为图片

PDF转为图片 背景pdf展示目标效果 发展过程最终解决方案&#xff1a;python PDF转图片pdf2image注意&#xff1a;poppler 安装 背景 最近接了一项目&#xff0c;主要的需求就是本地的文联单位&#xff0c;需要做一个电子刊物阅览的网站&#xff0c;将民族的刊物发布到网站上供…

Apipost检测接口工具的基本使用方法

&#x1f440; 今天言简意赅的介绍一款和postman一样好用的后端接口测试工具Apipost 专门用于测试后端接口的工具&#xff0c;可以生成接口使用文档官方下载网站&#xff1a;http://www.apipost.cn 傻瓜式安装—>register->项目->创建项目->APIs->新建目录&…

什么是 DDoS ?如何识别DDoS?怎么应对DDOS攻击

什么是DDOS攻击 DDoS攻击&#xff08;Distributed Denial of Service Attack&#xff09;即分布式拒绝服务攻击&#xff0c;是一种利用分布式网络来发起大量的请求&#xff0c;占用目标服务器或网络资源的攻击行为。这种攻击方式可以瘫痪目标系统&#xff0c;导致其无法正常提供…

springboot学习笔记(一)

本期内容&#xff1a; 1.springboot安装 2.springboot Hello world 1.springboot安装&#xff1a; 参考&#xff1a; springboot安装 Spring boot简介及安装 a. eclipse中打开help-->Eclipse Marketplace b. 在search栏目下&#xff0c;输入&#xff1a;spring-tool-…

Redis原理之网络模型笔记

目录 1. 阻塞IO 2. 非堵塞IO 3. IO多路复用 ​3.1 select 3.2 poll 3.3 epoll 4. 信号驱动IO 5. 异步IO 6. Redis是单线程还是多线程 Redis采用单线程模型&#xff0c;这意味着一个Redis服务器在任何时刻都只会处理一个请求。Redis的网络模型涉及到阻塞I/O&#xff08;Blo…
最新文章