切换屏幕
5476阅读 | 29回复

【年轻人第一次自己屏蔽垃圾短信(一)】使用Playground来打造机器学习模型

  [复制链接]
5主题27帖子159人气

级别: 实习版主

帖子
27
经验
61
精华
2
人气
159
发表于 2018-12-10 18:27:37 |浏览量 | 显示全部楼层 |阅读模式
我们将分为两节来完成全部教学:
1、使用Playground来打造机器学习模型
2、使用模型开发垃圾短信屏蔽APP
此课的最终目的是开发一款通过苹果内置机器学习来完成对垃圾短信屏蔽的应用程序。
参考资料
1、Creating a Text Classifier Model     
https://developer.apple.com/documentation/createml/creating_a_text_classifier_model
2、SMS and MMS Message Filtering  
https://developer.apple.com/documentation/sms_and_call_reporting/sms_and_mms_message_filtering
开始第一节你需要准备一台苹果电脑并已经安装了最新版的操作系统与Xcode(若有更新,请保持最新),我们将使用Xcode中的Playground来完成模型的训练与生成。

技术原理:
从iOS11开始,苹果在操作系统中内置了名为Core ML的机器学习框架,通过该框架我们可以分析自然语言文本并作出相应的判断,如下图所示:
1.png
我们可以通过学习来判断一句影评是正面或负面的。
我们也可以自己创建一个语料库,其中包含了一些标准文本与它们对应的标签,使用模型学习,当把一段新的文本内容输入到模型中,它便会自动去判断语意并为其选定一个最合适的标签,如下图所示:
2.png
步骤:
一、创建一个空的Playground项目,并准备语料:
1、创建项目,选择Get started with a playground:
3.png

2、选择 macOS 中的Blank,并点击Next,选择合适的路径与项目名称后即可成功创建一个playground:

4.png
5.png
3、准备语料,在开始创造模型前,我们要先准备好标准文本与其对应的标签,这个就是语料库,机器通过学习语料库中的标准数据来完成训练并创建模型,在之后的使用中,模型会将输入的新文本与语料库中的标准数据做比对并生成结果,在这个项目中,我们将使用json来表示我们需要的语料数据并将其保存为文件备用(至少准备50组数据):
6.png
每组数据有两个字段分别为text与label(字段可自定义为任何名称),text中放入文本,label中放入其对应的标签。
二、引入数据并训练:
1、我们先要引入CreateML并将准备的语料库挂载进来:
import Cocoa
import CreateML
let data = tryMLDataTable(contentsOf: URL(fileURLWithPath:"/Users/Desktop/data.json"))
文件路径无需手动输入,只要将文件拖入到代码中,就会自动获得路径,如图所示:
7.png
2、拆解数据。模型的训练成功与否是通过验证测试数据的准确性来确定的,我们将现有数据按照8:2的比例将语料库分为两个数据集,一个为训练集,一个为测试集(这个拆分过程具有随机性,所以每次拆分的结果都可能会不同):
let (trainingData, testingData) =data.randomSplit(by: 0.8, seed: 5)
3、训练。我们将训练集数据放入MLTextClassifier并指定textColumn与labelColumn字段:
let sentimentClassifier = tryMLTextClassifier(trainingData: trainingData,textColumn:"text",labelColumn: "label")
4、评估。在训练完成后我们将测试集放入验证准确性:
let uationMetrics =sentimentClassifier.uation(on: testingData)
let uationAccuracy = (1.0 - uationMetrics.classificationError)* 100
8.png
5、测试。往往我们的模型不可能达到100%的准确性,我们会通过多次调整训练集来让结果趋于完美。我们也可以使用下列方法来验证结果:
let sentimentPredictor = tryNLModel(mlModel: sentimentClassifier.model)
sentimentPredictor.predictedLabel(for:"亲爱的会员,NIKE特别呈上11.11精选产品系列")
9.png
6、导出。在确认模型能够达到我们需要的结果后,我们即可将模型导出为.mlmodel文件
let metadata = MLModelMetadata(author: "feng",shortDescription:"短信过滤器",version:"1.0")
try sentimentClassifier.write(to: URL(fileURLWithPath: "/Users/Desktop/sms.mlmodel"),metadata:metadata)
10.png
此时我们就已经将模型训练好了,在下一节中我们将会把制作好的模型加入到一个iOS APP中并使用相关接口完成一款屏蔽垃圾短信应用程序的开发。

