掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
文本分類器是一種機器學(xué)習(xí)模型,經(jīng)過訓(xùn)練將能夠識別自然語言文本中的規(guī)律,例如句子所表達的情緒。

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

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流