0

语言分析框架已被弃用,甚至不支持 64 位。文档说 - 使用 CFStringTokenizer 但标记器不提供语言分析框架中可用的功能。

语言分析框架提供的词素分析 API 的替代品是什么?

编辑: 虽然 Pantong 的回复有所帮助,但并非在所有情况下都有效,例如对于具有 3-4 个汉字字符的单词,它会返回不正确的结果。(不正确的意思是它与 Lang 分析框架 API 为同一字符串返回的内容不同)。

a)现人神被转换为拉丁语 - 'gen ren shen' 和平假名 - 'げんじんしん' 而它应该是 - 拉丁语 - 'Arahitogami' 和平假名 - 'あらひとがみ'

b) 安本丹被转换为拉丁语 - 'an ben dan' 和平假名 - 'やすもとまこと' 而它应该 - 在拉丁语中 - 'Yasumoto makoto' 和平假名 - 'あんぽんたん'

4

1 回答 1

1

已弃用的词素分析 API 的一项功能是“为日文/中文文本获取 rudy 文本”。如果您要求替换该特定功能,那么以下代码就是一个示例。但是,我不知道语素分析 API 中其他功能的替换。

CFStringRef testString = CFSTR("のちに検知されたトークンの範囲用として使用");

CFStringTokenizerRef tokenizer = CFStringTokenizerCreate(kCFAllocatorDefault,
                                                         testString,
                                                         CFRangeMake(0, CFStringGetLength(testString)),
                                                         kCFStringTokenizerUnitWordBoundary,
                                                         CFLocaleCreate(kCFAllocatorDefault, CFSTR("Japanese")));
do
{
    if (CFStringTokenizerAdvanceToNextToken(tokenizer) == kCFStringTokenizerTokenNone) {
        break;
    }

    CFStringRef originalToken = CFStringCreateWithSubstring(kCFAllocatorDefault,
                                                            testString,
                                                            CFStringTokenizerGetCurrentTokenRange(tokenizer));

    // Get Latin transcription from the Japanese text
    CFMutableStringRef convertedToken = (CFMutableStringRef)CFStringTokenizerCopyCurrentTokenAttribute(tokenizer,
                                                                            kCFStringTokenizerAttributeLatinTranscription);
    NSLog(@"token: %@ -> latin: %@", originalToken, convertedToken);

    // Get kana from Latin transcription
    CFStringTransform(convertedToken, NULL, kCFStringTransformLatinHiragana, false);
    NSLog(@"token: %@ -> latin: %@", originalToken, convertedToken);
}
while (true);
于 2013-07-24T21:43:01.123 回答