评分8

评分次数8

we券+16 经验+16 人气+39

收起
totallai + 5 2018-12-27 16:18威锋有你更精彩:)
浪漫神经病 + 1 2018-12-13 23:36精品文章^_^
加勒比C + 3 2018-12-13 19:44突如其来的技术贴
ylq0119 + 1 2018-12-13 18:55威锋有你更精彩:)
糖醋丶炒排骨 + 16 + 16 + 16 2018-12-12 19:46精品文章^_^
tdwcb + 3 2018-12-11 17:13威锋有你更精彩:)
诗不达意 + 5 2018-12-11 15:31虽然看不懂,看起来很厉害的样子,冲这点给你满分
Villky_爱搞机 + 5 2018-12-11 06:50威锋有你更精彩
0主题40帖子0人气

级别: 小苹果

帖子
40
经验
34
精华
人气
0
发表于 2018-12-10 19:08:17 | 显示全部楼层
上飞机可厉害股东会的更快的刚回来

评分1

评分次数1

经验-16

收起
糖醋丶炒排骨 -16 2018-12-12 19:46请不要灌水
3主题30帖子0人气

级别: 小苹果

帖子
30
经验
30
精华
人气
0
发表于 2018-12-11 03:27:42 |威锋客户端 | 显示全部楼层
感谢楼主分享
55主题947帖子287人气

级别: 白苹果

帖子
947
经验
1046
精华
人气
287
发表于 2018-12-11 06:50:03 |威锋客户端 | 显示全部楼层
我还前排?今天上班,学习一下
7主题2837帖子65人气

级别: 金苹果

帖子
2837
经验
2849
精华
人气
65
发表于 2018-12-11 15:01:15 |威锋客户端 | 显示全部楼层
mark。
26主题579帖子57人气

级别: 白苹果

帖子
579
经验
631
精华
人气
57
发表于 2018-12-11 15:10:09 | 显示全部楼层
哈哈哈哈  看不懂
2主题61帖子0人气

级别: 青苹果

帖子
61
经验
60
精华
人气
0
发表于 2018-12-11 15:12:31 | 显示全部楼层
我也挺想学习python,但是自制力太差断断续续自学了些皮毛
5主题27帖子159人气

级别: 实习版主

帖子
27
经验
61
精华
2
人气
159
发表于 2018-12-11 15:24:41 | 显示全部楼层
诗不达意 发表于 2018-12-11 15:10
哈哈哈哈  看不懂

后续也会出一些基础课程哈
5主题27帖子159人气

级别: 实习版主

帖子
27
经验
61
精华
2
人气
159
发表于 2018-12-11 15:25:03 | 显示全部楼层
胡桃匣子_ 发表于 2018-12-11 15:12
我也挺想学习python,但是自制力太差断断续续自学了些皮毛

如果有兴趣的话 我可以开设一些python类的课程

26主题579帖子57人气

级别: 白苹果

帖子
579
经验
631
精华
人气
57
发表于 2018-12-11 15:31:07 | 显示全部楼层
对gm7pzoq于2018-12-10 18:27:37在楼主发表的内容评分:人气:+5;
我们将分为两节来完成全部教学:1、使用Playground来打造机器学习模型2、使用模型开发垃圾短信屏蔽APP 此课的最终目的是开发一款通过苹果内置机器学习来完成对垃圾短信屏蔽的应用程序。 参考资料1、Creating a Text Classifier……
虽然看不懂,看起来很厉害的样子,冲这点给你满分
您需要登录后才可以回帖 登录 | 注册

本版积分规则