6

有谁明白为什么会这样?

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

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

谁能帮我解释一下为什么我不能访问其他计划?特别是我希望能够使用NSLinguisticTagSchemeLexicalClasswith NSLinguisticTagger。目前,此问题导致标记器将任何单词标记为 (OtherWord),而不是其真正的词性。

任何帮助,将不胜感激..

更新

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

4

2 回答 2

6

经过不懈的研究,不眠之夜,以及三趟病房,我发现了问题所在。虽然解决办法绝对是穷人的解决方案,但它仍然有效。


出于某种原因,当我最初设置手机时,我的 iPhone 6s iOS 11.2.5 不想安装所有可用的语言方案?要么是这样,要么它决定有一天无聊时将它们删除。

无论如何,解决方案是......鼓滚......

卸载目标语言...然后重新安装。


我猜这“重置”了语言包以重新包含这些方案。快乐编码gg

于 2018-02-19T13:47:38.047 回答
2

涵盖该主题的 WWDC 演示文稿表明,并非所有方案都支持所有语言。实际上,仅以下语言支持几种方案:

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

如果您在下面的链接页面上下载幻灯片,您可以在幻灯片 136上看到此表格。

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

WWDC 2017:208 - 自然语言处理和您的应用程序

于 2018-02-19T09:59:25.507 回答