Ios 从语音到文本的数学评价
我正在使用iOS语音API 我正在尝试做一些关于语音到文本框架输出的数学计算 有几个问题。。首先,用户可能会说一些愚蠢的话,所以我们必须检查它是单词还是数学表达式。所以我想我们可以用这样的方法:Ios 从语音到文本的数学评价,ios,swift,speech-recognition,Ios,Swift,Speech Recognition,我正在使用iOS语音API 我正在尝试做一些关于语音到文本框架输出的数学计算 有几个问题。。首先,用户可能会说一些愚蠢的话,所以我们必须检查它是单词还是数学表达式。所以我想我们可以用这样的方法: if string.contains("×") || string.contains("+") || string.contains("-") 但它看起来很糟糕,如果用户说例如“+2”,该怎么办 然后我想,也许我们可以检查输入是否为Int,所以我想: guard let stringResult =
if string.contains("×") || string.contains("+") || string.contains("-")
但它看起来很糟糕,如果用户说例如“+2”
,该怎么办
然后我想,也许我们可以检查输入是否为Int,所以我想:
guard let stringResult = result?.bestTranscription.formattedString else {
return
}
let convertedNumber = Int(stringResult)
if let stringResult = convertedNumber {
print(stringResult)
print("Everything works Fine")
} else {
print("nope..")
}
而且它一直在失败
我尝试了几种更奇怪的方法来解决这个错误处理,但我没有任何其他想法
输入,作为startRecording函数的一部分:
if result != nil {
guard let stringResult = result?.bestTranscription.formattedString else {
return
}
self.inputLabel.text = stringResult
然后计算看起来完全错误的函数:
private func calculate(string: String) {
if string.contains("×") || string.contains("+") || string.contains("-") {
let stringToCalculate = string.replacingOccurrences(of: "×", with: "*")
guard let finalScore = NSExpression(format: stringToCalculate).expressionValue(with: nil, context: nil) else { return }
outputLabel.text = String(describing: finalScore)
} else {
outputLabel.text = "Are you sure it's mathematical evaluation ?"
}
}
好的输入示例:7+7x2->21
坏:“海盗在喝朗姆酒!”或“海盗”->outputLabel.text=“你确定这是数学评估吗?”
因此,问题是我应该如何处理错误,以了解输入是数学计算,并对其进行数学计算,而不是单词/单词?自然语言解析是一项复杂的任务,当然可以通过简单的子字符串匹配,甚至是正则表达式来完成,但是现在有更先进的算法,它们使用机器学习来分类更复杂的情况。这样的系统是基于范例的,这意味着您可以向他们提交示例,他们将从中学习如何正确地识别意图。这种基于示例的系统可以解析“将结果乘以三”之类的内容,并理解“结果”是前面的结果,您需要将其乘以。它们还为您提供解析信心 例如,您可以基于SPACY检查此类工具,还有来自Microsoft的LIUS等服务 在iOS上运行这样的工具并不容易,您可能希望通过RESTAPI在服务器上运行它们。但编译MITIE在理论上是可能的 另见 相关