Xcode 14.3 Playgrounds中MLTextClassifier弃用警告及DataSource使用疑问
问题
在macOS Ventura 13.1系统的Xcode 14.3 Playgrounds中运行以下代码:
let csvFile = Bundle.main.url(forResource: "all-data", withExtension: "csv")! let dataTable = try MLDataTable(contentsOf: csvFile) let (classifierEvaluationTable, classifierTrainingTable) = dataTable.randomSplit(by: 0.20, seed: 5) let classifier = try MLTextClassifier(trainingData: classifierTrainingTable, textColumn: "text", labelColumn: "sentiment")
收到弃用警告:
'init(trainingData:textColumn:labelColumn:parameters:)' was deprecated in macOS 13.0: Use DataSource instead of MLDataTable when initializing.
缺少创建DataFrame或DataSource的相关文档,如何正确使用DataSource替代MLDataTable完成初始化?
解决方案
可以通过MLTextClassifier.DataSource结合原有MLDataTable的行数据来创建数据源,具体步骤如下:
- 从训练用的
MLDataTable中提取文本列和标签列的字符串数据 - 用提取到的文本、标签数组初始化
MLTextClassifier.DataSource - 将数据源传入
MLTextClassifier的初始化方法
修改后的完整代码示例:
let csvFile = Bundle.main.url(forResource: "all-data", withExtension: "csv")! let dataTable = try MLDataTable(contentsOf: csvFile) let (classifierEvaluationTable, classifierTrainingTable) = dataTable.randomSplit(by: 0.20, seed: 5) // 提取训练数据中的文本与标签列数据 let trainingTexts = classifierTrainingTable["text"].strings! let trainingLabels = classifierTrainingTable["sentiment"].strings! // 创建符合要求的数据源 let trainingDataSource = MLTextClassifier.DataSource(texts: trainingTexts, labels: trainingLabels) // 使用数据源初始化文本分类器 let classifier = try MLTextClassifier(trainingDataSource: trainingDataSource)
如果需要自定义分类器配置,可传入MLTextClassifier.Parameters参数:
let parameters = MLTextClassifier.Parameters() // 示例:设置最大序列长度 parameters.maxSequenceLength = 512 let classifier = try MLTextClassifier(trainingDataSource: trainingDataSource, parameters: parameters)
内容的提问来源于stack exchange,提问作者john doe
相关产品推荐
相关产品推荐

