gpt4 book ai didi

ios - 在 swift 3 中过滤代词、动词、地名

转载 作者:行者123 更新时间:2023-11-28 15:59:02 25 4
gpt4 key购买 nike

例如:

算法目前可以​​过滤这句话

What is the weather in San Francisco?

对此

什么:代词
是:动词
的:确定者
天气:名词
在:介词
旧金山:地名

我编写的代码使用 Swift 3 并使用 NSLinguisticTagger API。不幸的是,没有太多关于这个特定 API 的文档。

let question = "What is the weather in San Francisco?"
let options: NSLinguisticTagger.Options = [.omitWhitespace, .omitPunctuation, .joinNames]
let schemes = NSLinguisticTagger.availableTagSchemes(forLanguage: "en")
let tagger = NSLinguisticTagger(tagSchemes: schemes, options: Int(options.rawValue))
tagger.string = question
tagger.enumerateTags(in: NSMakeRange(0, (question as NSString).length), scheme: NSLinguisticTagSchemeNameTypeOrLexicalClass, options: options) { (tag, tokenRange, _, _) in
let token = (question as NSString).substring(with: tokenRange)
print("\(token): \(tag)")
}



var range = NSRange()
var oldString: String = "Where in the world is Carmen San Diego?"
var newString = (oldString as NSString).replacingCharacters(in: range, with: oldString) as? NSString


var tokenRanges: NSArray?
let tags = newString?.linguisticTags(
in: NSMakeRange(0, (question as NSString).length),
scheme: NSLinguisticTagSchemeNameTypeOrLexicalClass,
options: options, orthography: nil, tokenRanges: &tokenRanges
)

现在我想过滤名词、动词和地名,以便稍后在此示例天气 API 请求中执行。

is, weather, San Francisco

最佳答案

这似乎可以满足您的要求:

import Foundation

struct TaggedToken {
let token: String
let tag: String
}

let question = "What is the weather in San Francisco?"
let options: NSLinguisticTagger.Options = [.omitWhitespace, .omitPunctuation, .joinNames]
let schemes = NSLinguisticTagger.availableTagSchemes(forLanguage: "en")
let tagger = NSLinguisticTagger(tagSchemes: schemes, options: Int(options.rawValue))
tagger.string = question

var nounsVerbsAndPlaceNames = [TaggedToken]()
tagger.enumerateTags(in: NSMakeRange(0, (question as NSString).length), scheme: NSLinguisticTagSchemeNameTypeOrLexicalClass, options: options) { (tag, tokenRange, _, _) in
let token = (question as NSString).substring(with: tokenRange)
print("\(token): \(tag)")

switch tag {
case "Noun",
"Verb",
"PlaceName": nounsVerbsAndPlaceNames.append(TaggedToken(token: token, tag: tag))
default: break;
}
}

print(nounsVerbsAndPlaceNames)

关于ios - 在 swift 3 中过滤代词、动词、地名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41349824/

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