赞
踩
nlp算法基础
一、nlp基本概念
nlp:自然语言处理
分词、词性标注、命名实体识别、关系提取、文本分类、情感分析、事件提取、知识图谱(三元组 实体和实体的关系、实体属性、时间提取)、问答系统、文本相似计算、
文本聚类、关键词提取、关键句提取、摘要提取、文本生成、语言模型(判断一句话是否合理(或者是不是人话))、文本纠错
机器学习:
有监督学习算法:预测标签,训练过程需要标签值,如果标签值是连续的,则是回归问题,如果标签是离散值,则是分类问题。
信用评估(有风险1、无风险0)
训练过程
x1 x2 x3 x4 … xn (特征) y(标签)
年龄 性别 学历 收入。。是否结婚 1,0
1 12 1 0 12 0 1
2 22 0 0 22 0 1
3 16 1 0 19 0 0
.
.
.
m 18 1 0 32 0 0
模型选择:逻辑回归
ax1+bx2+cx3+…hxn=y
通过训练数据 可以得到a,b,c…h
加入根据训练得到a=2,b=3,c=4,h=3
预测过程:新数据经过训练后的模型推理出新数据的标签值
2x1+3x2+4x3+…3xn
无监督学习算法:数据是没有标签值的
用户聚类:
x1 x2 x3 x4 … xn (特征)
年龄 性别 学历 收入。。是否结婚
1 12 1 0 12 0
2 22 0 0 22 0
3 16 1 0 19 0
.
.
.
m 18 1 0 32 0
假如给m条数据聚类成3个集合
1,3,5 集合1
2,4,6 集合2
7,8…m 集合3
分词方法:
1、基于词典分词
1)前后分词
2)后向分词
3)双向分词
优化词典方法 字典树(前缀树)
2、有监督学习(有标签)算法(机器学习、深度学习)
训练数据
x y(BIO)
研 B
究 I
生 B
命 I
起 B
源 I
我 O
就 B
读 I
北 B
京 I
大 I
学 I
训练过程未知hmm的参数(A,B,u),
初始化hmm的参数(A,B,u)
根据训练数据做前向传播(y=ax1+bx2+cx3)得到y*(预测值)
y-y*误差mse
求导计算参数
最终得到训练后的hmm的参数(A,B,u)
预测 (hmm,crf)维特比算法
我 b i o
在 b i o
看 b i o
书 b i o
分词、词性识别、命名实体识别(序列标注) 知识图谱(节点和节点的关系,节点属性)
分词 词性识别 命名实体识别 舆情监测,情绪分析
x y(BIO) y y
研 B V_B
究 I V_I
生 B N_B
命 I N_B
起 B
源 I
我 O
就 B
读 I
北 B
京 I
大 I
学 I
HMM做分词
隐藏状态集合Q {‘B’,‘I’,‘O’} N =3
观测状态集合 V {研究生命起源} M=6
T=6 序列长度
I=[B, I ,B, I,B,I] 状态序列
O=[研究生命起源] 观测序列
状态转移矩阵A
B I O
B a11 a12 a13
I a21 a22 a23
O a31 a32 a33
观测状态生成的概率矩阵B(也叫发射矩阵)
研 究 生 命 起 源
p(研|B) p(究|B) p(生|B) p(命|B) p(起|B) p(源|B) p(研|B)+p(研|I)+p(研|O)!=1
B b11 b12 b13 b14 b15 b16
I b21 b22 b23 b24 b25 b26
O b31 b32 b33 b34 b35 b36
初始隐藏状态概率分布Π
t=1时刻
B Π1
I Π2
O Π3
每个时刻的每个隐含状态都会对应两个局部状态
HMM模型做了两个很重要的假设如下:(决定了HMM模型是有缺陷的)
1、齐次马尔科夫链假设
即任意时刻的隐藏状态只依赖于它前一个隐藏状态
2、观测独立性假设
即任意时刻的观察状态只仅仅依赖于当前时刻的隐藏状态
关系提取(实体和实体的关系)
乔布斯发明了苹果 乔布斯 苹果 创造 三元组
观测序列 隐含状态序列(状态序列)
x y
乔 P_B
布 P_I
斯 P_I
发 O
明 O
了 O
苹 P_B
果 P_I
人的行为 天气情况
在外面打篮球 晴
在家看电视 下雨,阴,晴
在钓鱼 晴,阴,下雨
命名实体识别方法:softmax,svm,hmm,crf,lstm+crf,bert(bert+crf,lstm+bert+crf)
323
最后一个隐含状态是由第一个局部变量决定的,哪个隐含状态对应第一个局部变量最大,那么最后一个的隐含状态就是哪个
由此可以确定最后一个隐含状态
再推算倒数第二的隐含状态,这个又最后一个隐含状态对应的第二个局部变量确定。
依次类推,得到每一时刻的隐含状态(都是又第二个局部变量决定的)
δ3(3)最大,所以第3个时刻的隐含状态是盒子3
再因为Ψ3(3)=3 所以第二时刻的隐含状态是盒子3
因为Ψ2(3)=3 所以第一时刻的隐含状态是盒子3
文本相似计算、文本聚类、关键词提取、关键句提取
文本向量化(把文字转化成数字,用数字表示) one-hot、共现矩阵、tf-idf、lda,word2vec,elmo,gpt,bert
一、one-hot
语料库
乔布斯 发明 了 苹果
乔布斯 去 水果店 买 苹果
1、根据语料库生成词典[乔布斯,发明,了,苹果,去,水果店,买]
2、用one-hot编码向量化句子
乔布斯 发明 了 苹果 》》》[1,1,1,1,0,0,0] 生成的向量长度和词典长度一样,若句子中的词在词典中出现,则对应位置用1表示,否则0。
乔布斯 去 水果店 买 苹果 》》》 [1,0,0,1,1,1,1]
3、计算文本相似度 (孪生网络)
余弦相似度、欧式距离
4、文本聚类
二、TF-IDF
term frequency–inverse document frequency,词频-逆向文件频率
词频(TF)表示词条(关键字)在文本中出现的频率。
逆向文件频率 (IDF) :某一特定词语的IDF,可以由总文件数目除以包含该词语的文件的数目,
再将得到的商取对数得到。
乔布斯 发明 了 苹果 TF(乔布斯)=1/4 TF(发明)=1/4 []
乔布斯 去 水果店 买 苹果 TF(乔布斯)=1/5
乔布斯 去 苹果 手机店 买 苹果 TF(苹果)=2/6=1/3
idf(乔布斯)=3/3=1 log1=0
idf(水果店 )=3/1 log3=0.022
1、根据语料库生成词典序列:[乔布斯,发明,了,苹果,去,水果店,买,手机店 ]
2、计算每条预料中每个词的tf、idf,及tf*idf
乔布斯 去 苹果 手机店 买 苹果 [0,0,0,0,(1/6)*log(3/2),0,(1/6)*log(3/2),(1/6)*log3]
tf(乔布斯)=1/6 tf(去)=1/6 tf(苹果)=1/3 tf(手机店 )=1/6 tf(买)=1/6
idf(乔布斯)=log(3/3)=0 idf(去)=log(3/2) idf(苹果)=log(3/3)=0 idf(手机店)=log(3/1) =log3 idf(买)=log(3/2)
python代码实现itidf做关键词提取
三、kmeans 文本聚类
算法流程:
1、首先确定一个k值,即我们希望将数据集经过聚类得到k个集合。
2、从数据集中随机选择k个数据点作为质心。
3、对数据集中每一个点,计算其与每一个质心的距离(如欧式距离),离哪个质心近,就划分到那个质心所属的集合。
4、把所有数据归好集合后,一共有k个集合。然后重新计算每个集合的质心。
5、如果新计算出来的质心和原来的质心之间的距离小于某一个设置的阈值(表示重新计算的质心的位置变化不大,趋于稳定,或者说收敛),
我们可以认为聚类已经达到期望的结果,算法终止。
6、如果新质心和原质心距离变化很大,需要迭代3~5步骤。
KNN算法:K近邻算法,新数据的标签值依赖新数据和整个数据集的距离,找最近K个数据对面的标签,再根据少数服从多数的投标机制,决定新数据的标签值
1、有监督算法
2、K
KNN用户分类(kd树):
x1 x2 x3 x4 … xn (特征) y
年龄 性别 学历 收入。。是否结婚 贷款风险(1,0)
1 12 1 0 12 0 1
2 22 0 0 22 0 1
3 16 1 0 19 0 0
.
.
.
m 18 1 0 32 0 0
预测:来了一条新数据(没有标签),计算新数据和m条数据的距离(欧式距离,余弦相似度),选取k个最近的数据,投票机制决定新数据的标签
新 12 0 1 2 1
预料库:
乔布斯 发明 了 苹果
来了 一条 新数据
发明 了 苹果 乔布斯
语言模型:基于统计的语言模型 基于神经网络的
p(乔布斯 发明 了 苹果)=p(乔布斯)*p(发明 |乔布斯)*p(了|乔布斯,发明)p(苹果|乔布斯,发明,了)
=(2/3)(1/2)11=1/3
p(苹果 发明 了 乔布斯)=p(苹果)*p(发明 |苹果)*p(了|苹果,发明)p(乔布斯|苹果,发明,了)
=(2/3)000=0
n=2
p(乔布斯 发明 了 苹果 )=p(乔布斯)*p(发明 |乔布斯)*p(了|发明)p(苹果|了)
=(2/3)(1/2)11=1/3
n=3
p(乔布斯 发明 了 苹果)=p(乔布斯)*p(发明 |乔布斯)*p(了|乔布斯,发明)p(苹果|发明,了)
=(2/3)(1/2)11=1/3
pagerank:
1、如果一个网页被很多其他网页链接到的话说明这个网页比较重要,也就是PageRank值会相对较高
2、如果一个PageRank值很高的网页链接到一个其他的网页,那么被链接到的网页的PageRank值会相应地因此而提高
textrank:
1 ws(1) =0.9+0.1((bm25(1,1)/(bm25(1,2)+bm25(1,3)+bm25(1,4))*ws(1))+(bm25(1,2)/(bm25(2,1)+bm25(2,3)+bm25(2,4))*ws(2))+(bm25(1,3)/(bm25(3,1)+bm25(3,2)+bm25(3,4))*ws(3))+(bm25(1,4)/(bm25(4,1)+bm25(4,2)+bm25(4,3))*ws(4)) )
2 ws(2)
3 ws(3)
4 ws(4)
语料库
乔布斯 发明 了 苹果
苹果 发明 了 乔布斯
如果 一个 网页 被 很多 其他 网页 链接
bm25(1,2)
1、乔布斯 发明 了 苹果
2、苹果 发明 了 乔布斯
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。