外观
文本分类核心方法:fastText与TextCNN详解
内容整理自学习笔记,仅供面试备考参考;不构成录用、培训或考试承诺。
1. 文本分类任务有哪些应用场景?
文本分类是机器学习中常见的监督学习任务,常见的应用场景包括:
| 应用场景 | 说明 |
|---|---|
| 情感分类 | 判断文本的情感倾向(正面/负面) |
| 新闻分类 | 将新闻按主题归类 |
| 主题分类 | 识别文本所属主题 |
| 问答匹配 | 判断问题与答案的匹配程度 |
| 意图识别 | 识别用户输入的意图(如客服系统) |
| 推断 | 文本蕴含关系判断 |
根据标签情况,文本分类还可分为二分类、多分类和多标签分类。
2. 文本分类的具体流程
文本分类的一般流程如下:
文本预处理 → 特征提取 → 文本表示 → 分类输出| 步骤 | 说明 |
|---|---|
| 文本预处理 | 分词、去除停用词等操作 |
| 特征提取 | 提取文本特征 |
| 文本表示 | 将文本转化为向量表示 |
| 分类输出 | 通过分类器输出类别 |
常用分词工具:HanLP、jieba、哈工大 LTP、北大 pkuseg 等。
3. fastText 的分类过程与优点
3.1 分类过程
fastText 首先把输入转化为词向量,取平均,再经过线性分类器得到类别。输入的词向量可以是预先训练好的,也可以随机初始化,跟着分类任务一起训练。
3.2 优点
| 优点 | 说明 |
|---|---|
| 训练速度快 | 在保持高精度的情况下加快了训练和测试速度 |
| 无需预训练词向量 | fastText 会自己训练词向量 |
| 层级 Softmax | 提升效率的优化手段 |
| char-level n-gram | 作为附加特征增强表示能力 |
4. TextCNN 进行文本分类的过程
卷积神经网络的核心思想是捕捉局部特征,对于文本来说,局部特征就是由若干单词组成的滑动窗口,类似于 N-gram。
4.1 网络结构
输入层(双通道)→ 卷积层(filter_size=2,3,4)→ 1-max pooling → 全连接 softmax| 层级 | 说明 |
|---|---|
| 输入层 | 句子矩阵 n×k,每行是词向量(维度=k)。采用双通道:一个静态(预训练且不变),一个动态(随训练更新) |
| 卷积层 | filter_size=(2,3,4) 的一维卷积;每种窗口大小通常有多个 filter(如 100 个),勿与「双通道词向量」混淆 |
| 池化层 | 1-max pooling,将不同长度句子变为定长表示 |
| 输出层 | 全连接 softmax 层,输出每个类别的概率 |
关键:TextCNN 能自动对 N-gram 特征进行组合和筛选,获得不同抽象层次的语义信息。
5. TextCNN 可调参数
| 参数 | 调优建议 |
|---|---|
| 输入词向量 | Word2Vec 或 GloVe,可选用预训练或随机初始化 |
| 卷积核大小 | 合理范围 1~10,句子较长可使用更大卷积核;找到最佳单 filter 后在其附近组合尝试 |
| 特征图个数 | 100~600 之间调参;增加时训练时间加长,性能降低时可加强正则化(dropout > 0.5) |
| 激活函数 | ReLU 或 tanh |
| 池化策略 | 1-max pooling 表现最佳,复杂任务可选 k-max |
| 正则化项 | dropout(<0.5)或 L2,但作用较小;L2 限制可大一些 |
6. 文本分类任务评估指标
| 指标 | 说明 |
|---|---|
| 准确率 | 预测正确的样本占总样本的比例 |
| 召回率 | 正例中被正确预测的比例 |
| ROC | 接收者操作特征曲线 |
| AUC | ROC 曲线下面积 |
| F1 | 精确率和召回率的调和平均 |
| 混淆矩阵 | 展示各类别的预测情况 |