吴恩达的机器学习编程作业14:processEmail 邮件分类

超精准!AI 结合邮件内容与附件的意图理解与分类! 借助AI进行邮件正文与附件内容的识别,可以极大提高工作效率。本文讲解如何设计一个AI系统,完成邮件内容意图检测:架构初揽、邮件正文&附件的理解与处理、搭建多数据源混合网络、训练&评估。 阅读详情
function word_indices = processEmail(email_contents)
%PROCESSEMAIL preprocesses a the body of an email and
%returns a list of word_indices 
%   word_indices = PROCESSEMAIL(email_contents) preprocesses 
%   the body of an email and returns a list of indices of the 
%   words contained in the email. 
%

% Load Vocabulary
vocabList = getVocabList();

% Init return value
word_indices = [];

% ========================== Preprocess Email ===========================

% Find the Headers ( \n\n and remove )
% Uncomment the following lines if you are working with raw emails with the
% full headers

% hdrstart = strfind(email_contents, ([char(10) char(10)]));
% email_contents = email_contents(hdrstart(1):end);

% Lower case
email_contents = lower(email_contents);

% Strip all HTML
% Looks for any expression that starts with < and ends with > and replace
% and does not have any < or > in the tag it with a space
email_contents = regexprep(email_contents, '<[^<>]+>', ' ');

% Handle Numbers
% Look for one or more characters between 0-9
email_contents = regexprep(email_contents, '[0-9]+', 'number');

% Handle URLS
% Look for strings starting with http:// or https://
email_contents = regexprep(email_contents, ...
                           '(http|https)://[^\s]*', 'httpaddr');

% Handle Email Addresses
% Look for strings with @ in the middle
email_contents = regexprep(email_contents, '[^\s]+@[^\s]+', 'emailaddr');

% Handle $ sign
email_contents = regexprep(email_contents, '[$]+', 'dollar');

% ========================== Tokenize Email ===========================

% Output the email to screen as well
fprintf('\n==== Processed Email ====\n\n');

% Process file
l = 0;

while ~isempty(email_contents)

    % Tokenize and also get rid of any punctuation
    [str, email_contents] = ...
       strtok(email_contents, ...
              [' @$/#.-:&*+=[]?!(){},''">_<;%' char(10) char(13)]);
    % Remove any non alphanumeric characters
    str = regexprep(str, '[^a-zA-Z0-9]', '');

    % Stem the word 
    % (the porterStemmer sometimes has issues, so we use a try catch block)
    try str = porterStemmer(strtrim(str)); 
    catch str = ''; continue;
    end;

    % Skip the word if it is too short
    if length(str) < 1
       continue;
    end

    % Look up the word in the dictionary and add to word_indices if
    % found
    % ====================== YOUR CODE HERE ======================
    % Instructions: Fill in this function to add the index of str to
    %               word_indices if it is in the vocabulary. At this point
    %               of the code, you have a stemmed word from the email in
    %               the variable str. You should look up str in the
    %               vocabulary list (vocabList). If a match exists, you
    %               should add the index of the word to the word_indices
    %               vector. Concretely, if str = 'action', then you should
    %               look up the vocabulary list to find where in vocabList
    %               'action' appears. For example, if vocabList{18} =
    %               'action', then, you should add 18 to the word_indices 
    %               vector (e.g., word_indices = [word_indices ; 18]; ).
    % 
    % Note: vocabList{idx} returns a the word with index idx in the
    %       vocabulary list.
    % 
    % Note: You can use strcmp(str1, str2) to compare two strings (str1 and
    %       str2). It will return 1 only if the two strings are equivalent.
    %
	for i = 1:length(vocabList)
		if(strcmp(vocabList(i), str))
			word_indices = [word_indices; i];
		end
	end







    % =============================================================


    % Print to screen, ensuring that the output lines are not too long
    if (l + length(str) + 1) > 78
        fprintf('\n');
        l = 0;
    end
    fprintf('%s ', str);
    l = l + length(str) + 1;

end

% Print footer
fprintf('\n\n=========================\n');

end

 

吴恩达机器学习支持向量机的MATLAB实现(对应ex6练习) 前言:本章作业有两个实现,一个是分类问题,有点类似于之前做过的分类,但是不同在这里是使用SVM实现。对于SVM的思想配套视频已经讲的比较清楚了,在练习中也是直接给出了关键代码,我们需要实现的只是部分。另一个是垃圾邮件的分类,也是使用SVM实现,这部分自己敲的内容很少。总之,本节很多关键代码吴恩达都直接给出,需要自己动手实现的都不难,重点是阅读这些核心代码。 gaussianKernel.m 这... 阅读详情

相关推荐

Programming Exercise 6:Support Vector Machines 第二部分

大家好,我是Mac Jiang,今天和大家分享一下coursera网站上Stanford University的Machine Learning公开课(吴恩达老师)课程第六次作业:Programming Exercise 6:Support Vector Machines。写这篇博客的目的是为在课程学习中遇到困难的同学提供一些帮助,同时帮助自己巩固这周的课程内容。欢迎博友转载此文章,但希望您在转载

