NLP基础2——多分类文本处理与特征工程

多分类文本处理与特征工程

1语言模型

语言模型:用来判断一句话从句法上是否通顺。

计算单词在句子或序列中的可能性:
p ( s ) = p ( w 1 , w 2 , w 3 , … w n ) p(s)=p(w_1,w_2,w_3,\dots w_n) p(s)=p(w1,w2,w3,wn)
Chain Rule:
P ( A , B , C , D ) = P ( A ) P ( B ∣ A ) P ( C ∣ A , B ) P ( D ∣ A , B , C ) P(A,B,C,D)=P(A)P(B|A)P(C|A,B)P(D|A,B,C) P(A,B,C,D)=P(A)P(BA)P(CA,B)P(DA,B,C)

p ( w 1 , w 2 , w 3 , … w n ) = p ( w 1 ) p ( w 2 ∣ w 1 ) … p ( w n ∣ w 1 w 2 … w n − 1 ) p(w_1,w_2,w_3,\dots w_n)=p(w_1)p(w_2|w_1)\dots p(w_n|w_1w_2\dots w_{n-1}) p(w1,w2,w3,wn)=p(w1)p(w2w1)p(wnw1w2wn1)

首先进行分词,然后进行链式法则的概率计算

神经网络语言模型(NNLM)

《NLP基础2——多分类文本处理与特征工程》

条件很长的时候,就会有sparsity(稀疏性)问题。

Markov Assumption马尔科夫假设 N-gram model

  • p ( 地 位 ∣ 京 东   A I   技 术   处 于   领 先 ) p(地位|京东\ AI\ 技术 \ 处于\ 领先) p( AI   )= p ( 地 位 ) p(地位) p(),Unigram Model
  • p ( 地 位 ∣ 京 东   A I   技 术   处 于   领 先 ) p(地位|京东\ AI\ 技术 \ 处于\ 领先) p( AI   )= p ( 地 位 ∣ 领 先 ) p(地位|领先) p(),一阶假设Bigram Model
  • p ( 地 位 ∣ 京 东   A I   技 术   处 于   领 先 ) p(地位|京东\ AI\ 技术 \ 处于\ 领先) p( AI   )= p ( 地 位 ∣ 处 于   领 先 ) p(地位|处于\ 领先) p( ),二阶假设Trigram Model

应用到语言模型中:

  • p ( w 1 , w 2 , w 3 , … w n ) = p ( w 1 ) … p ( w n ) = ∏ i = 1 w p ( w i ) p(w_1,w_2,w_3,\dots w_n) = p(w_1)\dots p(w_n) = \prod_{i = 1}^{w} p(w_i) p(w1,w2,w3,wn)=p(w1)p(wn)=i=1wp(wi),Unigram Model

  • p ( w 1 , w 2 , w 3 , … w n ) = p ( w 1 ) p ( w 2 ∣ w 1 ) … p ( w n ∣ w n − 1 ) = p ( w 1 ) ∏ i = 2 w p ( w i ) p(w_1,w_2,w_3,\dots w_n) = p(w_1)p(w_2|w_1)\dots p(w_n|w_{n-1}) = p(w_1)\prod_{i = 2}^{w} p(w_i) p(w1,w2,w3,wn)=p(w1)p(w2w1)p(wnwn1)=p(w1)i=2wp(wi),Bigram Model

  • p ( w 1 , w 2 , w 3 , … w n ) = p ( w 1 ) p ( w 2 ∣ w 1 ) p ( w 3 ∣ w 1 w 2 ) … p ( w n ∣ w 1 … w n − 1 ) p(w_1,w_2,w_3,\dots w_n) = p(w_1)p(w_2|w_1)p(w_3|w_1w_2)\dots p(w_n|w_1\dots w_{n-1}) p(w1,w2,w3,wn)=p(w1)p(w2w1)p(w3w1w2)p(wnw1wn1)

    = p ( w 1 ) p ( w 2 ∣ w 1 ) ∏ i = 3 w p ( w i ) = p(w_1)p(w_2|w_1)\prod_{i = 3}^{w} p(w_i) =p(w1)p(w2w1)i=3wp(wi),Trigram Model

是一个数据平滑的过程

《NLP基础2——多分类文本处理与特征工程》

Evaluation of Language Model

Q:训练出来的语言模型效果是好还是坏?

理想情况下:

  • 假设有两个语言模型A,B(is better?)
  • 选定一个特定的任务比如拼写纠错(MT:machine translation)
  • 把两个模型A,B都运用到此任务中
  • 最后比较准确率,从而判断A,B的表现

