使用 Python 开始进行情感分析

情感分析是通过极性(通常为正面、负面或中性)对文本数据进行标记的自动化过程,旨在使公司能够大规模分析数据并实现业务流程自动化。通过利用 Hugging Face Hub 和 transformers 库,开发人员现在只需极少的代码且无需任何机器学习经验即可实现最先进的情感分析。

使用预训练模型实现情感分析

开发人员可以使用 transformers 库中的 pipeline 类将情感分析集成到 Python 应用程序中。这种方法允许使用托管在 Hugging Face Hub 上的默认或特定模型进行即时预测。

快速实现

集成默认的情感分析模型仅需五行代码:

pip install -q transformers
from transformers import pipeline
sentiment_pipeline = pipeline("sentiment-analysis")
data = ["I love you", "I hate you"]
sentiment_pipeline(data)

推荐模型

根据使用场景,来自 Hub 的不同模型可能更为合适:

  • Twitter-roberta-base-sentiment: 一个在约 5800 万条推文上训练的 roBERTa 模型。
  • Bert-base-multilingual-uncased-sentiment: 一个针对六种语言(英语、荷兰语、德语、法语、西班牙语和意大利语)的产品评论进行微调的模型。
  • Distilbert-base-uncased-emotion: 一个旨在检测特定情感(如喜悦、悲伤、爱、愤怒、恐惧和惊讶)的模型。

构建自定义情感分析模型

虽然预训练模型提供了一个强大的起点,但在特定领域的数据上微调模型可以提高准确性。Hugging Face 提供两条主要的定制路径:面向开发人员的 Trainer API 和面向寻求无代码解决方案的用户提供的 AutoNLP。

使用 Trainer API 进行微调

使用 Trainer API 允许开发人员获取预训练模型并使用额外的训练数据对其进行调整。例如,在 IMDB 数据集上微调 DistilBERT 模型(其体积比 BERT 小 40%,速度快 60%,同时保留了超过 95% 的性能)涉及以下步骤:

  1. 预处理: 使用 AutoTokenizer 准备文本输入,并使用 DataCollatorWithPadding 将样本转换为 PyTorch 张量。
  2. 模型配置: 使用 AutoModelForSequenceClassification 将 DistilBERT 的预训练头替换为分类头。
  3. 训练: 利用 Trainer 类来管理训练循环、学习率和评估指标(如准确率和 F1 分数)。

在提供的使用来自 IMDB 数据集的 3,000 个样本的示例中,该过程在 GPU 上大约 10 分钟内实现了 88% 的准确率和 89% 的 F1 分数。

使用 AutoNLP 进行无代码训练

AutoNLP 是一个无需编写代码即可自动训练、评估和部署 NLP 模型的工具。用户上传其数据集,映射文本和目标列,然后 AutoNLP 会处理超参数调优和模型选择。在针对 Sentiment140 数据集 3,000 个样本的测试案例中,AutoNLP 生成了一个准确率为 77.87% 的模型。

实际应用:分析社交媒体数据

情感分析可以应用于实时数据流(如 Twitter),以获取业务洞察。分析推文的一个实际工作流程包括:

  1. 数据收集: 使用 Tweepy 库与 Twitter API 交互并根据特定标签(例如 #NFTs)提取推文。
  2. 推理: 通过 pipeline 类应用 Hub 模型,例如 finiteautomata/bertweet-base-sentiment-analysis,来标记每条推文。
  3. 可视化: 使用 pandas 进行数据组织,并使用 matplotlibwordcloud 来可视化情感分布和关键词。

在对 1,000 条关于 NFT 的推文进行的样本分析中,结果显示 56.1% 的对话是正面的,而只有 2.0% 是负面的。

Sources

相关