设备与模拟器语言方案

Device vs. Simulator Linguistic Schemes

有谁知道为什么会发生这种情况?

在任何模拟器上,所有方案都使用以下代码找到:

NSArray<NSLinguisticTagScheme> *availSchemes = [NSLinguisticTagger availableTagSchemesForLanguage:@"en"];
for (NSLinguisticTagScheme scheme in availSchemes) {
    NSLog(@"Tag scheme %@", scheme);
}

产生以下结果:

2018-02-13 09:12:54.066970-0500 MY_APP[79671:5737063] Tag scheme Language
2018-02-13 09:12:54.067160-0500 MY_APP[79671:5737063] Tag scheme Script
2018-02-13 09:12:54.067300-0500 MY_APP[79671:5737063] Tag scheme TokenType
2018-02-13 09:12:54.067425-0500 MY_APP[79671:5737063] Tag scheme LexicalClass
2018-02-13 09:12:54.067541-0500 MY_APP[79671:5737063] Tag scheme NameType
2018-02-13 09:12:54.067655-0500 MY_APP[79671:5737063] Tag scheme NameTypeOrLexicalClass
2018-02-13 09:12:54.067768-0500 MY_APP[79671:5737063] Tag scheme Lemma

但是,在我的设备上 (iPhone 6s iOS 11.2) 我收到以下内容..

2018-02-13 09:13:09.834879-0500 MY_APP[4327:313598] Tag scheme Language
2018-02-13 09:13:09.835256-0500 MY_APP[4327:313598] Tag scheme Script
2018-02-13 09:13:09.835556-0500 MY_APP[4327:313598] Tag scheme TokenType

谁能帮我解释一下为什么我无法访问其他方案?特别是我希望能够将 NSLinguisticTagSchemeLexicalClassNSLinguisticTagger 一起使用。目前这个问题导致标注器将 any 词标记为 (OtherWord),而不是它的真实词性。

任何帮助将不胜感激..

更新

所有物理设备给我相同的结果-只有三种可用方案...我在这里不知所措。

涵盖此主题的 WWDC 演示文稿表明,并非所有方案都支持所有语言。事实上,几个方案只支持以下语言:

  • 英语
  • 法语
  • 意大利语
  • 德语
  • 葡萄牙语
  • 俄语
  • 土耳其语

如果您在下面的链接页面上下载幻灯片,您可以在 幻灯片 136.

上看到其中的 table

当我在我的设备上 运行 你的代码时,他们都会报告你在 en 模拟器上获得的完整集。使用其他语言代码,我得到的更少。您是否检查了设备与模拟器上的 iOS 版本?

WWDC 2017:208 - Natural Language Processing and your Apps

经过孜孜不倦的研究,夜以继日的不眠之夜,三趟病房,终于找到了问题所在。虽然 fix 无论如何都是穷人的解决方案,但它仍然有效。


出于无论什么原因 我的 iPhone 6s iOS 11.2.5 在我最初设置时不想安装所有可用的语言方案我的phone?要么是这样,要么是有一天它感到无聊时决定 删除 它们。

不管怎样,解决方案是……滚鼓……

Uninstall the target language...then reinstall it.


我猜这个"reset"是re-include这些方案的语言包。快乐编码gg