NLP-文本分类
对象
数据
大数据采集
短文本
句子
标题
商品评论
长文本
文章
标签类别
一般是人工划分(二分类或多分类)
政治、体育、军事
正能量、负能量
好评、差评
流程
获取训练集
爬虫
离线数据
流计算
特征工程
预处理
清洗
非文本数据:HTML标签、URL地址等
长串数字或字母:看特定的业务场景而定
一般可去除:手机号、用户名ID等内容
转换为归一化的特征:
是否出现长串的布尔值特征:HAS_LONG_DIGITAL
按长度归一的特征:DIGITAL_LEN_10
无意义文本:按业务场景定哪些文本是不需要被模型学习的
变形词识别:特殊符号替换、同音近型替换、简繁替换等
通过映射表
拼音首字母来鉴别同音替换
用
Word2vec
词向量来对比变形词与上下文的语意关联度,从而识别出该词是否经过了变形
去停用词和标点符号:代词、介词、连接词
需根据不同情景,做针对性调整
特征提取
分词
中文
基于字符串匹配
这是一种基于词典的中文分词,核心是首先建立统一的词典表,当需要对一个句子进行分词时,首先将句子拆分成多个部分,将每一个部分与字典一一对应,如果该词语在词典中,分词成功,否则继续拆分匹配直到成功
优点是速度快,时间复杂度可以保持在O(n),实现简单,效果尚可;但对歧义和未登录词处理效果不佳
基于理解的分词:句法、语义分析
基于统计的分词
统计学认为分词是一个概率最大化问题,即拆分句子,基于语料库,统计相邻的字组成的词语出现的概率,相邻的词出现的次数多,就出现的概率大,按照概率值进行分词,所以一个完整的语料库很重要
N元文法模型(N-gram),隐马尔可夫模型(Hidden Markov Model ,HMM),最大熵模型(ME),条件随机场模型(Conditional Random Fields,CRF)
英文:空格和标点符号来分词
二元语法:将相邻字符作为二元语法输出(根据清华大学2016年的工作:THUCTC: An Efficient Chinese Text Classifier)
特征组合与分桶标记(下文采用的文本例句:“小明去学校上自习”)
特征组合:将文本按一定长度阈值划分为两类(长文本的长度大于20,否则为短文本),如,“长文本小明”、“短文本学校”,通过组合特征使得模型从非线性的角度进行分类
分桶标记:采用不同的特征方法,如“skipgram:小明_学校”、“wordseg:小明”
特征选择(sklearn在文本分类任务中进行特征选择)
方差域(VarianceThreshold):是一个简单的用于特征提取的baseline方法。它将移除所有variance不满足一些阀值的特征。缺省情况下,它会移除所有
0-variance
的特征(表示该feature下具有相同值)
文本表示
词袋:忽略其词序和语法,句法,将文本仅仅看做是一个词集合。若词集合共有NN个词,每个文本表示为一个NN维向量,元素为0/1,表示该文本是否包含对应的词。( 0, 0, 0, 0, .... , 1, ... 0, 0, 0, 0)
n-gram词袋:与词袋模型类似,考虑了局部的顺序信息,但是向量的维度过大,基本不采用。如果词集合大小为N,则bi-gram的单词总数为N2向量空间模型。
skip-gram词袋:有别于
word2vec
中获得词向量的skip-gram
模型,这里中的skip-gram
模型表示的是一种衍生自n-gram
模型的语言模型。对于例句“小明去学校上自习”,常用的1-skip-bi-gram
得到的特征为{“小明学校”,“去上”,“学校_自习”}。一般情况下,skip-gram
可以做为n-gram
的补充,从而提取一些可能遗漏的有效特征。向量空间模型:以词袋模型为基础,向量空间模型通过特征选择降低维度,通过特征权重计算增加稠密性。
特征权重计算
布尔权重:若出现则为1,否则为0,也就是词袋模型
TFIDF则是基于词频来进行定义权重
基于熵的则是将出现在同一文档的特征赋予较高的权重
构造分类器(模型)
传统机器学习
NavieBayes
KNN
决策树
SVM
GBDT / XGBOOST
深度学习
FastText
TextCNN
TextRNN
RCNN
BERT
混合(深度学习):深度学习模型之间的混合,如cnn+lstm、lstm+attention
分类
评估
accuracy和error rate
acc是准确率,指正确预测的样本数与所有测试样本数的比率
acc + err = 1
precision/recall/F1
通过混淆矩阵计算得出:P为Positive,N为Negative
4种组合
TP(true positive):预测为P,答案是P
FP(false positive):预测是P,答案是N
TN(true negative):预测是N,答案是N
FN(false negative):预测是N,答案是P
样本全集 = TP U FP U FN U TN (U为"并集运算符")
任何一个样本属于且只属于4个集合中的一个,即它们没有交集
precision是精确率,指预测结果中正类数量占全部结果的比率:P = TP / (TP + FP)
recall是召回率,指正类被找出来的比率:R = TP / (TP + FN)
F1:指精确率和召回率的调和平均值:F1 = 2 x P x R / (P + R)
一般而言,精确率和召回率比较难平衡,召回率高的系统往往精确率低,反之亦然
exact match(EM)
mean reciprocal rank(MRR)
应用
垃圾邮件/广告过滤/反黄识别
根据标题为图文视频打标签
根据用户阅读内容建立画像标签
电商商品评论分析
自动问答(QA)
情感分类
自然语言推理
阅读理解
问题
基于规则(句法、语义分析)
人力:人为借助经验定义规则
维护性
规则变更需要人工重新总结
规则太多容易产生冲突
扩展性:依赖业务场景,难以迁移
传统机器学习
人工指定特征,特征工程耦合业务场景,难以泛化到其他场景
深度学习
复杂的场景下,缺乏数据集,可以试试Google Dataset Search
对知识进行建模:需要对文本信息中的知识进行建模,如构建知识库、知识图谱,并基于这些知识进行分析及推理
可解释性不强
更小、更高效的模型:针对BERT来说。前段时间Google发布了预训练小模型ALBERT
小样本学习:当前深度学习的模型太依赖大量的标注数据
参考
Last updated
Was this helpful?