今天开始一起学习中文自然语言处理
中文NLP一般流程
1. 获取语料
语料,是NLP任务所研究的内容
通常用一个文本集合作为语料库(Corpus)
来源:
已有语料
积累的文档
下载语料
搜狗语料、人民日报语料
抓取语料
2. 语料预处理
1.语料清洗
留下有用的,删掉噪音数据
常见的数据清洗方式
人工去重、对齐、删除和标注等,或者规则提取内容、正则表达式匹配、根据词性和命名实体提取、编写脚本或者代码批处理等。
2.分词
将文本分成词语
常见的分词算法
基于字符串匹配的分词方法、基于理解的分词方法、基于统计的分词方法和基于规则的分词方法
3.词性标注
给词语打词类标签,如形容词、动词、名词等
在情感分析、知识推理等任务中需要
常见的词性标注方法
基于规则
基于统计
如基于最大熵的词性标注、基于统计最大概率输出词性和基于 HMM 的词性标注。
4.去停用词
去掉对文本特征没有任何贡献作用的字词,比如标点符号、语气、人称等
3. 特征工程
把分词表示成计算机能够计算的类型,一般为向量
常用的表示模型
词袋模型(Bag of Word, BOW)
TF-IDF
词向量
One-hot
Word2Vec
4. 特征选择
选择合适的、表达能力强的特征
常见的特征选择方法
有 DF、 MI、 IG、 CHI、WLLR、WFO
5. 模型训练
机器学习模型
KNN、SVM、Naive Bayes、决策树、GBDT、K-means 等
深度学习模型
CNN、RNN、LSTM、 Seq2Seq、FastText、TextCNN
注意过拟合、欠拟合问题
过拟合:在训练集上表现很好,但是在测试集上表现很差。
常见的解决方法有:
增大数据的训练量;
增加正则化项,如 L1 正则和 L2 正则;
特征选取不合理,人工筛选特征和使用特征选择算法;
采用 Dropout 方法等。
欠拟合:就是模型不能够很好地拟合数据
常见的解决方法有:
添加其他特征项;
增加模型复杂度,比如神经网络加更多的层、线性模型通过添加多项式使模型泛化能力更强;
减少正则化参数,正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,则需要减少正则化参数。
注意梯度消失和梯度爆炸问题
6. 评价指标
错误率、精度、准确率、精确度、召回率、F1 衡量。
ROC 曲线、AUC 曲线
7. 模型上线应用
第一就是线下训练模型,然后将模型做线上部署
第二种就是在线训练,在线训练完成之后把模型 pickle 持久化
学习资料:
《中文自然语言处理入门实战》