NLP汉语数据清洗做了什么?


NLPNLP数据清洗


英文可以空格分词,中文不可。中文文本用连续的字序列构成,词和词之间没有天然分隔符,因此中文分词很困难。尤其困难是歧义问题,分词分为两种:

1.基于词典进行分词:(套规则进行分词)优点是简单有效。但是很容易就有搞笑的歧义,且应对流行词汇表现效果不好。。。。

2.基于统计的分词:通过人工标注对中文建模,将准备好的语料进行训练,选出不同阶段下每个词的出现概率。。。选出概率最大的情况进行分词。 比较好的解决分词奇异问题,但是却要耗费巨大的性能

获取语料?

1.已经有的语料

2.网上下载的抓取语料

预料预处理

1.语料清洗

爬取的内容去除标签,去掉注释等。。。。;

把语料中的不需要的文本部分删除掉,包括标题,摘要,小标题等等。。

2.分词

我们不对一大块文本进行处理,我们希望文本的最小单位粒度是词语,因此借助分词工具对文本进行分词。

常见的分词算法就是:

1. 基于字符串匹配的分词
   	2. 基于理解的分词
         	3. 基于统计的分词
                   	4. 基于规则的分词

3.词性标注

给每个词或者词语打标签,比如形容词,动词。

  	1. 基于规则的方法
            	2. 基于统计的方法
           	1. 最大熵
           	2. 统计最大概率
           	3. 基于HMM的词性标注

4.去停用词

停用词一般指对文本特征没有任何贡献的词。比如,标点符号、语气、人称、等一些词,所以在一般的文本处理之后,接下来就是去除停用词,不同项目要求你去掉的停用词是不同的。

特征工程

上面那么多,最终得到了一个个分词结果。 接下来,将这些分词之后的词和短语表示成计算机能够计算的类型吧~

显然,我们猜也可以猜出来,必须要把字符串转化成数字,准确地说就是向量。我们一般有两种方法:

  1. 词袋模型

    暴力进行计数,直接将词语或者符号统一放置在集合里面,统计词频。TF-IDF

  2. 词向量模型

    将字,词语转换成向量矩阵的形式。最常用的方法就是OneHot 和 Word2Vec, 值得一提的就是,Word2Vec可以很好的反映词之间的相似和类比关系。词向量包括:跳字模型和连续词袋模型

特征选择

从上面的特征集合中 选出一部分,当做特征子集,可以较好地保存特征信息,虽然会丢失掉部分的语义信息。 这个过程更多地依赖经验和专业知识。。

模型训练

有了这些特征向量,接下来就是训练模型,我们有:

  1. 有监督学习
  2. 无监督学习

KNN,SVM,Naive Bayes、决策树、GBDT,K-Means 等; 深度学习例如:CNN,RNN,LSTM,Seq2Seq,FastTxt,TextCnn等,这些模型在后续的分类,聚类,神经序列,情感分析中都可以用到。

注意点

1.过拟合和欠拟合问题:

过拟合的话:

1.使用dropout
2.增加训练量
3.增加正则化选项,如L1正则和L2正则。
4.重新选择特征子集

欠拟合的话

1.增加网络的复杂度
2.增加特征的数量
3.减少正则化选项

2.评价指标

二分类问题,混淆矩阵常考:

​ tp fn

​ fp tn

准确率,精确率,召回率,

准确率= tp/(tp+fp)

精确度=tp+tn /(tp + fn + fp + tn)【一般用的不多】

召回率=tp/(tp+fn)【疾病类问题一定要注意】

F1衡量: 【体现你对与查准率和查全率的不同偏好】

f1= 2* 准确率*召回率 / 准确率+召回率

3.ROC曲线

我们根据模型的预测结果,把阈值从0调整到最大,【即 一开始每个样本都是正样本 ---- 正样本逐渐减少------ 每个样本都是负样本】。每次计算出 TPR为y轴,FPR为x轴。

tpr = tp/( tp + fn)

fpr = fp/(tn + fp)

ROC曲线很容易查出任意阈值对于模型泛化能力的影响,有助于选择最佳的阈值,并且可以对不同的模型比较性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值