贝叶斯安全应用 (2) 信息提取

杀戮 (某无业游民) | 2014-11-25 17:18

贝叶斯安全应用 (2) 信息提取

昨天说了下公式的原理,结果忘了提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库共享出来。

[原文地址]

相关内容:

贝叶斯安全应用 (3) 过滤垃圾邮件

贝叶斯安全应用 (2) 信息提取

贝叶斯安全应用 (1)

各种吐槽:

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

思路很不错!