邮件信息抽取

550 查看

公司的一个项目,首先需要过滤一下邮件
邮件的主要内容就是应聘信息
当然会产生很多的垃圾邮件,比如智联招聘发的广告、猎头邮件和网易广告等
这里首先要过滤一下邮件,把没有用处的垃圾邮件过滤掉

本着先易后难的原则,首先使用简单的过滤方法
简单的说就是根据标题中的关键词,发件人邮箱来过滤邮件
这样的过滤方法其实过滤的准确性还是挺高的

当然啦,准确率和召回率可能还是要差一点的

经过初步过滤之后,接下来要做的就是信息的抽取

这个东西难度较大,
抽取的东西有地址、人名、公司名、职位、联系方式等
机器识别毕竟无法达到人类的高度

本次开发中主要使用python来做,这里写一下python项目需要注意的问题

1、不要滥用try ... except .....

 感觉这个问题很严重,如果滥用,而且还没处理好的话,出了问题根   
 本就无法调试,返回错误如果不对的话根本就无法追踪

2、要注意编码问题

 在使用python处理中文的时候,编码问题是格外重要,不过python的
 编码还是比较简单,我遇到的有gbk、gb18030、gb2312、utf8这几
 种使用的时候统一转为utf8比较方便

3、时间的处理

 这个还是比较麻烦的,邮件中的时间都是字符串类型,关键是要知道
 怎么去转化,例如:
 Wed, 2 Mar 2016 14:31:24 +0800 (CST)
 这里面的Wed, 2 Mar 2016 14:31:24部分,可以通过以下方式来做
 time.strptime('Wed, 2 Mar 2016 14:31:24', '%a,%d %b %Y %H:%M:%S')
 这样也能生成一个time的对象
 缺点就是需要截取一部分,而且不知道时间格式是否会变化,如果变化的话那也是要出问题的
 
 这里面email模块提供了一个解析的方法
 from email import utils
 utils.mktime_tz(utils.parsedate_tz(timestr))
 这样返回的是时间戳,然后再用
 time.localtime(stamptime)
 就可以返回正常的时间格式了
 其实email的utils方法提供了很多的解析邮件的方法,比如:
 utils.parseaddr()就可以把msg.get('From')里面的内容解析成邮箱