Mac Jiang的博客 3232

深度学习笔记第一门课第一周:深度学习引言

本文是吴恩达老师的深度学习课程[1]笔记部分。作者:黄海广[2]主要编写人员:黄海广、林兴木(第四所有底稿,第五课第一二周,第三周前三节)、祝彦森:(第三课所有底稿)、贺志尧(第五课第三...

fengdu78的博客 471

吴恩达机器学习课Matlab作业代码全集(ex1到ex8,含神经网络/SVM/推荐系统等完整实现)

直接运行就能跑通吴恩达Coursera机器学习课程全部8个Matlab编程练习:从ex1线性回归、ex2逻辑回归与正则化,到ex3神经网络前向传播与反向传播,ex4神经网络权重展开与梯度检验,ex5正则化线性回归与学习曲线,ex6支持向量机与垃圾邮件分类(含processEmail、emailFeatures、porterStemmer等文本处理函数),ex7K均值聚类与PCA降维,ex8协同过滤推荐系统。包含所有主入口脚本(如ex1.m、ex2_reg.m、ex3_nn.m、ex4.m、ex5.m、ex6

zzz56的博客 245

吴恩达课程

课程名称:Machine Learning作者:Andrew Ng(吴恩达) 中文: http://deeplearning.stanford.edu/wiki/index.php/UFLDL%E6%95%99%E7%A8%8B 英文: http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=MachineLear

Zerokas的博客 936

垃圾邮件分类机器学习篇.rar

英文垃圾邮件分类机器学习篇——朴素贝叶斯、SVM、逻辑回归、随机森林、XGBoost

【VMware篇】7-通过ISO镜像升级VMware Esxi

本文主要介绍Dell服务器上安装的ESXi升级的方法之一(采用ISO升级)。

chen_yunan的博客 5515

LLM 系列 | 07:吴恩达ChatGPT Prompt课程实践:以智能客服邮件为例

例如,在一个特定的短语中,“我的最爱食品"最有可能的下一个词是"比萨”,其次最有可能的是"寿司"和"塔可"。因此,在温度系数为零时,模型将总是选择最有可能的下一个词,而在较高的温度系数下,它还将选择其中一个不太可能的词。这里指的文本扩展(Expanding)是将短文本,例如一组说明或主题列表,输入到大型语言模型LLM中,让模型生成更长的文本,例如基于某个主题的电子邮件或论文。

ljp1919的专栏 1162

浙江大学Fast-Lab从0制作自主空中机器人公开课教程补充及部分注意事项(适用于ubuntu系统和ROS零基础)

浙江大学Fast-Lab从0制作自主空中机器人公开课纯萌新补充(适用于从没接触过ubuntu系统),记录了一些自己不会的地方以及踩过的坑

qq_39986834的博客 2984

深度学习(三):中英文邮件分类(含代码)

主要内容:英文邮件分类、中文邮件分类【中英文邮件分类主要的区别在于embedding处,由于中文需要使用预训练词向量,而英文就不需要】 主要方法:TextCnn 一、英文邮件分类的代码实现 class TextCNN(object): def __init__(self, text_length, nclasses, vocab_size, embeddin...

qq_24140919的博客 1410

低功耗基础概念——Level Shifter cell补充

信号跨越不同级别电压模块进行驱动时,需要使用level shifter。 H2L Level shifer 从高电压到低电压的level shifter,可以是两个反相器的串联。 输入高电平区域信号INH,输出低电平区域信号OUTL,注意供应电源由低电压模块提供,即图中的VDDL。 从图中可以看出,H2L的level shifter只会引入一个buffer的延迟,对时序的影响较小。 L2H Level shifer 用低电压区域的信号invert和buffer之后得到的一对信号来驱动工作在高电压区域的交

qq_36480087的博客 1万+

Apple CarPlay Certification Guide December 2022 解析V1.0

Apple CarPlay Certification Guide December 2022更新说明

m0_74450450的博客 703

Coursera吴恩达机器学习week7的ex6编程作业代码

Machine-learning-ex6 这是Coursera上 Week7 的ml-ex6的编程作业代码。经过测验,全部通过。 具体文件可以进入我的github 包括以下4个文件: % gaussianKernel.m % dataset3Params.m % processEmail.m % emailFeatures.m gaussianKe...

loserChen的博客 5013

避开命令行!在VMware vCenter 8.0图形化界面里搞定SSL证书续期全流程

本文详细介绍了在VMware vCenter 8.0图形化界面中完成SSL证书续期的全流程,包括计算机SSL证书、VMCA根证书和STS证书的管理。通过可视化操作,管理员无需使用命令行即可高效处理证书问题,确保vSphere环境的稳定运行。文章还提供了证书监控与预警配置的实用技巧,帮助用户提前规避证书过期风险。

weixin_27051161的博客 282

吴恩达机器学习编程作业ex6 Part2 Build A Spam Classifier with SVM

一、程序及函数 1.引导脚本ex6_spam.m %% Machine Learning Online Class % Exercise 6 | Spam Classification with SVMs % % Instructions % ------------------------------------------------------------- % % This file contains code that helps you get started on the % ex

Polaris的博客 1953

高云FPGA系列教程(1):FPGA和ARM开发环境搭建

至此,高云FPGA和MCU开发环境就搭建完成了,整体还是比较简单的,几乎是一键完成,下一篇文章我们进行实际的FPGA和MCU开发。本文是高云FPGA系列教程的第1篇文章。

whik1194的博客 6186

MFC C++ 中实现跨平台(WindowsLinux)的远程桌面控制

**输入捕获**:在显示窗口中捕获鼠标/键盘事件(重写 `OnLButtonDown`、`OnMouseMove`、`OnKeyDown` 等),将事件坐标/键值通过网络发送到服务端。- **显示窗口**:使用 `CStatic` 或自定义 `CWnd` 派生类显示远程桌面图像(通过 `StretchDIBits` 绘制解压后的像素数据)。// 转换为相对坐标。- **Wayland 支持**:需使用 `libweston` 或 `xdg-desktop-portal`,较复杂,建议优先支持 X11。

寒寒豆豆软件公司的博客 155

Coursera吴恩达机器学习编程练习ex6——SVM

1. gaussianKernel.m function sim = gaussianKernel(x1, x2, sigma) %RBFKERNEL returns a radial basis function kernel between x1 and x2 % sim = gaussianKernel(x1, x2) returns a gaussian kernel betwee...

o707191418的博客 1171

华为OD机考双机位A卷 - 流浪地球(Java & Python& JS & C/C++ & GO )

华为OD机考双机位A卷 - 流浪地球(OD上机考试双机位A卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 4041

吴恩达机器学习Week_7 ex6课后编程作业代码答案

EX6gaussianKerneldataset3ParamsprocessEmailemailFeatures gaussianKernel function sim = gaussianKernel(x1, x2, sigma) %RBFKERNEL returns a radial basis function kernel between x1 and x2 % sim = gauss...

weixin_42330890的博客 951

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

[原创]ML吴恩达系列习题解答4_machine_learning_ex6

最近有点忙,慢更,见谅 要求如上,实现如下: (这个练习的代码比较简单,就不细讲了。吴老师在课程中一直强调SVM已经有成熟的算法库,练习的目的是理解并熟练运用SVM,不必太关心SVM库实现。。。) 1.实现gaussianKernel,就是计算相似度的 % ====================== YOUR CODE HERE ====================== % Instruc...

江东风又起 661

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

斯坦福大学(吴恩达) 机器学习课后习题详解 第七周编程题 SVM

作业下载地址:https://download.youkuaiyun.com/download/wwangfabei1989/10304617 1. 高斯核函数gaussianKernel function sim = gaussianKernel(x1, x2, sigma) %RBFKERNEL returns a radial basis function kernel between x1 and...

未来战警 3354

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Coursera----machine learning(吴恩达)第七周编程作业

gaussianKernel.m(核函数) function sim = gaussianKernel(x1, x2, sigma) %RBFKERNEL returns a radial basis function kernel between x1 and x2 % sim = gaussianKernel(x1, x2) returns a gaussian kernel betw...

许希律的博客 2087

吴恩达机器学习系列课程作业ex6 matlab实现

目录gaussianKernel.mdataset3Params.mprocessEmail.memailFeatures.m gaussianKernel.m function sim = gaussianKernel(x1, x2, sigma) %RBFKERNEL returns a radial basis function kernel between x1 and x2 % sim = gaussianKernel(x1, x2) returns a gaussian kernel bet

d7901699的博客 254

深度学习(四):RnnAttention实现中文邮件分类(含代码)

此代码不是学习视频的相关代码,是自己根据学习中文邮件分类后自己实践写的代码。 主要内容:实现中文邮件分类--也可扩展至多分类 主要方法:Rnn+Attention RNN部分代码如下: class RNNAttention(object): def __init__(self, text_length, nclasses, embedding_size, hidden_size,...

qq_24140919的博客 846

机器学习题2:请简述如何用朴素贝叶斯模型实现垃圾邮件的分类。

请简述如何用朴素贝叶斯模型实现垃圾邮件的分类。

my0214163的博客 433

机器学习 朴素贝叶斯之邮件分类

贝叶斯方法是以贝叶斯原理为基础,使用概率统计的知识对样本数据集进行分类。由于其有着坚实的数学基础,贝叶斯分类算法的误判率是很低的。贝叶斯方法的特点是结合先验概率和后验概率,即避免了只使用先验概率的主观偏见,也避免了单独使用样本信息的过拟合现象。贝叶斯分类算法在数据集较大的情况下表现出较高的准确率,同时算法本身也比较简单。 朴素贝叶斯方法是在贝叶斯算法的基础上进行了相应的简化,即假定给定目标值时属性之间相互条件独立。也就是说没有哪个属性变量对于决策结果来说占有着较...

qq_48864962的博客 6245
上一篇: 吴恩达的机器学习编程作业13:dataset3Params 选择最优参数
下一篇: 吴恩达的机器学习编程作业15:emailFeatures 邮件特征标记
蜗牛专注学习
博客等级 码龄15年 127粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值