Perplexity(困惑度)

Perplexity越小,模型的效果越好。

Perplexity= 2 − x 2^{-x} 2x x x x:avergae log likelihood(平均对数相似度)

如:对于 p ( w 1 , w 2 , w 3 , … w n ) p(w_1,w_2,w_3,\dots w_n) p(w1,w2,w3,wn)使用Bigram Model:

x = ( log ⁡ ( P L M ( w 1 ) ) + log ⁡ ( P L M ( w 2 ∣ w 1 ) ) + log ⁡ ( P L M ( w 3 ∣ w 2 ) ) + log ⁡ ( P L M ( w 4 ∣ w 3 ) ) + log ⁡ ( P L M ( w 5 ∣ w 4 ) ) ) / 5 x=(\log(P_{LM}(w_1))+\log(P_{LM}(w_2|w_1))+\log(P_{LM}(w_3|w_2))+\log(P_{LM}(w_4|w_3))+\log(P_{LM}(w_5|w_4)))/5 x=(log(PLM(w1))+log(PLM(w2w1))+log(PLM(w3w2))+log(PLM(w4w3))+log(PLM(w5w4)))/5

计算Perplexity= 2 − x 2^{-x} 2x

Add-one Smoothing(Laplace Smoothing)

极大似然估计(MLE) or 拉普拉斯平滑
P M L E ( w i ∣ w i − 1 ) = c ( w i − 1 , w i ) c ( w i − 1 ) P A d d − 1 ( w i ∣ w i − 1 ) = c ( w i − 1 , w i ) + 1 c ( w i − 1 ) + V P_{\mathrm{MLE}}\left(w_{\mathrm{i}} \mid \mathrm{w}_{\mathrm{i}-1}\right)=\frac{\mathrm{c}\left(\mathrm{w}_{\mathrm{i}-1}, \mathrm{w}_{\mathrm{i}}\right)}{\mathrm{c}\left(\mathrm{w}_{\mathrm{i}-1}\right)} \\ \mathrm{P}_{\mathrm{Add}-1}\left(\mathrm{w}_{\mathrm{i}} \mid \mathrm{w}_{\mathrm{i}-1}\right)=\frac{\mathrm{c}\left(\mathrm{w}_{\mathrm{i}-1}, \mathrm{w}_{\mathrm{i}}\right)+1}{\mathrm{c}\left(\mathrm{w}_{\mathrm{i}-1}\right)+\mathrm{V}} PMLE(wiwi1)=c(wi1)c(wi1,wi)PAdd1(wiwi1)=c(wi1)+Vc(wi1,wi)+1
V为词库的大小

Add-k Smoothing(Laplace Smoothing)
P A d d − 1 ( w i ∣ w i − 1 ) = c ( w i − 1 , w i ) + k c ( w i − 1 ) + k V \mathrm{P}_{\mathrm{Add}-1}\left(\mathrm{w}_{\mathrm{i}} \mid \mathrm{w}_{\mathrm{i}-1}\right)=\frac{\mathrm{c}\left(\mathrm{w}_{\mathrm{i}-1}, \mathrm{w}_{\mathrm{i}}\right)+k}{\mathrm{c}\left(\mathrm{w}_{\mathrm{i}-1}\right)+\mathrm{kV}} PAdd1(wiwi1)=c(wi1)+kVc(wi1,wi)+k
语言模型在拼写纠错中的应用spell correction

Find the words with smallest edit distance(计算最小的编辑距离)根据编辑距离进行改造

《NLP基础2——多分类文本处理与特征工程》

How to select?

假设: w w w是拼写错误的单词,希望更改成正确的形式(设为 c c c),如何得到 c c c
c ∗ = a r g m a x C ∈ C a n d i d a t e s P ( c ∣ w ) = a r g m a x C ∈ C a n d i d a t e s P ( w ∣ c ) P ( c ) p ( w ) c^*=\mathrm{argmax} _{\mathrm{C\in Candidates} }\mathrm{P} (c|w)\\ =\mathrm{argmax} _{\mathrm{C\in Candidates} }\frac{\mathrm{P} (w|c)\mathrm{P} (c)}{\mathrm{p} (w)}\\ c=argmaxCCandidatesP(cw)=argmaxCCandidatesp(w)P(wc)P(c)
P ( w ∣ c ) \mathrm{P} (w|c) P(wc)

  • method1:Edit Distance: i f   d = 1 , s c o r e = 0.8 ; i f   d = 2 , s c o r e = 0.2 ; o t h e r w i s e s c o r e = 0 \mathrm{if} \ d=1,\mathrm{score} =0.8;\mathrm{if} \ d=2,\mathrm{score} =0.2;\mathrm{otherwise} \mathrm{score} =0 if d=1,score=0.8;if d=2,score=0.2;otherwisescore=0
  • method2:collected data:当用户拼错 c c c的时候,有多少概率把他拼错为 w w w?

