如何用spaCy训练一个文本分类模型
文本分类是将文本分成不同类别的过程。SpaCy通过textcat组件能够方便地进行自定义文本结构化分类。
文本分类通常用于对影评、酒店服务评论、新闻数据、文本主题等进行分类,或根据投诉类型对客户支持电子邮件进行分类等情况。对于实际案例,训练自定义文本分类模型能够提高分类准确率。本文将向您展示如何使用spaCy库构建自定义文本分类器。本文的案例是基于《火电厂辅机运行规程》中的小标题进行分类的。
- 目录
- 什么是自定义文本分类器模型?
- spaCy自定义文本分类入门
- 如何准备所需格式的训练数据集?
- 如何编写评分函数?
- 训练模型并对结果进行评估打分
- 用新文本测试模型
- 先来看一个文本分类的典型用例。
我们在从亚马逊买了一本书之后会填写一份评价反馈。这些评论会帮助商家分析问题并改进服务。我们来看看这个过程:有数百万条评论是由客户填写的,有没有可能手动浏览每一条评论,看看是赞赏还是否定?
当然,不!第一步是将所有审查分为积极和消极两类。然后,你可以很容易地分析有多少人不满意以及为什么不满意。将文本分类为不同 组/标签 的过程称为文本分类。
文本分类的实现方法多种多样。我们将使用spaCy对文本进行分类。spaCy是一个非常流行的NLP库,它提供了最先进(state-of-the-art)的组件。对于实际应用,最好使用经过训练的自定义模型进行分类。下一节将首先介绍什么是定制模型,以及为什么我们需要定制。
##1 什么是自定义文本分类器模型?
假设你有一大堆电影评论/客户评论。你希望把每一个评论都分为正面的或负面的。如果使用默认的spaCy分类器,结果可能不是很好。但是,如果自己收集电影/客户评论的标记数据集,并在此基础上培训自己的模型呢?
结果会更好更准确!你可以通过训练自定义文本分类器来实现。首先在标记好数据集上对它进行训练,并为我们在类似上下文中的使用它做好准备。这非常有用,尤其是在数据量大的情况下,效果更好。
在接下来的部分中,我们将逐步探索如何在spaCy中训练自定义文本分类模型。
2 spaCy自定义文本分类入门
spaCy是一个用于执行NLP任务(如分类)的高级库。spaCy之所以备受青睐,一个重要原因是它允许轻松地构建或扩展文本分类模型。我们将使用这个功能进行文本分类。
接下来,我将用一个真实的例子演示如何训练文本分类器。假设你有文本数据,其中包含文本和分类标记。我们的任务是使用这些数据并训练我们的模型。最后,模型应该能够将一个新的没见过的文本上给出正确的分类标记。
将数据集读入CSV并查看内容。对于我们的任务,我们只需要2列。包含文本和分类标签栏。让我们将这两列提取到一个Dataframe中。
# Import pandas & read csv file
import pandas as pd
cat_set=pd.read_csv("./data/cat_set.csv")
# 提取列,并查看dataframe
cat_set = cat_set[['TEXT','CAT']]
cat_set.head(10)
- | TEXT | CAT |
---|---|---|
0 | 润滑油净化装置的停运 | S |
1 | 汽动给水泵组事故处理 | E |
2 | 启动锅炉运行调整的主要任务 | M |
3 | 湿式搅拌机的启动 | R |
4 | 一次风机并列 | O |
5 | 引风机启动 | R |
6 | 高压流化风机启动前的检查 | B |
7 | 主机冷油器切换 | O |
8 | 真空系统投运 | R |
9 | 一次风机停止(两台风机运行停止一台) | S |
CAT标记说明: