贝叶斯安全应用 (2) 信息提取
杀戮 (某无业游民) | 2014-11-25 17:18
昨天说了下公式的原理,结果忘了提IBM paper的事,其实里面的细节也没怎么看,我就看到一张图。
大概就是通过贝叶斯提取信息中的一些可能是隐私信息的东西,今天拿一个小算法举例,有的时候我们收集的东西并不只是数据库类型这种东西,还有可能到电话号码,QQ,微信,名字,公司名各种各样的,有没有可能性将其过程自动化?现在看几句话
"咨询QQ:159755422微信:poi1ss14"
"欢迎把需求发送至hezuo@iu.com"
"有意向者打电话 王小姐:151-5875-3066"
随便摘抄的,现在需要抽取信息,怎么才能做到完整抽取,确实正则表达式是个不错的方法,但是总有不足的地方,如果我们需要抽取的是人名?公司名?或者其他的,单以上面的几条信息来说,本就不好写正则。人们总是喜欢在句子里加点什么显得有文化。
现在回忆下昨天说的概率,我们是否有办法把一条信息变成一种概率可计算的东西。现在试着给句子做分词,分词技术不多说,有很多开源库,我一般用 jieba分词
现在第一句变成了这样
[咨询,QQ,:,159755422,微信,:,poi1ss14]
我们可以把他表达为 W = w1 , w2 , w3 , w4 , w5, w6, w7 ,就像一个列表类型。人们写一段文字总是有着一个主题,比如写一个招聘信息,就不可避免用到 简历 , 联系, 邮箱,等词。假设把他作为一种概率,比如说招聘信息里出现“简历”的概率。
我们需要知道一条招聘信息中的邮箱, 邮箱在招聘信息里的条件概率是P(w1),我们知道一般别人发照片信息都喜欢用 “请发送简历到 xxxx(AT)250.com” , ”请联系我的邮箱地址.....“ 类似的语气。
那么招聘信息邮箱前面出现 “到” 的概率就是 P(w1) * p(w1-1|w1),就是说这 "到email" 这两个词一起在招聘信息里头出现的概率,虽然我们有可能用这个办法抽出不少邮箱,但是难免不会有人用一些奇葩的写法,比如"放学别走到555-125街等我"。那么我们就再加入一个词,当年有个数学家叫Markov,他提出了一种方法,就是一个词出现的概率之和前面一个词存在关联,来解决如果带入过多的变量引起的神级计算量的问题,比如一个词可以和前面100个词有关,那你自己算吧。
那么我们要做的就是计算 P(w1)*P(w2|w1)*P(w3|w2),概括解释就是信息中出现email的概率 * email前面有一个‘到’的概率 * ‘到’前面有一个‘邮箱’的概率。
我们就可以得出 xxxx(AT)250.com这条信息是一个邮箱地址的概率,这种方式被称为 N-gram模型,早年谷歌翻译貌似是用这个,现在不知道,懒得查。
下午做了一些简单的测试,不过手头没什么数据,不好做调整,有时间的话我可以写一个python库共享出来。
相关内容:
各种吐槽:
1#
MT哥 (AG安全团队,小菜一枚) | 2014-11-25 18:03
支持杀戮,前排占位!
2#
付弘雪 | 2014-11-25 18:51
下一期是不是就该讲解 数据分析 数据挖掘了
3#
泳少 (最近有些事忙。把梦圆了) | 2014-11-25 18:56
不错,来当我数学老师吧
4#
xiaokinghk | 2014-11-25 19:32
求python库
5#
xiaokinghk | 2014-11-25 19:33
求效率高的python提取
6#
RainShine (成酱油党了,马上就可以戒Zone了。) | 2014-11-25 19:33
支持!
7#
小乐天 | 2014-11-25 19:48
论文对此相似度是这么回事?
8#
杀戮 (某无业游民) | 2014-11-25 20:27
@小乐天 论文对此相似度是个啥不太清楚。。。不过一般的相似度计算是把 文档转化为向量的形式然后计算余弦值或者其他什么的
9#
马化腾 | 2014-11-26 01:09
数学学霸
10#
小乐天 | 2014-11-26 01:43
@杀戮 是论文相似度对比,打错一个字
11#
Mody | 2014-11-26 11:18
年轻?
12#
冷冷的夜 (预备唱:希望你过的没我好,死得比我早,吃不好也睡不) | 2014-11-26 11:25
思路很不错!