用dynamic_rnn来进行垃圾邮件分类

本文档展示了如何在TensorFlow中利用dynamic_rnn搭建RNN模型,以短信文本为输入,进行垃圾邮件(spam)与正常邮件(ham)的分类。首先,数据预处理包括下载、清理和格式化短信数据,然后通过VocabularyProcessor创建词汇表并转换文本为数值序列。接着,定义RNN模型,使用BasicRNNCell,动态地处理不同长度的序列。训练过程中采用dropout防止过拟合,并监控训练与测试损失及准确率。最后,绘制损失和准确率随训练轮数变化的图表。
摘要由CSDN通过智能技术生成
#implementing an rnn in tensorflow
#
#we implement an RNN intensorflow to predict spam/ham from texts
#

import os
import re
import io
import requests
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from zipfile import ZipFile
from tensorflow.python.framework import ops
ops.reset_default_graph()

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

#start a graph
sess=tf.Session()

#set rnn parameters
epochs=20
batch_size=250
max_sequence_length=25     #短信最大长度为25个单词,超过部分会被截取掉,不够的部分用0填充
rnn_size=10            #rnn模型由10个单元组成,一个cell中神经元的个数
embedding_size=50         #每个单词会被嵌套在长度为50的词向量中
min_word_frequency=10         #词频超过10的单词
learning_rate=0.0005
dropout_keep_prob=tf.placeholder(tf.float32)

# Download or open data
data_dir = 'temp'
data_file = 'text_data.txt'
if not os.path.exists(data_dir):
    os.makedirs(data_dir)

if not os.path.isfile(os.path.join(data_dir, data_file)):
    zip_url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/00228/smsspamcollection.zip'
    r = requests.get(zip_url)
    z = ZipFile(io.BytesIO(r.content))
    file = z.read('SMSSpamCollection')
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值