新聞中心
概覽
文本分類(lèi)器是一種機(jī)器學(xué)習(xí)模型,經(jīng)過(guò)訓(xùn)練將能夠識(shí)別自然語(yǔ)言文本中的規(guī)律,例如句子所表達(dá)的情緒。

創(chuàng)新互聯(lián)公司-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比饒平網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式饒平網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋饒平地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴(lài)。
訓(xùn)練文本分類(lèi)器的方法是向它展示大量已標(biāo)記的文本示例,例如你已標(biāo)記為好評(píng)、差評(píng)或中立的影評(píng)。
導(dǎo)入數(shù)據(jù)
首先,收集文本數(shù)據(jù)并導(dǎo)入到 MLDataTable (英文) 實(shí)例中。你可以從 JSON 和 CSV 格式創(chuàng)建數(shù)據(jù)表。如果文本數(shù)據(jù)在一系列文件里,你也可以將它們整理到文件夾中,并使用文件夾名稱(chēng)作為標(biāo)簽,類(lèi)似于“創(chuàng)建圖像分類(lèi)器模型”中使用的圖像數(shù)據(jù)源。
例如,假設(shè)一個(gè) JSON 文件中包含你按情緒分類(lèi)的影評(píng)。每個(gè)條目都包含 text 和 label 這樣一對(duì)屬性。這些屬性值就是用來(lái)訓(xùn)練模型的輸入樣本。下面的 JSON 段落顯示了三對(duì)句子以及對(duì)應(yīng)的情緒標(biāo)簽。
// 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:) (英文) 方法來(lái)創(chuàng)建數(shù)據(jù)表。
import CreateML let data = try MLDataTable(contentsOf: URL(fileURLWithPath: "<#/path/to/read/data.json#>"))
得到的數(shù)據(jù)表包含兩列,分別名為 text 和 label,這兩列從 JSON 文件中的鍵派生而來(lái)。列可以使用任意名稱(chēng),只要對(duì)你有意義即可,因?yàn)槟銜?huì)在其他方法中將列名用作參數(shù)。
準(zhǔn)備訓(xùn)練和評(píng)估數(shù)據(jù)
你用于訓(xùn)練模型的數(shù)據(jù)必須與用來(lái)評(píng)估模型的數(shù)據(jù)有所差別。使用 MLDataTable (英文) 的 randomSplit(by:seed:) (英文) 方法將數(shù)據(jù)拆分到兩個(gè)表中,分別用于訓(xùn)練和測(cè)試。訓(xùn)練數(shù)據(jù)表會(huì)包含大部分?jǐn)?shù)據(jù),測(cè)試數(shù)據(jù)表則包含其余 10% - 20% 的數(shù)據(jù)。
let (trainingData, testingData) = data.randomSplit(by: 0.8, seed: 5)
創(chuàng)建和訓(xùn)練文本分類(lèi)器
使用訓(xùn)練數(shù)據(jù)表和列名來(lái)創(chuàng)建 MLTextClassifier (英文) 實(shí)例。訓(xùn)練便會(huì)立即開(kāi)始。
let sentimentClassifier = try MLTextClassifier(trainingData: trainingData, textColumn: "text", labelColumn: "label")
在訓(xùn)練期間,Create ML 會(huì)分離出一小部分訓(xùn)練數(shù)據(jù),供在訓(xùn)練階段用來(lái)驗(yàn)證模型的進(jìn)度。驗(yàn)證數(shù)據(jù)讓訓(xùn)練過(guò)程能夠使用模型未訓(xùn)練過(guò)的示例來(lái)衡量模型的表現(xiàn)。根據(jù)驗(yàn)證準(zhǔn)確性,訓(xùn)練算法可以調(diào)整模型內(nèi)部的值,甚至能在準(zhǔn)確性足夠高時(shí)停止訓(xùn)練過(guò)程。由于拆分是隨機(jī)的,因此每次訓(xùn)練模型時(shí)可能會(huì)得到不同的結(jié)果。
要了解模型在訓(xùn)練和驗(yàn)證數(shù)據(jù)時(shí)的準(zhǔn)確度,請(qǐng)使用模型里 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
評(píng)估分類(lèi)器的準(zhǔn)確性
接著,使用新的句子對(duì)經(jīng)過(guò)訓(xùn)練的模型進(jìn)行測(cè)試,評(píng)估模型的表現(xiàn)情況。將你的測(cè)試數(shù)據(jù)表傳遞到 evaluation(on:) (英文) 方法,這將返回 MLClassifierMetrics (英文) 實(shí)例。
let evaluationMetrics = sentimentClassifier.evaluation(on: testingData)
要獲取評(píng)估準(zhǔn)確性,請(qǐng)使用所返回 MLClassifierMetrics (英文) 實(shí)例的 classificationError (英文) 屬性。
// Evaluation accuracy as a percentage let evaluationAccuracy = (1.0 - evaluationMetrics.classificationError) * 100
如果評(píng)估表現(xiàn)不理想,你可能需要使用更多數(shù)據(jù)重新訓(xùn)練或進(jìn)行其他調(diào)整。有關(guān)提升模型性能的信息,請(qǐng)參閱“提高模型準(zhǔn)確性”。
存儲(chǔ) Core ML 模型
如果你對(duì)模型表現(xiàn)滿(mǎn)意,就可以存儲(chǔ)模型以便在 App 中使用了。使用 write(to:metadata:) (英文) 方法將 Core ML 模型文件 (SentimentClassifier.mlmodel) 寫(xiě)入磁盤(pán)。在 MLModelMetadata (英文) 實(shí)例中提供有關(guān)模型的任何信息,例如作者、版本或描述等。
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 中打開(kāi) App 后,將 SentimentClassifier.mlmodel 文件拖到導(dǎo)航面板中。Xcode 會(huì)編譯模型并生成 SentimentClassifier 類(lèi),供你在 App 中使用。在 Xcode 中選擇 SentimentClassifier.mlmodel 文件可以查看關(guān)于模型的更多信息。
在自然語(yǔ)言框架中,從 SentimentClassifier 創(chuàng)建 NLModel,確保標(biāo)記化在訓(xùn)練和部署中是一致的。然后,使用 predictedLabel(for:) (英文) 來(lái)生成新文本輸入的預(yù)測(cè)。
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!")
本文名稱(chēng):創(chuàng)新互聯(lián)IOS教程:創(chuàng)建文本分類(lèi)器模型
本文URL:http://www.fisionsoft.com.cn/article/cdgcpgj.html


咨詢(xún)
建站咨詢(xún)