P ( c ) \mathrm{P} (c) P(c):比较类似于语言模型

2预处理

  • 过滤词:对于NLP的应用,我们通常先把停用词,出现频率很低的词汇过滤掉。
  • normalize(同义词映射标准化)normalize参考资料
    • 词干提取(stemming):由规则构成,不能保证标准化后的词语一定在词库中
    • 词形还原(lemmatization)

3独热编码 tf-idf

word representation:boolen vector

词典:[我们,去,爬山,今天,你们,昨天,跑步]

词语的表示:我们:[1,0,0,0,0,0,0];爬山:[0,1,0,0,0,0,0];跑步:[0,0,0,0,0,0,1]

句子的表示:我们今天去爬山:[1,1,1,1,0,0,0]

word representation:count vector 除了表示存在还可以表示次数

Sentence Similarity:

计算距离(欧氏距离or曼哈顿距离)
d = ∣ s 1 − s 2 ∣ ​ d=|s_1-s_2|​ d=s1s2
计算相似度(余弦相似度):
d = s 1 s 2 ∣ s 1 ∣ ∣ s 2 ∣ d=\frac{s_1s_2}{|s_1||s_2|} d=s1s2s1s2
tf-idf

一个单词出现了很多次,不代表影响重要;一个单词出现的次数很少,有可能很重要。

因此既要考虑出现次数,也要考虑权重。:
t f i d f ( w ) = t f ( d , w ) × i d f ( w ) \mathrm{tfidf} (w)=\mathrm{tf} (d,w)\times \mathrm{idf} (w) tfidf(w)=tf(d,w)×idf(w)
t f i d f ( w ) \mathrm{tfidf} (w) tfidf(w):文档 d d d w w w的词频

i d f ( w ) \mathrm{idf} (w) idf(w) i d f ( w ) = log ⁡ ( N / N ( w ) ) \mathrm{idf} (w)=\log(N/N(w)) idf(w)=log(N/N(w)) N N N表示语料库中的文档总数, N ( w ) N(w) N(w)表示词语 w w w出现在多少个文档

为了准确也可以加入平滑

独热编码的问题:

  • 不能表示相关性
  • 稀疏性:矩阵过大

4Word2Vec

  • 有一个很大的词表库
  • 在词表中的每一个词都可以用词向量表征
  • 有一个中心词c,有一个输出词o
  • 用词c和o的相似度
  • 调整这个词向量来获得最大的输出概率

How To calculate P?

损失函数:
L ( θ ) = ∏ t = 1 T ∏ − m ⩽ j ⩽ m j ≠ 0 p ( w t + j ∣ w t ; θ ) L(\theta)=\prod_{t=1}^{T} \prod_{-m \leqslant j \leqslant m \atop j \neq 0} p\left(w_{t+j} \mid w_{t} ; \theta\right) L(θ)=t=1Tj=0mjmp(wt+jwt;θ)
《NLP基础2——多分类文本处理与特征工程》

在skip-gram模型中把one-hot作为模型的输入

核心:通过中心词预测周围的单词

语料库:AI 的 发展 很 快
M a x m i n z e   P ( 的 ∣ A I ) P ( A I ∣ 的 ) P ( 发 展 ∣ 的 ) P ( 的 ∣ 发 展 ) P ( 发 展 ∣ 很 ) P ( 快 ∣ 很 ) P ( 很 ∣ 快 ) \mathrm{Maxminze} \ \mathrm{P} (的|AI)\mathrm{P} (AI|的)\mathrm{P} (发展|的)\mathrm{P} (的|发展)\mathrm{P} (发展|很)\mathrm{P} (快|很)\mathrm{P} (很|快) Maxminze P(AI)P(AI)P()P()P()P()P()

