【笔记】Python自然语言处理实战

《Python自然语言处理实战》

在这里插入图片描述

概述

本书介绍了NLP的一些基本问题和方法,如中文分词、词性标注、命名实体识别、关键词提取、句法分析、文本向量化以及深度学习NLP的一些内容。全书偏基础,可作为NLP的入门科普,其中前半部分的规则和统计方法值得看一下,且有相应的代码示例。而后半部分更多的是深度学习基础,按需。

本文主要是个人看完之后的一些备忘点记录,方便以后实际应用时定位。

NLP基础

  • NLP的一些应用:机器翻译、情感分析、智能问答、文摘生成、文本分类、舆论分析、知识图谱

  • 基本术语:分词(segment)、词性标注(part-of-speech tagging)、命名实体识别(NER,Named Entity Recognition)、句法分析(syntax parsing)、指代消解(anaphora resolution)、情感识别(emotion recognition)、纠错(correction)、问答系统(QA system)

  • NLP的一些知识结构:句法语义分析、关键词抽取、文本挖掘、机器翻译、信息检索、问答系统、对话系统。

  • 语料库中文维基百科搜狗新闻语料库IMDB情感分析语料库

  • NLP的三个层面:词法分析、句法分析、语义分析

  • 正则表达式是NLP的基本手段之一。python里的re模块。

中文分词

  • 英文单词本身就是词,且天然的用空格分开,所以不做处理也能有较好效果。而中文必须通过分词才能表达出完整意思。而中文分词的主要困难在于“分词歧义”
  • 分词方法可归纳为:规则分词、统计分词、混合分词

规则分词

正向最大匹配法(Maximum Match Method, MM法)

基本原则是从正向开始,对照词典进行匹配,且尽可能匹配最长的词。

1. 从左到右取m个字符做匹配字段,其中m为词典中的最长词条字符数
2. 若匹配成功,将该词切出,剩余文本重复进行;
3. 若匹配失败,取m-1个字符做匹配字段,重新匹配。
逆向最大匹配法(Reverse Maximum Match Method, RMM法)

与MM法类似,但从逆向执行。由于汉语中偏正结构较多,从后向前匹配会提高精确度。统计结果表明,正向错误率为1/169,而逆向错误率为1/245。

1. 文档倒排,准备逆序词典
2. 按照MM法记性匹配
双向最大匹配法(Bi-direction Matching method)

融合MM和RMM的方法,并根据最大匹配原则,取切分词数最少的那个。

1. 分别做正反最大匹配分词,取词数较少的那个
2. 若词数相同,而分词结果不同,则返回单字较少的那个
3. 若分词结果相同,则任意取一个

统计分词

基本思想是将词看做各个字组成,然后相连的字在文本中出现词数越多,则越可能就是一个词。包括建立统计语言模型、去概率最大的分词结果。

  • 语言模型:为长度为m的字符串确定其概率分布 P ( w 1 , w 2 , . . . , w m ) P(w_1,w_2,...,w_m) P(w1,w2,...,wm),公式为

P ( w 1 , w 2 , . . . , w m ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 1 , w 2 ) . . . P ( w i ∣ w 1 , w 2 , . . . , w i − 1 ) . . . P ( w m ∣ w 1 , . . . , w m − 1 ) P(w_1,w_2,...,w_m)=P(w_1)P(w_2|w_1)P(w_3|w_1,w_2) ... P(w_i|w_1,w_2,...,w_{i-1})...P(w_m|w_1,...,w_{m-1}) P(w1,w2,...,wm)=P(w1)P(w2w1)P(w3w1,w2)...P(wiw1,w2,...,wi1)...P(wmw1,...,wm1)

N元模型(n-gram model)

上式中当文本过长时计算难度比较大,通常用n元模型降低难度,即只考虑距离为n以内的字的关系,n取1、2、3时分别称为一元模型(unigram model)、二元模型(bigram model)、三元模型(trigram model)。另外在实际使用时,由于可能分子分母为0的情况,所以一般配合平滑算法使用,如拉普拉斯平滑。
P ( w i ∣ w 1 , . . . , w i − 1 ) ≈ P ( w i ∣ w i − ( n − 1 ) , . . . , P ( w i − 1 ) ) = c o u n t ( w i − ( n − 1 ) , . . . , w i ) c o u n t ( w i − ( n − 1 ) , . . . , w i − 1 ) P(w_i|w_1,...,w_{i-1})\approx P(w_i|w_{i-(n-1),...,P(w_{i-1})})\\ =\frac{count(w_{i-(n-1),...,w_i})}{count(w_{i-(n-1),...,w_{i-1}})} P(wiw1,...,wi1)P(wiwi(n1),...,P(wi1))=count(wi(n1),...,wi1)count(wi(n1),...,wi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值