2013-03-11 62 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