作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
例如:
算法目前可以过滤这句话
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/
给定以下文本: “病人:很好,这部电影很吸引人。它叫第一天使,是关于林肯的——我猜是根据一本书改编的。但它是关于林肯八岁时的。整部电影发生在那时。在那段时间里——我的意思是他大概八九岁,他的母亲死于某
我是一名优秀的程序员,十分优秀!