gpt4 book ai didi

swift - MLDataTable 中的多个目标列 - Swift 中的 CreateML 框架

转载 作者:行者123 更新时间:2023-11-28 07:35:14 27 4
gpt4 key购买 nike

我想使用 Create ML 框架创建一个具有一个特征和三个目标的 MLDataTable。例如,假设我正在创建一个日历应用程序,它具有添加快速事件的功能,如 native Mac 日历应用程序。我有一个功能列文本,其中包含类似星期六早上在金奈尼赫鲁体育场举行的俱乐部比赛 之类的字符串。我想要三个目标列 titlelocationtime 来获取值 Club gameNehru体育场,金奈2018 年 11 月 24 日,08:00

此外,如果有任何其他方法可以使用 CreateML 框架实现相同的功能,请告诉我。

最佳答案

你可以训练MLWordTagger为了这个任务。以此格式创建训练数据文件 (JSON)。

[
{
"tokens": [
"Club game",
"at",
"Nehru Stadium Chennai",
"on",
"Saturday Morning"
],
"labels": [
"TITLE",
"NONE",
"LOCATION",
"NONE",
"TIME"
]
},
... other sample records...

]

您可以在 Playground 中使用以下代码进行训练。

var trainingData = try MLDataTable(contentsOf: URL(fileURLWithPath: "/pathto..train.json"))

let model = try! MLWordTagger(trainingData: trainingData, tokenColumn: "tokens", labelColumn: "labels")

然后使用这种预测方法来预测句子中的每个标记。

func prediction(from tokens: [MLWordTagger.Token]) throws -> [String]

此方法返回 token 的标签数组。

另一种方法是使用 NLTagger,它已经能够检测地名、组织名称,但不能检测时间。

import NaturalLanguage

let text = "Club game at Nehru Stadium, Chennai on Saturday Morning."
let tagger = NLTagger(tagSchemes: [.nameType])
tagger.string = text
let options: NLTagger.Options = [.omitPunctuation, .omitWhitespace, .joinNames]
let tags: [NLTag] = [.personalName, .placeName, .organizationName]
tagger.enumerateTags(in: text.startIndex..<text.endIndex, unit: .word, scheme: .nameType, options: options) { tag, tokenRange in
if let tag = tag, tags.contains(tag) {
print("\(text[tokenRange]): \(tag.rawValue)")
}
return true
}

这将返回下面的输出,因此您只需要训练模型来检测时间副词。

Nehru Stadium: PlaceName
Chennai: OrganizationName

关于swift - MLDataTable 中的多个目标列 - Swift 中的 CreateML 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53358019/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com