NLP-基础和中文分词
一、本质
NLP (Natural Language Processing)自然语言处理是一门研究计算机处理人类语言的技术
二、NLP用来解决什么问题
语音合成(Speech synthesis)
语音识别(Speech recognition)
中文分词(Chinese word segmentation)
文本分类(Text categorization)
信息检索(Information retrieval)
问答系统(Question answering)
机器翻译(Machine translation)
自动摘要(Automatic summarization)
。。。
三、NLP基础
1.相似度度量
1)意义
计算个体间相似程度,是机器学习和数据挖掘的基础,作为评判个体间差异的大小
2)度量的方法
空间:欧氏距离
路径:曼哈顿距离
加权:标准化欧氏距离
编码差别:汉明距离
集合近似度:杰卡德类似系数与距离
相关:相关系数与相关距离
向量差距:夹角余弦(最常用的度量方法)
3)相似文本计算的流程
–找出两篇文章的关键词;
–每篇文章各取出若干个关键词,合并成一个集合,计算每篇文章对于这个集合中词的词频;
–生成两篇文章各自的词频向量;
–计算两个向量的余弦相似度,值越大就表示越相似。
2. TF-IDF词频与反文档频率
1)意义
找出文章中重要性最高的词,是自动摘要、推荐算法等技术的基础
2)概念
仅仅用词频TF,并不能表明一个词的重要性,还要综合考虑每个词的权重,因此需要计算IDF。TF*IDF可以有效地表示一个词对文章的重要性。
3)相似文章计算的流程
–使用TF-IDF算法,找出两篇文章的关键词;
–每篇文章各取出若干个关键词(比如20个),合并成一个集合,计算每篇文章对于这个集合中的词的词频(为了避免文章长度的差异,可以使用相对词频);
–生成两篇文章各自的词频向量;
–计算两个向量的余弦相似度,值越大就表示越相似。
4)生成自动摘要的流程
–使用TF-IDF算法,找出文章的关键词;
–过滤掉停用词后排序;
–将文章分成句子/簇;
–计算每个句子/簇的重要性;
–将重要性最高的句子/簇组合,生成摘要。
3. LCS最长公共子序列(Longest Common Subsequence)
1)意义
即找出两个序列中最长的公共子序列,广泛的应用在图形相似处理、媒体流的相似比较、计算生物学方面
2)算法——动态规划
如果xm = yn(最后一个字符相同),则:Xm与Yn的最长公共子序列LCS(Xm,Yn)的最后一个字符必定为xm(=yn)
如果xm ≠ yn,则LCS(Xm,Yn) = max
创建一个二维数组C[m,n],用C[i,j]记录序列Xi和Yj的最长公共子序列的长度
那么对于两个序列:X =和Y=,可以通过如下二维数组求出LCS的长度
4.中文分词
1)意义
自然语言处理中,与英文不同,中文词之间没有空格。所以为了实现机器对中文数据的处理,多了一项很重要的任务——中文分词。
2)方法:基于词典匹配的最大长度查找(有前向查找和后向查找两种)
数据结构:Trie树(单词查找树,字典树),明显提高查找效率
3)工具:Jieba分词(下一篇详细介绍)
4)概率语言模型:
概率语言模型的任务是:在全切分所得的所有结果中求某个切分方案S,使得P(S)最大。
#STEP1
从统计思想的角度来看,分词问题的输入是一个字串C=c1,c2……cn ,输出是一个词串S=w1,w2……wm ,其中m
P(SC)就是由字符串C产生切分S的概率,也就是对输入字符串切分出最有可能的词序列,基于贝叶斯公式可以得到如下推论:
转换的精髓:
#STEP2
• P(C)只是一个用来归一化的固定值
•从词串恢复到汉字串的概率只有唯一的一种方式,所以P(CS)=1。
•所以:比较P(S1C)和P(S2C)的大小变成比较P(S1)和P(S2)的大小
#STEP3
•为了容易实现,假设每个词之间的概率是上下文无关的(注释)
•最后算logP(w),取log是为了防止向下溢出,如果一个数太小,10^-30可能会向下溢出。
•如果这些对数值事前已经算出来了,则结果直接用加法就可以得到,而加法比乘法速度更快
注:
***N元模型***
在此,需要引入一个N元模型的概念:前后两词出现概率并不是相互独立的,严格意义上:
P(w1,w2)= P(w1)P(w2w1)
P(w1,w2,w3)= P(w1,w2)P(w3w1,w2)
那么
P(w1,w2,w3)= P(w1)P(w2w1)P(w3w1,w2)
所以
P(S)=P(w1,w2,...,wn)= P(w1)P(w2w1)P(w3w1,w2)…P(wnw1w2…wn-1)
这个式子叫做概率的链规则
显然这个式子不好求解,需要进行简化:
如果简化成一个词的出现仅依赖于它前面出现的一个词,那么就称为二元模型(Bigram)
P(S) = P(w1,w2,...,wn)≈P(w1) P(w2w1)P(w3w2)…P(wnwn-1)
如果简化成一个词的出现仅依赖于它前面出现的两个词,就称之为三元模型(Trigram)。
如果一个词的出现不依赖于它前面出现的词,叫做一元模型(Unigram)。
P(S)=P(w1,w2,...,wn)= P(w1)P(w2)P(w3)…P(wn)
以上。
祝大家圣诞快乐
听说,爱点赞的人运气都不会太差哦
如果有任何意见和建议,也欢迎在下方留言~
关注这个公众号,定期会有大数据学习的干货推送给你哦~