如何从零开始构建一个网络讨论帖分类模型?

Motivation

前几天搭建了一个对牛客网每天最新的工作信息进行爬取的程序,见牛客网爬虫,但从网上爬取下来的帖子有很多不是工作信息,需要把这部分干扰信息给排除掉,否则很影响使用心情。之前使用关键词与正则表达式进行了简单过滤,但总是有一些漏网之鱼,且容易误伤,如果能训练一个NLP分类模型来进行过滤,那就再好不过了,正好本人的研究方向是NLP,就想试着构建一个模型玩玩了。

数据准备

但一般情况下要训练一个NLP模型需要几千到几万条有标注好的数据,而本项目没有现成的数据,这也是构建模型最困难的地方了。通过爬虫,获取了4万条左右的历史数据,包含id、用户昵称、标题、正文等内容,如下图所示,但没有标签。通过观察,可以把这些帖子大致分成 【招聘信息、经验贴、求助帖】三类,接下来就该考虑如何进行标注了。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传[外链图片转存中
在这里插入图片描述

人工标注太费时费力了,而且非常的不优雅,我们还是希望找到一个自动标注的方法,这里首先想到的就是最近两年在学术界比较火的few-shot、zero-shot技术了,且一般模型越大,效果越好。目前能访问到的大模型有: openAI的GPT3及最近大火的chatGPT,百度文心的 ERNIE 3.0大模型,已经一些机构开源在huggingface 和 魔搭社区的大模型,我使用prompt进行了一轮zero-shot尝试。
prompt格式示例如下:


请问下面文本属于 招聘信息、 经验贴、 求助贴 三者中的哪一类?
秋招大结局(泪目了)。家人们泪目了,一波三折之后获得的小奖状,已经准备春招了,没想到被捞啦,嗐,总之是有个结果,还是很开心的[掉小珍珠了][掉小珍珠了]请问下面文本属于哪一类帖子?
秋招大结局(泪目了)。家人们泪目了,一波三折之后获得的小奖状,已经准备春招了,没想到被捞啦,嗐,总之是有个结果,还是很开心的[掉小珍珠了][掉小珍珠了]
选项:招聘信息, 经验贴, 求助贴
答案:

经过一轮测试,发现他们的效果如下: chatGPT > 百度文心 >> others
chatGPT表现较好,绝大本分都预测的比较准确,百度文心也基本可用,大部分都能答正确,之后就准备使用API来调用这两个大模型来标数据了,但百度文心每天只能访问200次,我很快超出次数限制,现阶段还不能直接付费购买服务,只能填合作申请表,然后等待。
chatGPT不对中国用户开放,无法直接注册账户,通过特殊方法也是可以注册上的。前段时间翻墙后还能正常访问chatGPT的页面,但现在访问不了了,API在国内也访问不了,但可以采用“东数西算”的思想,把数据拿到国外的服务器上计算就行了,最简单的方法就是使用google的colab,免费创建一个notebook,并把数据传到google drive 或 GitHub,然后访问openAI的api。调用api需要先到官网上申请一个API key,然后再调用,使用pyhton调用API的代码如下:


import openai
openai.api_key = "your api key"s = '''请问下面文本属于 招聘信息、 经验贴、 求助贴 三者中的哪一类?\n秋招大结局(泪目了)。家人们泪目了,一波三折之后获得的小奖状,已经准备春招了,没想到被捞啦,嗐,总之是有个结果,还是很开心的[掉小珍珠了][掉小珍珠了]'''rst = openai.Completion.create(model="text-davinci-003", prompt= s,max_tokens=15,temperature=0
)print(rst['choices'][0]["text"])# output: \n\n这是求助贴

直接进去还没有chatGPT的API,但有 text-davinci-003 这一强大的模型,它基于GPT3大模型,使用了跟chatGPT相似的instruction训练,亲测效果很好,跟chatGPT差不多,甚至可以说就是chatGPT了。最终,用API标注了500条左右的数据,然后又人工标注了100条数据作为测试集。

模型与训练

训练的基本策略为使用伪标签技术,即先使用少量数据训练一个模型,让这个模型去标数据,然后用其标注的数据集进行训练,最后结果往往会超过原来那个标注的模型。
由于500条数据仍然很小,属于few-shot的范围了,因此希望使用尽量大的模型,一般模型也大,表现往往越好,大模型的few-shot能力也强,我在AutoDL上租了个24GB显存的A5000GPU,最大也就能训练1.3B大小的模型,但经过一系列实验后发现,居然是roberta-large表现最好,在我那个100数据的小测试集上F1 score超过了90%,然后用它对剩下的3万多条数据进行预测,生成标注数据集,最后使用该数据集训练一个新模型。
由于后期要在cpu上运行,因此希望使用尽量小的模型,这里选择了腾讯的 uer/chinese_roberta_L-4_H-512 模型进行训练,训练结果出人意料的好(也许是测试集太小,不准确),如下图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

训练完成后的模型在roberta4h512文件夹中,可通过huggingface本地读取,读取示例如下:

from transformers import AutoTokenizer, AutoModelForSequenceClassification
model_name = "roberta4h512"
model = AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

预测过滤

我们把爬回来的帖子中预测为招聘信息的帖子留下来,其他的过滤掉即可。爬虫程序一天执行一次,可以采用类似懒加载的方式加载模型,为了性能,需要分batch进行计算。预测代码如下:

from transformers import AutoTokenizer, AutoModelForSequenceClassification
def batch_generate(texts, tokenizer, model, id2label = {0: '招聘信息', 1: '经验贴', 2: '求助贴'}, max_length = 128):inputs = tokenizer( texts, return_tensors="pt", max_length=128, padding=True, truncation=True)outputs = model(**inputs).logits.argmax(-1).tolist()return [id2label[x] for x in outputs]def model_predict(text_list, model_name = "roberta4h512", batch_size = 16):if not text_list: return []model = AutoModelForSequenceClassification.from_pretrained(model_name)tokenizer = AutoTokenizer.from_pretrained(model_name)model.eval()result, start = [], 0while(start < len(text_list)):result.extend(batch_generate(text_list[start : start + batch_size], tokenizer, model))start += batch_sizereturn result

使用示例如下:


ss = ['秋招大结局(泪目了)。家人们泪目了,一波三折之后获得的小奖状,已经准备春招了,没想到被捞啦,嗐,总之是有个结果,还是很开心的[掉小珍珠了][掉小珍珠了]','找到工作之后还要继续找吗。5k 加班严重 春招还想继续找 大家有什么好的建议 #我的求职思考# ...双非应届本科 拿了一个广州嵌入式offer 待遇9.'
]print(model_predict(ss))# output: ['经验贴', '求助贴']

项目guthub地址:https://github.com/chadqiu/newcoder-crawler

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

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

相关文章

chatgpt赋能python:Python画图设置指南

Python画图设置指南 引言 Python是一种高级编程语言&#xff0c;在数据科学及数据可视化领域中越来越受欢迎。Python拥有众多的绘图库&#xff0c;例如matplotlib和seaborn。但是&#xff0c;你需要花费时间和精力在图的布局、颜色、字体等方面的调整上&#xff0c;以提高图表…

今日份安利:智能写诗的软件哪个好?

在传统的文学领域中&#xff0c;诗歌是一种高度艺术化的表达方式。然而&#xff0c;在科技的加持下&#xff0c;AI写诗生成器已经成为了一种新的创作方式。这些机器人诗人可以从大量的语料库中学习和理解诗歌的结构和意义&#xff0c;进而生成出令人惊叹的诗歌作品。对于那些渴…

川核灵境|三月AIGC新品热潮,AI 2.0时代已扑面而来

在元宇宙、Web3.0等概念风靡的2022年&#xff0c;AI凭借“创作”强势崛起&#xff0c;这预示着AIGC元年已经开启&#xff0c;下一个万亿赛道即将爆发。2023年&#xff0c;将是AIGC与Web3、元宇宙密切结合并将爆发的一年。三月再次迎来AIGC新品热潮&#xff0c;一场资本的盛宴正…

GPT Demo 分享|日不落直播间接入虚拟人AI互动

摘要 虚拟人和数字人是人工智能技术在现实生活中的具体应用&#xff0c;它们可以为人们的生活和工作带来便利和创新。在直播间场景里&#xff0c;虚拟人和数字人可用于直播主播、智能客服、营销推广等。接入GPT的虚拟人像是加了超强buff&#xff0c;具备更强大的自然语言处理能…

虚拟数字人成短视频/直播主阵地,虚拟人提升数字内容生产效率

由于短视频在传播便携性、功能性和交互性等多个方面的优势&#xff0c;短视频已逐渐成为现代社会情感表达和信息传播的重要载体。尤其随着移动互联网的普及和碎片化信息迅捷传播需求的高涨&#xff0c;各行各业的内容创作者纷纷涌入视频内容赛道&#xff0c;短视频成为了许多企…

AI数字人主播营销崛起,李佳琦还能继续保持领先地位吗?

“你们能想象我们的客户1万多平方米办公室只剩下几千个数字人在通宵直播吗&#xff1f;一个晚上赚几百万&#xff0c;基本上成本一晚上就赚回来了。”这是一名网友对数字人的发言。 随着今年ChatGPT掀起的人工智能大模型热潮&#xff0c;数字人又迎来一轮更加磅礴的爆发&#…

chatgpt赋能python:Python并行线程介绍:提高程序运行效率

Python并行线程介绍&#xff1a;提高程序运行效率 概述 随着计算机硬件的发展&#xff0c;越来越多的应用需要充分利用计算机的资源来提高程序运行效率。并行计算通过同时使用多个计算资源&#xff08;如CPU或GPU&#xff09;来加速计算过程。Python语言作为一种高效、易读易…

上市公司高管CEO员工数据大全 1991-2021年上市公司高管CEO教育背景学历结构薪酬职务任期年龄出生地 员工学历结构人员结构

&#xff08;1&#xff09;上市公司高管教育背景、学历结构&#xff0c;且含有多份不同来源的100多万数据集&#xff1b;包含 简历、出生地、年龄、教育背景、学历结构、薪酬、职务、股权期权等 &#xff08;2&#xff09;上市公司CEO教育背景、学历结构数据集&#xff0c;包含…

2004-2020中小企业板上市公司财务报表股票交易董事高管等面板数据

1200变量&#xff01;中小企业板上市公司面板数据大全 2004-2020年 1、时间&#xff1a;2004-2020年 2、数据范围&#xff1a;共计973家上市公司 3、数据指标&#xff1a;包括财务报表、股票交易、董事高管等1200变量 4、用途&#xff1a;进行上市公司高管股权激励与公司绩…

【AI实战】快速搭建中文 Alpaca 33B 大模型 Chinese-Alpaca-33B

【AI实战】快速搭建中文 Alpaca 33B 大模型 Chinese-Alpaca-33B 中文 33B 大模型 Chinese-Alpaca-33B环境配置搭建过程1.拉取 chinese-alpaca-lora-33b2.合并lora权重3.llaa.cpp量化模型准备模型权重转换为ggml的FP16格式对FP16模型进行4-bit量化 测试参考 中文 33B 大模型 Chi…

OpenAI的人工智能语音识别模型Whisper详解及使用

1 whisper介绍 拥有ChatGPT语言模型的OpenAI公司&#xff0c;开源了 Whisper 自动语音识别系统&#xff0c;OpenAI 强调 Whisper 的语音识别能力已达到人类水准。 Whisper是一个通用的语音识别模型&#xff0c;它使用了大量的多语言和多任务的监督数据来训练&#xff0c;能够在…

Mixlab助力生态伙伴:ChatGPT火种节,开始报名了

10年推动100万大学生创业 ChatGPT火种节 是什么&#xff1f; ChatGPT火种节是校园VC与清华x-lab主办的创客马拉松活动。目的是挖掘AI大语言模型相关的早期项目&#xff0c;激活清华周边的人工智能创业者社群&#xff0c;活跃北京中关村的高校数字创业生态。 火种节将用48小时&a…

如何更好地蒸馏ChatGPT模型能力:Lion闭源大型语言模型的对抗性蒸馏模型原理及实验工作介绍...

来自&#xff1a;老刘说NLP 进NLP群—>加入NLP交流群 如何将ChatGPT的能力蒸馏到另一个大模型&#xff0c;是当前许多大模型研发的研发范式。当前许多模型都是采用chatgpt来生成微调数据&#xff0c;如self instruct&#xff0c;然后加以微调&#xff0c;这其实也是一种数据…

ChatGPT提示词工程师教程-摘要

我觉得这一期的内容比较划水&#xff0c;实际上还是上一期“迭代”的内容&#xff0c;只是将迭代的内容更具体地落到“摘要”这个功能上。 实际应用&#xff1a;可以对网站上大量的用户评论进行摘要&#xff0c;生成一个面板&#xff0c;可以通过点击摘要看具体的评论。

爆火的Auto-GPT:实战及运行体验

Auto-GPT可以说是目前AI应用方向最火爆的项目了&#xff0c;自从3月份上线以来&#xff0c;一个月疯狂拦下将近7万star&#xff08;截至本文写稿时69.5k&#xff09;。它的目的是探索诸如GPT-4这样的大语言模型自主完成任务的能力。业界也有一些大佬出来表示这个项目真的很有趣…

把你的阿里巴巴图标库转成你自己的@ant-design/icons

背景 我们使用iconfont-阿里巴巴矢量图标库来管理自己的一套图标&#xff0c;并且基于它的js资源&#xff0c;封装了自己的icons图标组件。封装的方法是使用了antd提供的createFromIconfontCN方法 但随着图标库越来越大&#xff0c;JS资源文件也变得越来越大。在业务中&#x…

智能设计-阿里巴巴Banner设计

阿里巴巴Banner设计的核心在于优化会场页面拓展及Banner尺寸拓展两部分低水平重复建设工作&#xff0c;提升设计效率&#xff0c;压缩设计周期&#xff0c;为设计师保留充裕的创意时间。 色彩转移与页面拓展设计 分会场设计工作大致分为&#xff1a;色彩拓展、产品组合设计、…

阿里 ChatUI 开源:让对话美而简单

作者 | 孙辉 背景 对话式交互一直存在于我们的日常生活中&#xff0c;工作时使用的钉钉&#xff0c;联系朋友使用的微信&#xff0c;都属于对话式交互应用。 随着技术的发展&#xff0c;我们正在经历从「移动互联网时代」走向「人工智能时代」的过程中&#xff0c;人工智能扩大…

Prompt Engineering | 文本转换prompt

LLM非常擅长将输入转换成不同的格式&#xff0c;例如多语种文本翻译、拼写及语法纠正、语气调整、格式转换等。 文章目录 1、文本翻译1.1、中文转西班牙语1.2、识别语种1.3、多语种翻译1.4、翻译正式语气1.4、通用翻译器 2、语气 / 风格调整3、格式转换4、拼写及语法纠正5、一个…

vue3 实现 chatgpt 的打字机效果

在做 chatgpt 镜像站的时候&#xff0c;发现有些镜像站是没做打字机的光标效果的&#xff0c;就只是文字输出&#xff0c;是他们不想做吗&#xff1f;反正我想做。于是我仔细研究了一下&#xff0c;实现了打字机效果加光标的效果&#xff0c;现在分享一下我的解决方案以及效果图…