50万邮件文本分域检索与查询的python实现(4)
2012-09-16 20:54
411 查看
第四小节介绍对每个域的倒排表分别进行Top 50统计
在shell中与用户交互,根据用户输入决定导入哪个datebase。然后统计字典中每个键值的数目,接着调用sorted函数。代码如下:
给出“Subject”域的Top 50
在shell中与用户交互,根据用户输入决定导入哪个datebase。然后统计字典中每个键值的数目,接着调用sorted函数。代码如下:
import pickle def frncy(Field_Name,Dbase_Name): mydb=open(Dbase_Name,'r') mapping=pickle.load(mydb) mapping_cnt={} for key in mapping.keys(): cnt=0 for doc in mapping[key]: # doc[1] is the number of 'key' in every doc[0] cnt=cnt+doc[1] mapping_cnt.setdefault(key,[]).append(cnt) print print '********Top 50 Tokens and Their Frequency for \'',Field_Name,'\'*********' sorted_list=[] sorted_list=sorted(mapping_cnt.iteritems(), key=lambda a:a[1], reverse=True) for i in range(50): tmp=sorted_list[i] print '* Token',i+1,': ',tmp[0], ' ( Frequency:',tmp[1],')' print '**********************************************************' def main(): print '( ------- Top 50 Tokens for Any Field -------- )' while True: field_name=raw_input('* Please input field name(\'To\'|\'From\'|\'Subject\'|\'body\', \'q\' to quit): ') if field_name=='q': exit() elif field_name=='To': frncy('To','dbase_to') elif field_name=='From': frncy('From','dbase_from') elif field_name=='Subject': frncy('Subject','dbase_subject') elif field_name=='body': frncy('mail body','dbase_body') else: print '** Opps, not having this field! Try again...' if __name__ == '__main__': main()
给出“Subject”域的Top 50
相关文章推荐
- 50万邮件文本分域检索与查询的python实现(结)
- 50万邮件文本分域检索与查询的python实现(一)
- 50万邮件文本分域检索与查询的python实现(5)
- 50万邮件文本分域检索与查询的python实现(3)
- 50万邮件文本分域检索与查询的python实现(6)
- 50万邮件文本分域检索与查询的python实现(二)
- Python实现读取邮箱中的邮件功能示例【含文本及附件】
- 利用VB文本框选择文本内容的属性实现指定邮件号码的轨迹查询
- python根据BM25实现文本检索
- Python模块探秘之smtplib,实现纯文本邮件的发送
- Python模块探秘之smtplib,实现纯文本邮件的发送
- python根据BM25实现文本检索
- Python3实现发送QQ邮件功能(文本)
- 利用python,shell,crontab实现成绩自动查询和更新邮件提醒
- 用Python实现在Linux环境发送带附件的邮件,支持文本/html格式
- 基于Python实现自动慢查询分析,邮件自动发送
- python模块smtplib实现纯文本邮件发送功能
- Python模块探秘之一:smtplib,实现纯文本邮件的发送
- Python实现的查询mysql数据库并通过邮件发送信息功能
- JavaMail实现邮件发送的简单封装(包括文本、图片、html、附件)