以上代码检查取户是否向框内输入了任何信息。如不雅有,调用tfidf()函数计算文本的tfidf值。然后生成一个SpamMessageClassifier 对象实例,再调用.prediction() 函数。这与sklearn中的 .predict() 函数雷同。然后基于猜测展示恰当的信息。
但为什么须要tfidf()?
记住我们基于文本的tf-idf表征来练习模型,是以我们的模型须要雷同情势的输入。一旦获得键入的文本框的信息,就调入tfidf()函数来做同样的事。来写这一步的代码吧,复制下列代码放在predictSpam()函数后:
- //MARK: Functionality code
- func tfidf(sms: String) -> MLMultiArray{
- //get path for files
- let wordsFile = Bundle.main.path(forResource: "wordlist", ofType: "txt")
- let smsFile = Bundle.main.path(forResource: "SMSSpamCollection", ofType: "txt")
- do {
- //read words file
- let wordsFileText = try String(contentsOfFile: wordsFile!, encoding: String.Encoding.utf8)
- var wordsData = wordsFileText.components(separatedBy: .newlines)
- wordsData.removeLast() // Trailing newline.
- //read spam collection file
- let smsFileText = try String(contentsOfFile: smsFile!, encoding: String.Encoding.utf8)
- var smsData = smsFileText.components(separatedBy: .newlines)
- smsData.removeLast() // Trailing newline.
- let wordsInMessage = sms.split(separator: " ")
- //create a multi-dimensional array
- let vectorized = try MLMultiArray(shape: [NSNumber(integerLiteral: wordsData.count)], dataType: MLMultiArrayDataType.double)
- for i in 0..
- let word = wordsData[i]
推荐阅读
如今的┞封个IT时代,有一些用户对于安然问题并不是太关怀,切实其实,安排安然办法并不克不及带来营业的增长,只能是当做对于营业风险的防备,为了防止出问题才必不得已去应用。很多的企>>>详细阅读
地址:http://www.17bianji.com/lsqh/37900.html
1/2 1