自然语言处理NLP知识梳理

NLP相关知识梳理

  • 研究和应用领域
  • 研究难点
  • 学科掌握
  • 一般处理过程
    • 获取语料
    • NLP的几个层面
    • 语料预处理
    • 特征工程
    • 模型训练
    • 模型评估
    • 模型上线应用
    • 模型重构(非必须)

感谢知乎 @华天清 的总结 自然语言处理NLP知识梳理_第1张图片

研究和应用领域

  1. 自动分词
  2. 词性标注
  3. 句法分析
  4. 文本分类
  5. 信息抽取
  6. 文本生成
  7. 语音识别和生成
  8. 信息检索
  9. 问答系统
  10. 机器翻译
  11. 情感分析
  12. 自动摘要
  13. 文字蕴含

研究难点

  1. 单词的边界难界定
  2. 词义的消歧
  3. 句法的模糊性
  4. 有瑕疵的或不规范的输入
  5. 语言行为与计划

学科掌握

概率论、统计学、语言学、编程基础

一般处理过程

获取语料

一个文本集合称为语料库(Corpus),多个叫做语料库集合(Corpora)

  1. 已有语料 整理存档的文本数据;
  2. 抓取语料 下载国内外公开的语料库 或者用爬虫爬取网络的公开数据

NLP语料库大全(https://blog.csdn.net/scotfield_msn/article/details/60332046)
情感分析资源大全(语料、词典、词嵌入、代码)https://blog.csdn.net/qq280929090/article/details/70838025
中文维基百科、搜狗新闻语料库、IMDB情感分析语料库、豆瓣读书等

NLP的几个层面

**1. 词法分析:**词法分析包括汉语的分词和词性标注,是所有自然语言处理的第一步 https://blog.csdn.net/weixin_42498517/article/details/102659784
**2. 句法分析:**句法分析是以输入文本的句子作为单位,进行分析得到句子的句法结构,帮助理解句子含义,可用于机器翻译,情感分析等
主流的句法分析方法:
短语结构句法体系,识别出句子中的短语结构以及短语之间的层次句法关系,——介于依存于深层之间
依存结构句法体系,识别句子中词于词之间的相互依赖关系——浅层分析,实现简单,适合多语言下应用,但提供的信息较少
深层文法句法分析, 利用深层文法(例如:词汇化树邻接文法、组合范畴文法等)对句子的句法以及语义分析——提供信息较多,但文法复杂,不适合大规模数据
**3. 语义分析:**语义分析的最终目的是理解句子表达的真是语义
语义角色标注是目前较为成熟的浅层语义分析技术,一般在句法分析的基础上完成
基于逻辑表达的语义分析、联合模型也是目前所研究的热门

语料预处理

  1. 数据清洗 去重、标记、降噪、对齐等
  2. 分词 把文本切碎成一个个词语 词性标注、去除停用词、标记未登录词等处理
    (后期做一个各大分词模型的对比)

特征工程

  1. 把分词映射成词向量
    词向量模型: word2vec、FastText、WordRank、GloVe、BERT、Doc2Vec、onehot等
    (后期做一个各大词向量模型的对比)
  2. 特征降维、提取 将高维空间特征映射到低维空间,形成新的突出特征
    算法:PCA、LDA、SVD、ICA 等
  3. 特征选择 从特征集中选出具有代表性的特征子集
    算法:SFS、SBS等

模型训练

根据语料和具体的问题来采用不同的模型算法。
在特征提取环节,深度学习由机器自己完成特征提取,不需要人工提取。

(1)语料拆分
训练集:用于训练模型;
验证集:用于调整模型参数,找出最佳模型、交叉验证;
测试集:评估模型的泛化能力和误差;

(2)机器学习模型
KNN、SVM、Naive Bayes、决策树、回归、AdaBoost、K-means 等;

(3)深度学习模型(神经网络)
CNN、RNN、LSTM、 GAN、Seq2Seq、TextCNN 等;
优点:学习能力强;覆盖范围广,适应性好;数据驱动,上限高;可移植性好;
缺点:计算量大,便携性差;硬件配置要求高;模型设计复杂;没有“人性”,容易存在偏见;

(4)模型问题
a. 过拟合
在训练集上表现很好,但在测试集上却表现很差,泛化能力差。

解决方法:
控制好模型的复杂度;
增加训练样本,覆盖尽量多的数据类型;
增加正则化项,如L1 / L2 正则化;
降低特征的数量或采用Dropout方法;

b. 欠拟合
在训练集和测试集的误差都比较大。

解决方法:
做特征工程,添加很多的特征项;
增加模型复杂度;

c. 梯度消失、梯度爆炸
在深层网络中,采用了不合适的损失函数。

解决方法:
预训练加微调;
梯度剪切、权重正则(针对梯度爆炸);
使用不同的激活函数;
使用batchnorm;
使用残差结构;
使用LSTM网络;

模型评估

ROC曲线和AUC值、KS曲线、增益图和提升图、P-R曲线 等;
准确率、精确率、真负率、召回率、查全率、F1衡量、稳定度PSI 等;
https://blog.csdn.net/weixin_42498517/article/details/102683388

模型上线应用

第一种是线下训练模型,然后将模型做线上部署;

第二种是在线训练,在线训练完成之后把模型 pickle 持久化;

模型重构(非必须)

模型迁移到其他领域的数据;
模型上线后效果不好;

你可能感兴趣的:(NLP)