M a x m i n z e ∏ w ∈ T e x t ( 中 心 词 ) ∏ c ∈ c o n t e x t ( w ) ( w 的 上 下 文 词 ) P ( c ∣ w ; θ ) \mathrm{Maxminze} \prod_{w\in \mathrm{Text}(中心词) }^{} \prod_{c\in \mathrm{context(w)}(w的上下文词) }^{} \mathrm{P} (c|w;\theta) MaxminzewText()ccontext(w)(w)P(cw;θ)

最优化目标:
θ ∗ = a r g m a x θ ∏ w ∈ T e x t ( 中 心 词 ) ∏ c ∈ c o n t e x t ( w ) ( w 的 上 下 文 词 ) P ( c ∣ w ; θ ) \theta^*=\mathrm{argmax} _{\theta} \prod_{w\in \mathrm{Text}(中心词) }^{} \prod_{c\in \mathrm{context(w)}(w的上下文词) }^{} \mathrm{P} (c|w;\theta) θ=argmaxθwText()ccontext(w)(w)P(cw;θ)

θ ∗ = a r g m a x θ ∑ w ∈ T e x t ( 中 心 词 ) ∑ c ∈ c o n t e x t ( w ) ( w 的 上 下 文 词 ) log ⁡ P ( c ∣ w ; θ ) \theta^*=\mathrm{argmax} _{\theta} \sum_{w\in \mathrm{Text}(中心词) }^{} \sum_{c\in \mathrm{context(w)}(w的上下文词) }^{} \log \mathrm{P} (c|w;\theta) θ=argmaxθwText()ccontext(w)(w)logP(cw;θ)

《NLP基础2——多分类文本处理与特征工程》

概率分布求法:
P ( c ∣ w ; θ ) = e u c v w ∑ c ∈ V e u c v w \mathrm{P} (c|w;\theta)=\frac{e^{u_cv_w}}{\sum _{c\in V}e^{u_cv_w}} P(cw;θ)=cVeucvweucvw

θ ∗ = a r g m a x θ ∑ w ∈ T e x t ( 中 心 词 ) ∑ c ∈ c o n t e x t ( w ) ( w 的 上 下 文 词 ) log ⁡ e u c v w ∑ c ∈ V e u c v w a r g m a x θ ∑ w ∈ T e x t ( 中 心 词 ) ∑ c ∈ c o n t e x t ( w ) ( w 的 上 下 文 词 ) [ u c v w − log ⁡ ∑ C ′ e u c v w ] \theta^*=\mathrm{argmax} _{\theta} \sum_{w\in \mathrm{Text}(中心词) }^{} \sum_{c\in \mathrm{context(w)}(w的上下文词) }^{} \log\frac{e^{u_cv_w}}{\sum _{c\in V}e^{u_cv_w}}\\ \mathrm{argmax} _{\theta} \sum_{w\in \mathrm{Text}(中心词) }^{} \sum_{c\in \mathrm{context(w)}(w的上下文词) }^{} [u_cv_w-\log \sum_{C’}e^{u_cv_w}] θ=argmaxθwText()ccontext(w)(w)logcVeucvweucvwargmaxθwText()ccontext(w)(w)[ucvwlogCeucvw]

这种算法,如果使用梯度下降法进行参数的更新:
θ t + 1 = θ t − η + ▽ θ f ( θ ) \theta^{t+1}=\theta^{t}-\eta_+ \bigtriangledown _{\theta}f(\theta) θt+1=θtη+θf(θ)
此时的时间复杂度为 O ( ∣ V ∣ ) O(|V|) O(V),从时间复杂度的角度来看效率不高

《NLP基础2——多分类文本处理与特征工程》

CBOW操作起来运行的更快

Word2Vec的优化方法

  • hierarchical softmax(分层softmax) log ⁡ 2 ( v ) \log _2(v) log2(v)
  • negative sampling(负采样)

缺点:解决不了一词多义

目标:学习一个向量来代表每一个单词 w w w

分布式假设:是可以根据周围的单词来确定某一个单词的

OOV问题:out-of-vocablary

经典的学习词向量和句子向量的方法:fasttext方法——fasttext官网

5文本特征工程

构建文本特征的向量组合:

  • tf-idf( ∣ V ∣ |V| V
  • word2vec or sentence2vec( k k k
  • n-gram( s > > ∣ V ∣ s>>|V| s>>V
  • POS(词性)
  • 主题特征(LDA)
  • Task Specific features(wordcounts,大写字母数目,是否有人名,整个字符的长度)
    原文作者:buptyqx
    原文地址: https://blog.csdn.net/weixin_45218058/article/details/108726130
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