2013-03-11 65 views
0

语言分析框架已过时,并且其在64位甚至没有用。文档说 - 使用CFStringTokenizer,但标记器不提供lang分析框架中可用的功能。什么是替代语言分析框架的语素分析弃用的API

那是什么郎分析框架,提供了词素分析API的更换?

编辑: 虽然潘通的答复有帮助,但它并不适用于所有情况下,例如,对于具有3-4个汉字字符的单词,它会返回不正确的结果。 (不正确的意思是它与Lang分析框架API针对相同字符串返回的不同)。

一)现人神被转换为拉丁 - '根壬申' 和在hiragana- 'げんじんしん',而它应该是 - 在拉丁 - 'Arahitogami' 和在hiragana- 'あらひとがみ'

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

+0

尝试使用仲裁处来代替。我在iOS下使用它。 – aehlke 2015-12-22 02:02:34

回答

1

One不赞成使用的语素分析API具有“获取日文/中文文本的鲁迪文本”。如果您要求替换该特定功能,那么以下代码就是一个示例。但是,我不知道替换语素分析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); 
+2

这是否提供了一个问题的答案? – dkar 2013-07-24 22:06:15

+0

查看我更新的答案。 – pantong 2013-07-31 23:25:09

+0

@dka,是的。我接受了它。 – Nitesh 2014-07-02 04:49:55