NSLinguisticTagger enumerateTagsInRange 在具有 NSLinguisticTagSchemeNameTypeOrLexicalClass 的设备上不起作用
Posted
技术标签:
【中文标题】NSLinguisticTagger enumerateTagsInRange 在具有 NSLinguisticTagSchemeNameTypeOrLexicalClass 的设备上不起作用【英文标题】:NSLinguisticTagger enumerateTagsInRange doesn't work on device with NSLinguisticTagSchemeNameTypeOrLexicalClass 【发布时间】:2018-04-01 21:12:00 【问题描述】:这是我正在使用的代码,无论我在设备上使用什么句子,它都不会打印任何内容。在模拟器上运行良好!
- (NSMutableArray *)getTagEntries:(NSString *)sentence
NSArray<NSLinguisticTagScheme> *tagSchemes = [NSLinguisticTagger availableTagSchemesForLanguage:@"en"];
NSLinguisticTaggerOptions options = NSLinguisticTaggerJoinNames | NSLinguisticTaggerOmitWhitespace;
NSLinguisticTagger *linguisticTagger = [[NSLinguisticTagger alloc] initWithTagSchemes:tagSchemes options:options];
linguisticTagger.string = sentence;
__block NSMutableArray *tagEntries = [@[] mutableCopy];
[linguisticTagger enumerateTagsInRange:NSMakeRange(0, sentence.length) scheme:NSLinguisticTagSchemeNameTypeOrLexicalClass options:options usingBlock:^(NSLinguisticTag tag, NSRange tokenRange, NSRange sentenceRange, BOOL *stop)
NSString *token = [sentence substringWithRange:tokenRange];
NSLog(@"%@ -> %@", token, tag);
[tagEntries addObject:@@"token":token, @"tag":tag];
];
return tagEntries;
当我尝试在我的 iPhone 上打印出可用的方案时,Lexical 不是一个选项。怎么会!?
NSArray<NSLinguisticTagScheme> *availSchemes = [NSLinguisticTagger availableTagSchemesForLanguage:@"en"];
for (NSLinguisticTagScheme scheme in availSchemes)
NSLog(@"Tag scheme %@", scheme);
// output:
// Tag scheme Language
// Tag scheme Script
// Tag scheme TokenType
在 ios 11 上使用 iPhone 6+。
【问题讨论】:
您有没有找到解决方案在它失败的设备上完成这项工作?我发现了同样的问题 【参考方案1】:不幸的是,答案是更换设备。我的 iPhone X 没有这个问题。这可能是因为 6s 和更新的手机都有专用的 ML 芯片。
【讨论】:
很奇怪,因为这门课已经存在多年了; 2012 年为我工作。 @AlbertRenshaw 我有同样的问题..关于为什么这些方案在物理设备上不“存在”的任何想法? (iPhone 6s iOS 11.2)以上是关于NSLinguisticTagger enumerateTagsInRange 在具有 NSLinguisticTagSchemeNameTypeOrLexicalClass 的设备上不起作用的主要内容,如果未能解决你的问题,请参考以下文章
IOS/Objective-C:用于识别命名实体的 NSLinguisticTagger
我们如何在 iOS 中制作自定义的 NSLinguisticTagger tagSchemes?
NSLinguisticTagger enumerateTagsInRange 在具有 NSLinguisticTagSchemeNameTypeOrLexicalClass 的设备上不起作用
iOS NSLinguisticTagger 在获取引理词干时总是返回 null
如何在 Mac OSX 上更正 NSLinguisticTagger 函数并出现错误“Type 'String' has no member 'tokenType'”(该函数适用于 iOS)?