Swift NaturalLanguage 框架错误“令牌序列类型长度为 0”
Posted
技术标签:
【中文标题】Swift NaturalLanguage 框架错误“令牌序列类型长度为 0”【英文标题】:Swift NaturalLanguage framework error “Token SequenceType length is 0" 【发布时间】:2019-02-01 08:34:54 【问题描述】:我目前正在使用 Apple 的 CreateML 从我拥有的 JSON 文件生成 NLP 模型。这是我的代码:
import Foundation
import CreateML
import NaturalLanguage
let trainingData = try MLDataTable(contentsOf: Bundle.main.url(forResource: "Fel", withExtension: "json")!)
let model = try MLWordTagger(trainingData: trainingData, tokenColumn: "tokens", labelColumn: "labels")
let metadata = MLModelMetadata(author: "Sai Kambampati", shortDescription: "The Felicity Named Entity Recognizer", license: "MIT", version: "1.0")
try model.write(to: URL(fileURLWithPath: "/Users/SaiKambampati/Desktop/Felicity.mlmodel"), metadata: metadata)
JSON 文件有 116,096 行,Xcode 能够正确解析它。它从 5% 的数据中生成了一个验证集。然而,当它开始标记数据和提取特征时,我收到一条错误消息:
▿ MLCreateError
▿ generic : 1 element
- reason : "Token SequenceType length is 0”
我不知道这意味着什么,也无法在网上找到任何东西!有人可以帮忙吗?
【问题讨论】:
【参考方案1】:您的 JSON 文件必须采用这种格式才能使用 MLWordTagger 的 tokenColumn 参数。标记为字符串列表,标签为字符串列表。
[
"tokens": [
"Aprender",
"a",
"realizar",
"Aquisição",
"de",
"usuários"
],
"labels": [
"GENERIC_ACTION",
"NONE",
"ACTION",
"TOPIC",
"NONE",
"NONE"
]
, ...
【讨论】:
当我的token
数组之一为空时,我遇到了这个问题。以上是关于Swift NaturalLanguage 框架错误“令牌序列类型长度为 0”的主要内容,如果未能解决你的问题,请参考以下文章
我如何继续使用 Swift 2.3 而不是 3.0,Xcode 已更新且无法再构建