垃圾邮件分类(trec06c数据集)数据处理-特征提取

目录

目标:我要提取 发件人(From)、收件人(To)、邮件主题(Subject)、邮件正文(zhengwen) 作为邮件特征,然后输入到线性分类模型中进行训练

首先是这四个特征提取的部分

发件人

收件人

邮件主题

邮件正文

获取 标签--路径 对照表

把这一部分的全部的代码放这儿:

~~~~~~~~~~~待更新~~~~~~~~~~~~~~~~~~~~~~~~~~~


数据集是这样的 

data里是数据文件

full里是index文件,存放哪个路径的文件是什么类型

index文件 (类型--文件路径 对照表)

目标:我要提取 发件人(From)、收件人(To)、邮件主题(Subject)、邮件正文(zhengwen) 作为邮件特征,然后输入到线性分类模型中进行训练

首先是这四个特征提取的部分

发件人

通过上面的邮件的图,可以看到From、Subject中有用gb2312和base64编码的部分,需要进行解码

另外 如果多打开几个文件可以观察到 From字段的情况比较复杂,我观察到了这四种(列在下面),其实可能不止这四种格式

From: wei@13.com
From: "yan"<(8月27-28,上海)培训课程>
From: ke@163.com" <chunyang-sz@163.com>
From: =?GB2312?B?zuLmw+bD?= <hou@163.com>

我做的处理步骤大体如下:

 解码部分优先用gb2312解 ,如果报异常 就在用gbk解,如果还是报异常,就直接赋空串

def From_email(email): # email是整封邮件的内容字符串
    # 发件人
    # 先提取From后的所有内容
    try:
        From_raw = re.search(r'From: (.*)', email).group(1)
    except:
        From_raw = ''
    From = ''
    # 先看看有没有加密部分 有加密部分就给他解密
    name = re.search(r'=\?GB2312\?B\?(.*)\?=', From_raw, re.I)  # name保存加密部分
    if name is None:  # 没有加密部分
        name = ''
        # 没有加密部分 就保留串的所有内容
        From = From_raw
    else:  # 有加密部分
        name = name.group(1)
        try:
            name = base64.b64decode(name).decode('gb2312')
        except:
            try:
                name = base64.b64decode(name).decode('gbk')
            except:
                name = ''
        From = name + re.search(r'\?=(.*)', From_raw).group(1)
    # print('From: ', From)
    return From

收件人

存在以TO: 开头的情况,加个re.I 就不区分大小写了

def To_email(email):
    # 收件人
    To = re.search(r'^To: (.*)', email, re.M | re.I).group(1)  # re.M 从每行文本开头的位置开始匹配
    # print('To: ', To)
    return To

邮件主题

处理这个字段的流程基本和From字段一样,Subject的格式比较统一,基本都是加密形式

def Subject_email(email):
    # 主题
    Subject = re.search(r'=\?gb2312\?B\?(.*)\?=', email)
    if Subject is None:
        Subject = ''
    else:  # subject 有内容
        Subject = Subject.group(1)
        Subject = base64.b64decode(Subject)  # 解密
        try:
            Subject = Subject.decode('gb2312')  # 解码
        except:
           
### 回答1: 为了下载TREC06C数据集,您可以按照以下步骤进行操作: 1. 首先,您需要打开网页浏览器并访问TREC官方网站。您可以在搜索引擎中输入"TREC官方网站"来找到该网站。 2. 在TREC官方网站上,您可以找到与TREC06C数据集相关的信息和资源。您可以使用网站上的搜索功能,搜索TREC06C数据集。 3. 在搜索结果中,您可能会看到有关TREC06C数据集的页面或链接。请点击相关链接以获取进一步的信息。 4. 在相关页面上,您可能会找到关于TREC06C数据集的描述、下载链接或访问权限的说明。请根据页面上的引导,选择适合您的下载选项。 5. 请注意,有些数据集可能需要您注册或登录才能进行下载。如果需要注册,请按照页面上的要求进行注册。 6. 一旦您找到适合的下载选项并完成相关步骤,您可以点击下载链接或按照页面上的说明进行下载。 7. 下载时间可能会根据您的网络连接速度和数据集的大小而有所不同。请耐心等待下载完成。 8. 下载完成后,您可以查看下载的文件,并根据需要进行相应的数据分析或研究。 希望以上信息对您有所帮助,祝您成功下载TREC06C数据集! ### 回答2: TREC06C是一个公开的数据集,用于信息检索和文本分类的研究和评估。它是2006年美国国家标准技术研究所(NIST)举办的TREC竞赛中使用的数据集。 要下载TREC06C数据集,首先需要在NIST的TREC网站上注册一个账号。注册完成后,根据网站上的指引,选择TREC06C数据集并查找下载链接。 在下载链接中,可能会有不同格式的数据集可供选择,如原始文本、索引文件或预处理的数据等。根据自己的需要选择合适的数据格式并下载。 一旦下载完成,就可以开始使用TREC06C数据集进行研究和评估了。可以根据数据集的文档来了解数据的结构和标记方式,这有助于更好地理解和处理数据集。 在进行研究和评估过程中,可以使用TREC06C数据集来构建文本分类模型、评估信息检索算法的性能,或者进行其他相关的任务。可以根据自己的具体需求和研究目标来利用数据集,并按照科研的规范进行实验和分析。 总之,下载TREC06C数据集需要在NIST的TREC网站上注册账号,找到对应的下载链接,并选择合适的数据格式进行下载。通过合理利用数据集进行研究和评估,可以提高信息检索和文本分类等领域的研究成果。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值