创新互联IOS教程:创建文本分类器模型

概览

文本分类器是一种机器学习模型,经过训练将能够识别自然语言文本中的规律,例如句子所表达的情绪。

创新互联公司-专业网站定制、快速模板网站建设、高性价比饶平网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式饶平网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖饶平地区。费用合理售后完善,10多年实体公司更值得信赖。

训练文本分类器的方法是向它展示大量已标记的文本示例,例如你已标记为好评、差评或中立的影评。

导入数据

首先,收集文本数据并导入到 MLDataTable (英文) 实例中。你可以从 JSON 和 CSV 格式创建数据表。如果文本数据在一系列文件里,你也可以将它们整理到文件夹中,并使用文件夹名称作为标签,类似于“创建图像分类器模型”中使用的图像数据源。

例如,假设一个 JSON 文件中包含你按情绪分类的影评。每个条目都包含 textlabel 这样一对属性。这些属性值就是用来训练模型的输入样本。下面的 JSON 段落显示了三对句子以及对应的情绪标签。

 // JSON file [  {  "text": "The movie was fantastic!",  "label": "positive"  }, {  "text": "Very boring. Fell asleep.",  "label": "negative"  }, {  "text": "It was just OK.",  "label": "neutral"  } ... ]
						

在 macOS Playground 中,可以使用 MLDataTable (英文) 的 init(contentsOf:options:) (英文) 方法来创建数据表。

 import CreateML   let data = try MLDataTable(contentsOf: URL(fileURLWithPath: "<#/path/to/read/data.json#>"))
						

得到的数据表包含两列,分别名为 textlabel,这两列从 JSON 文件中的键派生而来。列可以使用任意名称,只要对你有意义即可,因为你会在其他方法中将列名用作参数。

准备训练和评估数据

你用于训练模型的数据必须与用来评估模型的数据有所差别。使用 MLDataTable (英文) 的 randomSplit(by:seed:) (英文) 方法将数据拆分到两个表中,分别用于训练和测试。训练数据表会包含大部分数据,测试数据表则包含其余 10% - 20% 的数据。

 let (trainingData, testingData) = data.randomSplit(by: 0.8, seed: 5)
						

创建和训练文本分类器

使用训练数据表和列名来创建 MLTextClassifier (英文) 实例。训练便会立即开始。

 let sentimentClassifier = try MLTextClassifier(trainingData: trainingData,  textColumn: "text",  labelColumn: "label")
						

在训练期间,Create ML 会分离出一小部分训练数据,供在训练阶段用来验证模型的进度。验证数据让训练过程能够使用模型未训练过的示例来衡量模型的表现。根据验证准确性,训练算法可以调整模型内部的值,甚至能在准确性足够高时停止训练过程。由于拆分是随机的,因此每次训练模型时可能会得到不同的结果。

要了解模型在训练和验证数据时的准确度,请使用模型里 trainingMetrics (英文) 和 validationMetrics (英文) 属性中的 classificationError (英文) 属性。

 // Training accuracy as a percentage let trainingAccuracy = (1.0 - sentimentClassifier.trainingMetrics.classificationError) * 100   // Validation accuracy as a percentage let validationAccuracy = (1.0 - sentimentClassifier.validationMetrics.classificationError) * 100
						

评估分类器的准确性

接着,使用新的句子对经过训练的模型进行测试,评估模型的表现情况。将你的测试数据表传递到 evaluation(on:) (英文) 方法,这将返回 MLClassifierMetrics (英文) 实例。

 let evaluationMetrics = sentimentClassifier.evaluation(on: testingData)
						

要获取评估准确性,请使用所返回 MLClassifierMetrics (英文) 实例的 classificationError (英文) 属性。

 // Evaluation accuracy as a percentage let evaluationAccuracy = (1.0 - evaluationMetrics.classificationError) * 100
						

如果评估表现不理想,你可能需要使用更多数据重新训练或进行其他调整。有关提升模型性能的信息,请参阅“提高模型准确性”。

存储 Core ML 模型

如果你对模型表现满意,就可以存储模型以便在 App 中使用了。使用 write(to:metadata:) (英文) 方法将 Core ML 模型文件 (SentimentClassifier.mlmodel) 写入磁盘。在 MLModelMetadata (英文) 实例中提供有关模型的任何信息,例如作者、版本或描述等。

 let metadata = MLModelMetadata(author: "John Appleseed",  shortDescription: "A model trained to classify movie review sentiment",  version: "1.0")   try sentimentClassifier.write(to: URL(fileURLWithPath: "<#/path/to/save/SentimentClassifier.mlmodel#>"),  metadata: metadata)
						

将模型添加到 App

在 Xcode 中打开 App 后,将 SentimentClassifier.mlmodel 文件拖到导航面板中。Xcode 会编译模型并生成 SentimentClassifier 类,供你在 App 中使用。在 Xcode 中选择 SentimentClassifier.mlmodel 文件可以查看关于模型的更多信息。

在自然语言框架中,从 SentimentClassifier 创建 NLModel,确保标记化在训练和部署中是一致的。然后,使用 predictedLabel(for:) (英文) 来生成新文本输入的预测。

 import NaturalLanguage import CoreML   let mlModel = try SentimentClassifier(configuration: MLModelConfiguration()).model   let sentimentPredictor = try NLModel(mlModel: mlModel) sentimentPredictor.predictedLabel(for: "It was the best I've ever seen!")
						

网页标题:创新互联IOS教程:创建文本分类器模型
文章网址:http://www.shufengxianlan.com/qtweb/news23/231023.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联