【问题标题】:Device vs. Simulator Linguistic Schemes设备与模拟器语言方案
【发布时间】:2018-07-23 22:44:55
【问题描述】:

有人了解为什么会发生这种情况吗?

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

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),而不是真正的词性。

任何帮助将不胜感激..

更新

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

【问题讨论】:

  • iPhone X 上提供了所有方案,因此某些设备可以全部访问它们。IMO 并非所有方案都适用于所有设备。模拟器可以访问它们,因为这些方案在您的计算机上可用。
  • 似乎是这样...我了解 发生了什么 - 我仍在寻找关于为什么会这样/可以做些什么的实际解释它。我很难相信他们的设备阵容中会存在这样的差异

标签: ios objective-c ios-simulator locale nslinguistictagger


【解决方案1】:

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


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

不管怎样,解决办法是……打鼓……

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


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

【讨论】:

  • 这到底是什么,苹果?
  • 你能告诉我,你究竟是如何卸载目标语言的? PS:我在所有设备上都面临与 NSLinguisticTagScheme 相同的问题。
  • 卸载设备设置中的语言(在我的情况下是英语哈哈)
【解决方案2】:

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

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

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

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

WWDC 2017:208 - Natural Language Processing and your Apps

【讨论】:

  • 我在我的 6s iOS 11.2 上用英语进行测试,它只显示了三个方案。在模拟器上,它显示了任何设备上任何 iOS 的所有方案(当然,因为我的 mac 拥有所有方案)。为什么有些设备没有它们?我不明白我能做些什么来解决这个问题......
  • 嗯,我在所有设备上都能看到它们。您是否尝试在设备上切换语言?还是你已经有英文版了?
  • 顺便说一下,我也在 iPhone 6S 上进行了测试。这让我认为它可能与配置有关。但我安装了 11.2.5。
  • 哈哈我已经有英文版了..我无法想象这与我的构建有任何关系,所以它一定是设备问题..但是我是如何在 5c iOS 10.3 上尝试的以及相同的结果......其他人也有同样的问题 - stackoverflow.com/questions/46853473/…
  • 我最后的想法 - 这是因为我试图通过扩展访问它吗?...我试图在键盘扩展中使用它来确定最后的词性用户输入的单词
猜你喜欢
  • 2010-12-11
  • 2010-09-27
  • 2010-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-14
相关资源
最近更新 更多