本文引见了如何应用Hugging Face预训练言语模型对推文暗藏的心情启动分类。
Hugging Face上有各种基于Transformer的言语模型,专门用于处置言语了解和言语生成义务,包括但不限于:
文本分类义务的一个不凡又很经常出现的案例是心情剖析,其目的是识别给定文本的心情。“最繁难”的一类心情剖析言语模型经过训练后,确定输入文本(比如客户对产品的评价)是踊跃的还是消极的,或许是踊跃的、消极的还是中立的。这两个详细疑问区分被表述为二元分类义务或多类分类义务。
还有一些言语模型只管仍可以归为心情剖析模型,但经过训练后,可以将文本分类为几种心情,比如愤怒、快乐和悲伤等。
这篇基于Python的教程偏重于加载和说明经常使用一个Hugging Face预训练模型来分类与输入文本关系的关键心情。咱们将经常使用在Hugging Face核心上地下可用的心情数据集。这个数据集含有不可胜数条用英语写的推文信息。
加载数据集
咱们将运转以下指令,加载心情数据集中的训练数据:
!pip install>
上方是train_data变量中训练子集所蕴含内容的摘要:
Dataset({features: ['text', 'label'],num_rows: 16000})
心情数据集中的训练内容含有16000个与推文信息关系的实例。每个实例有两个特色:一个输入特色含有实践的信息文本,一个输入特色或标签含有其关系的心情(用数字标识符标识)。
0:悲伤
1:快乐
2:喜欢
3:愤怒
4:恐怖
5:惊喜
比如说,训练内容中的第一个标志实例被归类为“悲伤”心情:
train_data [0]
输入:
{'text': 'i didnt feel humiliated', 'label': 0}
加载言语模型
一旦咱们加载了数据,下一步就是从Hugging Face加载一个适合的预训练言语模型,用于咱们的指标心情检测义务。经常使用Hugging Face的Transformer库加载和经常使用言语模型有两种关键方法:
为了繁难起见,本教程偏重于经常使用管道来加载模型。管道要求最少指定言语义务的类型,并指定要加载的模型名(可选)。因为心情检测是文本分类疑问的一种十分不凡的方式,因此在加载模型时经常使用的义务参数应该是“text-classification”。
from transformers import pipelineclassifier = pipeline("text-classification",model="j-hartmann/emotion-english-distilroberta-base")
另一方面,剧烈倡导用“model”参数指定Hugging Face核心中一个特定模型的称号,该模型能够处置咱们的特定心情检测义务。否则,自动状况下,咱们或许会为这个特定的6类分类疑问加载一个没有经过数据训练的文本分类模型。
你或许会问自己:“我怎样知道经常使用哪个模型称号?”。答案很繁难:在Hugging Face网站上搜查一番,找到适合的模型,或许依据特定数据集(比如心情数据)训练的模型。
下一步是开局启动预测。管道使得这个推理环节十分繁难,只有要调用咱们新实例化的管道变量,并将输入文本作为参数来传递:
example_tweet = "I love hugging face transformers!"prediction = classifier(example_tweet)print(prediction)
结果,咱们获取一个预测标签和一个置信度分数:这个分数越凑近1,所做的预测就越“牢靠”。
[{'label': 'joy', 'score': 0.9825918674468994}]
所以,咱们的输入例子“I love hugging face transformers!”明白地传播了一种喜悦的心情。
你可以将多个输入文本传递给管道以同时口头几个预测,如下所示:
example_tweets = ["I love hugging face transformers!", "I really like coffeebut it's too bitter..."]prediction = classifier(example_tweets)print(prediction)
这个例子中的第二个输入关于模型口头自信分类更具应战性:
[{'label': 'joy', 'score': 0.9825918674468994}, {'label': 'sadness', 'score':0.38266682624816895}]
最后,咱们还可以从数据集传递一批实例,比如之前加载的“心情”数据。这个例子将前10个训练输入传递给咱们的言语模型管道,对它们的心情启动分类,而后输入一个含有每个预测标签的列表,将他们的置信度分数放在一边:
train_batch = train_data[:10]["text"]predictions = classifier(train_batch)labels = [x['label'] for x in predictions]print(labels)
输入:
['sadness', 'sadness', 'anger', 'joy', 'anger', 'sadness', 'surprise','fear', 'joy', 'joy']
print(train_data[:10]["label"])
输入:
[0, 0, 3, 2, 3, 0, 5, 4, 1, 2]
假设观察每个数字标识符所关联的心情,咱们可以看到,10个预测中有7个与这10个实例的实践标签相婚配。
你已知道如何经常使用Hugging Face transformer模型来检测文本心情,何不探求预训练的言语模型可以提供协助的其余用例和言语义务呢?
原文题目: Using Hugging Face Transformers for Emotion Detection in Text ,作者:Iván Palomares Carrascosa