重复词语处理
1.多项式模型(词袋模型)
词语每出现 一次就计数一次
2.伯努利模型(词集模型)
将重复的词语都视为只出现一次
3.在计算句子概率时(训练时),不考虑重复词语出现的次数,但在计算词语概率P(“词语”|c)时(判断时),却考虑重复词语的出现次数
工程应用注意事项
1.对数处理,因为乘法运算,计算的时间开销比较大,一般都是先计算出所有可能的结果,然后查表
2.转换权重,对于二分类问题,直接比较每个词向量相对概率
logCC¯¯¯¯=logP(w|c0)P(w|c1) l o g C C ¯ = l o g P ( w | c 0 ) P ( w | c 1 )
3.选取topk的关键词
4.分割样本,
对于长篇幅邮件,按一定的大小,比如每500字,将其分割成小的文本段落,再对小文本段落采用topk关键词的方法。只要其中有一个小文本段落超过阈值就判断整封邮件是垃圾邮件。
对于超短篇幅邮件,比如50字,可以按篇幅与标准比较篇幅的比例来选取topk,以确定应该匹配关键词语的个数。比如选取 50/500×15≈2 个词语进行匹配,相应的阈值可以是之前阈值的 2/15 。以此来判断则更合理。
5.位置权重
敏感词如果出现在标题中应该比它出现在正文中对判断整个邮件的影响更大;而出现在段首句中又比其出现在段落正文中对判断整个邮件的影响更大。所以可以根据词语出现的位置,对其权重再乘以一个放大系数,以扩大其对整封邮件的影响,提高识别准确度。
应用场景:
褒贬分析
拼写纠错
N-gram语言模型
独立性假设
P(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10) P ( x 1 , x 2 , x 3 , x 4 , x 5 , x 6 , x 7 , x 8 , x 9 , x 10 ) = P(x1)P(x2)P(x3)P(x4)P(x5)P(x6)P(x7)P(x8)P(x9)P(x10) P ( x 1 ) P ( x 2 ) P ( x 3 ) P ( x 4 ) P ( x 5 ) P ( x 6 ) P ( x 7 ) P ( x 8 ) P ( x 9 ) P ( x 10 )
非独立性假设
P(x1,x2,x3,x4,x5,…,xn) P ( x 1 , x 2 , x 3 , x 4 , x 5 , … , x n ) = P(x1)P(x2|x1)P(x3|x1,x2)...P(xn|x1,x2,...,xn−1) P ( x 1 ) P ( x 2 | x 1 ) P ( x 3 | x 1 , x 2 ) . . . P ( x n | x 1 , x 2 , . . . , x n − 1 )
联合概率链规则公式考虑到词和词之间的依赖关系,但是比较复杂,在实际生活中几乎没办法使用,所以就有了n-gram模型来近似这个算法.就是马尔科夫假设(Markov Assumption),下一个词的出现依赖于它前面的一个或几个词.
二元语法(bigram,2-gram)
P(x1,x2,x3,x4,x5,…,xn) P ( x 1 , x 2 , x 3 , x 4 , x 5 , … , x n ) =P(x1)P(x2|x1)P(x3|x2)P(x4|x3)..P(x10|x9) = P ( x 1 ) P ( x 2 | x 1 ) P ( x 3 | x 2 ) P ( x 4 | x 3 ) . . P ( x 10 | x 9 )
三元语法(trigram,3gram)
P(x1,x2,x3,x4,x5,…,xn) P ( x 1 , x 2 , x 3 , x 4 , x 5 , … , x n ) =P(x1)P(x2|x1)P(x3|x1,x2)P(x4|x2,x3)×...×P(x10|x8,x9) = P ( x 1 ) P ( x 2 | x 1 ) P ( x 3 | x 1 , x 2 ) P ( x 4 | x 2 , x 3 ) × . . . × P ( x 10 | x 8 , x 9 )
经验上一般选择trigram
应用场景:
词性标注
垃圾邮件识别
中文分词