低数据需求分类技术
概述
一种称为文本分类的机器学习方法会自动对文本进行标记或分类。文本分类器可以使用自然语言处理 (NLP) 根据情感、主题和消费者意图对文本进行评估和分类,比人类更快、更正确。
人们很难跟上来自各种渠道的数据量,包括电子邮件、聊天、网页、社交媒体、在线评论、支持问题、调查结果等等。
文本分类如何工作?
在开始使用机器学习构建分类器之前,您必须将文本翻译成机器可以理解的内容。为此经常使用词袋,其中向量表示预定术语列表中单词的频率。
文本分类器模型被给予训练数据,其中包括数据矢量化后每个文本样本和标签的特征向量。该模型将能够通过足够的训练样本生成精确的预测。
让我们看看一些最流行的文本分类算法:支持向量机、朴素贝叶斯、卷积神经网络 (CNN)、循环神经网络 (RNN)。
话虽如此,本文将研究您可以在下一个 NLP 项目中使用的各种文本分类方法,并且只需要少量代码和很少甚至不需要训练数据。
所使用的技术利用了 Transformer 模型,该模型在文本分类方面越来越好。您必须熟悉所有三种方法,因为选择其中一种方法可能会为您即将进行的文本分类工作节省大量时间。
已微调的变压器模型
使用 Transformer 模型对文本进行分类的最典型方法是调整 BERT 等预训练模型。有了足够的数据和 Happy Transformer,开发文本分类模型是一个简单的过程。
要找到可以完成您任务的模特,我建议您在这种情况下查看 Hugging Face 的模特中心。访问此页面可查看中心当前可用的文本分类模型列表。要选择满足您需求的型号,您还可以利用其众多的搜索功能。
继续,您将必须安装Happy Transformer,以便可以将其导入项目并使用模型HappyTextToText
。
# install Happy Transformer.
pip install happytransformer
# import the HappyTextClassification
From happytransformer import HappyTextClassification
实例化模型。您将提供前两个位置参数:模型类型和名称。应该为命名参数“num labels ”提供模型可以将文本分类的类别数量,在本例中为六类 - 悲伤、喜悦、爱、愤怒、恐惧和惊讶。
Happy_Classifer = HappyTextClassification("DISTILBERT", "bhadresh-savani/distilbert-base-uncased-emotion", num_labels=6)
简单的!现在您可以使用Happy_Classiferclassify_text()
模型的方法对文本进行分类。
text = "I had a lot of fun running today."
output = Happy_Classifer.classify_text(text)
print(output)
输出:
Output:
TextClassificationResult(label='joy', score=0.9929057359695435)
从屏幕上打印的输出来看,它是一个带有两个变量label
和 的数据类score
。
print(output.label)
print(output.score)
输出:
Output:
joy
0.9929057359695435
零样本 NLI 模型
在没有任何训练数据的情况下,经过自然语言推理 (NLI) 训练的模型可以将文本分类为任意数量的类别。找出一个输入是否与另一个输入相矛盾、是否中立或是否需要另一个输入是 NLI 的一个组成部分。通过重新表述模型的输入,宾夕法尼亚大学的研究人员提出了一种修改 NLI 模型以进行文本分类的方法。
通过 Hugging Face 的 Transformers 库,您只需几行代码即可采用零样本 NLI 文本分类模型。导入管道类,这是您将用来部署模型的类。
from transformers import pipeline
我们正在执行的操作和模型名称是 Pipeline 类加载模型所需的两个输入。该任务的名称是“零样本文本分类”,模型中心上最流行的零样本文本分类模型是“facebook/bart-large-mnli”,可以在 Hugging Face 的网站上找到。
task = "zero-shot-classification"
model = "facebook/bart-large-mnli"
classifier = pipeline(task, model)
给出情感分析任务的可能输入示例。
labels = ["negative", "positive"]
text = "I loved the movie so much."
现在可以通过调用分类器来对文本进行分类,将标签作为第二个位置参数传递,并将要分类的文本作为第一个位置参数传递。结果包含在作为输出的字典中。
output = classifier(text, labels)
print(output)
输出:
Output:
{'sequence': 'I loved the movie so much.', 'labels': ['positive', 'negative'], 'scores': [0.9705924391746521, 0.02940751425921917]}
该字典包含三个键:序列、标签和分数。您可以选择将标签设为正值及其相应的分数。
print(output["labels"][0])
print(output["scores"][0])
输出:
Output:
positive
0.9705924391746521
结论
这标志着本文的结束,您还可以阅读其他技术来使用低数据或无数据执行文本分类 - 零样本数据生成和使用文本生成模型的少样本学习。这是一个非常有趣的话题,我非常喜欢,我希望你也能学到一些东西。
关注我的博客,您将在其中获得提示、技巧和挑战,以保持您的技能敏锐。记得关注我哦!
- 点赞
- 收藏
- 关注作者
评论(0)