案例: 利用 Hugging Face 进行复杂文本分类
Witty 与 Hugging Face 专家加速计划的成功案例
如果你对如何更快构建 ML 解决方案感兴趣,请访问 专家加速计划 登陆页面并通过 填写表单 联系我们!
业务背景
随着 IT 技术不断地在发展并重塑我们的世界,在行业内创造一个更加多样化和包容性的环境势在必行。旨在应对这一挑战,Witty Works 于 2018 年成立了。 Witty Works 起初是一家为组织提供多元化建议的咨询公司,主要帮助这些组织使用包容性语言撰写招聘广告。为了进一步拓展这项工作,Witty Works 在 2019 年构建了一个网络应用程序,以帮助用户用英语、法语和德语编写包容性的招聘广告。其写作助手可以作为浏览器扩展程序使用,从而迅速扩大了使用范围,人们可方便用它来自动修复和解释电子邮件、Linkedin 帖子、招聘广告等内容中的潜在偏见。该程序为内部和外部沟通提供了一种解决方案,通过一种循序渐进方式,高亮出有偏见的词语和短语并解释其存在的潜在偏见,从而促进文化变革。

首次实验
Witty Works 起初选择了一种基础的机器学习方法来从头开始构建他们的助手。对预训练的 spaCy 模型进行迁移学习,通过此方法,助手可以:
- 分析文本并将单词转换为词干,
- 进行语言学分析,
- 从文本中提取语言学特征 (复数和单数形式、性别) 、词性标签 (代词、动词、名词、形容词等) 、词依存标签、命名实体识别等。
通过使用语言学特征并用特定知识库来检测和过滤所有单词,助手可以高亮非包容性词汇并实时建议替代方案。
挑战
Witty Works 建立了一个词汇表,其中德语和英语两种语言各有大约 2300 个非包容性的词汇和短语。上述基础方法对 85% 的词汇有效,但对上下文相关的词汇无效。因此,需要构建一个上下文相关的非包容性词分类器。这样的挑战 (理解上下文而不是仅识别语言学特征) 使得使用 Hugging Face transformers 变得必要。
上下文相关的非包容性词示例:
Fossil fuels are not renewable resources.和He is an old fossil.两句中的fossil。You will have a flexible schedule.和You should keep your schedule flexible.两句中的flexible。
Hugging Face 专家计划 提供的解决方案
获取如何正确选择 ML 方法的指导
最初选择的方法是使用基本版 transformers 模型 (用于提取特定非包容性词的嵌入)。 Hugging Face 专家建议从上下文相关的词嵌入切换到上下文相关的句子嵌入。在该方法中,句子中每个词的表示取决于其上下文。
Hugging Face 专家建议使用 Sentence Transformers 架构为整个句子生成嵌入。使用该方法,语义相似的句子间的距离小,而语义差距大的句子间的距离也大。
在该方法中,Sentence Transformers 使用 Siamese 网络和三元组网络结构来修改预训练的 transformer 模型,以生成 “语义上有意义” 的句子嵌入。
生成的句子嵌入作为基于 KNN 或逻辑回归的经典分类器的输入,以构建上下文相关的非包容性词分类器。
“我们根据每个词的句内上下文生成上下文相关的嵌入向量 (BERT 嵌入)。然后,我们只保留 “目标” 词元的嵌入,计算最小角度 (余弦相似度)”
—— Witty Works 首席数据科学家 Elena Nazarenko
要微调一个基于基本版 transformers 的分类器 (例如简单的 BERT 模型),Witty Works 需要大量标注数据。每个类别的目标词都需要数百个样本。然而,这样的注释过程既昂贵又耗时,Witty Works 无法承受。
获取如何正确选择 ML 库的指导
Hugging Face 专家建议使用 Sentence Transformers Fine-tuning 库 (又名 SetFit),这是一个对 Sentence Transformers 模型进行少样本微调的有效框架。结合对比学习和语义句子相似度,SetFit 在标注数据很少的文本分类任务上实现了高精度。
“用于文本分类任务的 SetFit 是一个值得添加到 ML 工具箱中的好工具。”
—— Hugging Face 的首席布道官 Julien Simon
Witty Works 团队发现每个特定词汇只需 15-20 个标注句子,精度就足够了。
“最终,因为不需要创建一个大型标注数据集,我们节省了时间和金钱。”
—— Witty Works 首席数据科学家 Elena Nazarenko
减少句子数对于确保模型训练快速和高效至关重要。同时,出于另一个原因,这也是必要的: Witty Works 采用了一个明晰的、高度受监督的、基于规则的方法来 积极管理偏见。减少句子数对于减少人工审核训练集中句子的工作量非常重要。
获取如何正确选择 ML 模型的指导
Witty Works 面临的一个主要挑战是模型部署后需要达到低延迟。没有人能容忍等待 3 分钟才能获得改进文本的建议! Hugging Face 和 Witty Works 双方均试验了多个 sentence transformer 模型,最终选择了 mpnet-base-v2,将其与逻辑回归和 KNN 结合使用。
在 Google Colab 上进行首次测试后,Hugging Face 专家指导 Witty Works 在 Azure 上部署该模型。由于模型本身已经足够快,因此无需额外的优化。
“与 Hugging Face 合作为我们节省了大量时间和金钱。
在实施复杂的文本分类用例时,人们可能会感到迷茫。
由于它是最受欢迎的任务之一,因此 Hub 上有很多模型。
Hugging Face 专家指导我从大量基于 transformer 的模型中选择出最合适的模型。
另外,模型部署过程中我也得到了很好的支持。”
—— Witty Works 首席数据科学家 Elena Nazarenko
结果和结论
训练集中句子的数量从每个单词 100-200 个减少到每个单词 15-20 个。 Witty Works 最终获得了 0.92 的准确度,并以最少的 DevOps 工作量成功地在 Azure 上部署了自定义模型!
“独自从事 IT 项目可能具有挑战性,即使是做一个尝鲜版 (Early Access Product, EAP) 对初创企业来说是一项很大的投资,Hugging Face 专家计划是一个便宜且有意义的获取陪练和指导的途径。”
—— Lukas Kahwe Smith 首席技术官兼 Witty Works 联合创始人
在 Hugging Face 专家的指导下,Witty Works 以 Hugging Face 的方式实施了新的 ML 工作流程,节省了时间和金钱。
“Hugging Face 式的工作流建立法:
找到开源的预训练模型,
立即评估它们,
看看哪些有效,哪些无效。
通过迭代,你上手新东西会更快”
—— Hugging Face 的首席布道官 Julien Simon
如果你或你的团队有兴趣通过 Hugging Face 专家计划加速你的 ML 路线图,请访问 hf.co/support 了解更多信息。
英文原文: https://hf.co/blog/classification-use-cases
原文作者: Julien Simon,Violette Lepercq,Florent Gbelidji,Elena Nazarenko,Lukas Kahwe Smith
译者: Matrix Yao (姚伟峰),英特尔深度学习工程师,工作方向为 transformer-family 模型在各模态数据上的应用及大规模模型的训练推理。
审校/排版: zhongdongy (阿东)
案例: 利用 Hugging Face 进行复杂文本分类的更多相关文章
- NLP(十六)轻松上手文本分类
背景介绍 文本分类是NLP中的常见的重要任务之一,它的主要功能就是将输入的文本以及文本的类别训练出一个模型,使之具有一定的泛化能力,能够对新文本进行较好地预测.它的应用很广泛,在很多领域发挥着重要 ...
- NLTK学习笔记(六):利用机器学习进行文本分类
目录 一.监督式分类:建立在训练语料基础上的分类 特征提取器和朴素贝叶斯分类器 过拟合:当特征过多 错误分析 二.实例:文本分类和词性标注 文本分类 词性标注:"决策树"分类器 三 ...
- 利用jieba,word2vec,LR进行搜狐新闻文本分类
一.简介 1)jieba 中文叫做结巴,是一款中文分词工具,https://github.com/fxsjy/jieba 2)word2vec 单词向量化工具,https://radimrehurek ...
- 利用RNN进行中文文本分类(数据集是复旦中文语料)
利用TfidfVectorizer进行中文文本分类(数据集是复旦中文语料) 1.训练词向量 数据预处理参考利用TfidfVectorizer进行中文文本分类(数据集是复旦中文语料) ,现在我们有了分词 ...
- 利用CNN进行中文文本分类(数据集是复旦中文语料)
利用TfidfVectorizer进行中文文本分类(数据集是复旦中文语料) 利用RNN进行中文文本分类(数据集是复旦中文语料) 上一节我们利用了RNN(GRU)对中文文本进行了分类,本节我们将继续使用 ...
- 文本分类学习 (五) 机器学习SVM的前奏-特征提取(卡方检验续集)
前言: 上一篇比较详细的介绍了卡方检验和卡方分布.这篇我们就实际操刀,找到一些训练集,正所谓纸上得来终觉浅,绝知此事要躬行.然而我在躬行的时候,发现了卡方检验对于文本分类来说应该把公式再变形一般,那样 ...
- 百度开源其NLP主题模型工具包,文本分类等场景可直接使用L——LDA进行主题选择本质就是降维,然后用于推荐或者分类
2017年7月4日,百度开源了一款主题模型项目,名曰:Familia. InfoQ记者第一时间联系到百度Familia项目负责人姜迪并对他进行采访,在本文中,他将为我们解析Familia项目的技术细节 ...
- Pytorch——BERT 预训练模型及文本分类
BERT 预训练模型及文本分类 介绍 如果你关注自然语言处理技术的发展,那你一定听说过 BERT,它的诞生对自然语言处理领域具有着里程碑式的意义.本次试验将介绍 BERT 的模型结构,以及将其应用于文 ...
- NLP文本分类
引言 其实最近挺纠结的,有一点点焦虑,因为自己一直都期望往自然语言处理的方向发展,梦想成为一名NLP算法工程师,也正是我喜欢的事,而不是为了生存而工作.我觉得这也是我这辈子为数不多的剩下的可以自己去追 ...
- 文本分类:Keras+RNN vs传统机器学习
摘要:本文通过Keras实现了一个RNN文本分类学习的案例,并详细介绍了循环神经网络原理知识及与机器学习对比. 本文分享自华为云社区<基于Keras+RNN的文本分类vs基于传统机器学习的文本分 ...
随机推荐
- SQL注入绕过某waf的详细过程。
0x00起因 看到大家都有绕waf的payload,想了想,这样下去不行啊.总不能找人家要吧,于是我开启了电脑,开始我的bypass之路. 0x01过程 准备完毕后,开始,首先判断注入and 1=1 ...
- 微软开源 Python 自动化神器 Playwright
背景 逛博客时候突然看到 Playwright web自动化,感觉很有意思,就翻看了很多博客,简单记录一下. 简介 Playwright是一个强大的Python库,仅用一个API即可自动执行Chrom ...
- python使用openpyxl读取合并单元格的值(转)
目录问题:解决思路:问题:假设在test.xlsx的"Sheet1"工作表中,A1:D3区域的值如下:要求给定指定的行.列以及对应的工作表作为参数,能够正确解析合并单元格,获取指定 ...
- Java基础Day7-值传递和引用传递
一.值传递 Java都是值传递. 值传递:是指在调用函数时,将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,就不会影响到实际参数. 值传递是对基本数据类型而言. 二.引用传递 引用传递 ...
- nrm ls报错及npm镜像站点测速、切换
报错截图: 解决方法: 1.win键,搜索powershell,点击"以管理员身份运行" 2.粘贴下面命令,回车,敲y,回车 set-ExecutionPolicy RemoteS ...
- sqlite3 replace函数服务器端替换一个字段中数据的例子 ;拼接字段字符串
1.把字段filePath中所有类似 '/usr/local/Trolltech/%'的字符串都替换成 '/zzzzz/' update EstDlpFileAttribute set ...
- 字符流---->字符过滤流 缓冲流 : -----> printWrite用法:和BufferedReader用法
printWrite用法:1.创建字符节点流FileWriter fw = new FileWriter("Files\\bufchar.txt");2创建字符过滤流 PrintW ...
- if判断while循环
- springboot项目控制台日志不是彩色的原因
采用springboot的方式启动,而不是application的方式启动,即可
- css 多行文本展开收起
<template> <div class="content"> <div :class="[isOpen ? 'text' : 'text ...