Xcode14.3中NLTagger全部标记为Other/OtherWord问题求助
问题:NLTagger 所有标签返回 Other/OtherWord 问题
我尝试了苹果官方的命名实体识别示例,代码如下:
import NaturalLanguage let text = "The American Red Cross was established in Washington, D.C., by Clara Barton." 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)") } // 获取多个带置信度的候选标签 let (hypotheses, _) = tagger.tagHypotheses(at: tokenRange.lowerBound, unit: .word, scheme: .nameType, maximumCount: 1) print(hypotheses) return true }
但运行后所有名称标签均返回为Other。
我还尝试了词汇类标记示例,所有单词都被标记为OtherWord,代码如下:
var text = "The American Red Cross was established in Washington, D.C., by Clara Barton." let tagger = NLTagger(tagSchemes: [.lexicalClass]) tagger.string = text let options: NLTagger.Options = [.omitPunctuation, .omitWhitespace, .joinNames] print("language", tagger.dominantLanguage) tagger.enumerateTags(in: text.startIndex..<text.endIndex, unit: .word, scheme: .lexicalClass, options: options) { tag, tokenRange in // 获取最可能的标签并打印 if let tag = tag { print("\(text[tokenRange]): \(tag.rawValue)") } return true }
我尝试过设置语言正字法的解决方案,但没有效果:
//tagger.setOrthography(NSOrthography(dominantScript: "Latn", languageMap: ["Latn": ["en"]]), range: text.startIndex..<text.endIndex) tagger.setOrthography(NSOrthography.defaultOrthography(forLanguage: "en-US"), range: text.startIndex..<text.endIndex)
请问这是什么原因?我使用的Xcode版本为14.3。
内容的提问来源于stack exchange,提问作者CodeBrew
相关产品推荐
相关产品推荐

