Cocoa의 String Processing의 한글에 대한 지원 부족?

카테고리 없음 2010. 10. 22. 16:20
WWDC2010의 비디오 중에 재미있는 것이 있더군요...솔직히 재밌다기 보다 지금 급히 작업하는 것에서 필요한 것이라서 다시 살펴보다가 테스트를 해 보게 되었습니다...


	NSString *hangle = @"나는 지금 무엇을 하고 있는 것일까? 子供たちが作ったDoodle。グランプリをみんなで選ぼう。古代書面汉语称为文言文,现代书面汉语一般指現代標準漢語。現代漢語方言眾多,某些方言的口語之間差異較大,而書面語相對統一。";
	[hangle enumerateSubstringsInRange:NSMakeRange(0, [hangle length]) options:NSStringEnumerationByWords usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
		NSLog(@"%@ (%d, %d)", substring, substringRange.location, substringRange.length);	
	}];
일본어 구문은 구글에서, 중국어 구문은 위키피디아의 중국어에 대한 중국어 해설에서 긁어다 붙인 것입니다. 

이전에 단어끼리 자르는 것은 상당히 고민을 했던 부분인데(다국어 지원에서 단어단위로 잘라야 하는데, 간단히 생각하면 공백에서 자르거나 할 수 있으나, 기본적으로 일본어나 중국어는 공백을 안쓴다는 문제점이...) 이번에 이런 간단한 방법이 있다는 것을 이제야 알고 테스트를 해 봤습니다.

기대를 가지고 결과를...
그 결과는...

2010-10-22 20:05:42.005 QBookExtendedLayoutTool[1038:a0f] 나는 (0, 2)

2010-10-22 20:05:42.006 QBookExtendedLayoutTool[1038:a0f] 지금 (3, 2)

2010-10-22 20:05:42.007 QBookExtendedLayoutTool[1038:a0f] 무엇을 (6, 3)

2010-10-22 20:05:42.007 QBookExtendedLayoutTool[1038:a0f] 하고 (10, 2)

2010-10-22 20:05:42.008 QBookExtendedLayoutTool[1038:a0f] 있는 (13, 2)

2010-10-22 20:05:42.011 QBookExtendedLayoutTool[1038:a0f] 것일까 (16, 3)

2010-10-22 20:05:42.012 QBookExtendedLayoutTool[1038:a0f] 子供 (21, 2)

2010-10-22 20:05:42.013 QBookExtendedLayoutTool[1038:a0f] たち (23, 2)

2010-10-22 20:05:42.014 QBookExtendedLayoutTool[1038:a0f] (25, 1)

2010-10-22 20:05:42.014 QBookExtendedLayoutTool[1038:a0f] 作っ (26, 2)

2010-10-22 20:05:42.015 QBookExtendedLayoutTool[1038:a0f] (28, 1)

2010-10-22 20:05:42.016 QBookExtendedLayoutTool[1038:a0f] Doodle (29, 6)

2010-10-22 20:05:42.016 QBookExtendedLayoutTool[1038:a0f] グランプリ (36, 5)

2010-10-22 20:05:42.017 QBookExtendedLayoutTool[1038:a0f] (41, 1)

2010-10-22 20:05:42.018 QBookExtendedLayoutTool[1038:a0f] みんな (42, 3)

2010-10-22 20:05:42.019 QBookExtendedLayoutTool[1038:a0f] (45, 1)

2010-10-22 20:05:42.020 QBookExtendedLayoutTool[1038:a0f] 選ぼ (46, 2)

2010-10-22 20:05:42.020 QBookExtendedLayoutTool[1038:a0f] (48, 1)

2010-10-22 20:05:42.022 QBookExtendedLayoutTool[1038:a0f] 古代 (50, 2)

2010-10-22 20:05:42.022 QBookExtendedLayoutTool[1038:a0f] 書面 (52, 2)

2010-10-22 20:05:42.023 QBookExtendedLayoutTool[1038:a0f] (54, 1)

2010-10-22 20:05:42.024 QBookExtendedLayoutTool[1038:a0f] 语称 (55, 2)

2010-10-22 20:05:42.024 QBookExtendedLayoutTool[1038:a0f] (57, 1)

2010-10-22 20:05:42.025 QBookExtendedLayoutTool[1038:a0f] 文言 (58, 2)

2010-10-22 20:05:42.026 QBookExtendedLayoutTool[1038:a0f] (60, 1)

2010-10-22 20:05:42.026 QBookExtendedLayoutTool[1038:a0f] 现代 (62, 2)

2010-10-22 20:05:42.028 QBookExtendedLayoutTool[1038:a0f] 书面 (64, 2)

2010-10-22 20:05:42.051 QBookExtendedLayoutTool[1038:a0f] 汉语 (66, 2)

2010-10-22 20:05:42.053 QBookExtendedLayoutTool[1038:a0f] 一般 (68, 2)

2010-10-22 20:05:42.055 QBookExtendedLayoutTool[1038:a0f] (70, 1)

2010-10-22 20:05:42.056 QBookExtendedLayoutTool[1038:a0f] 現代 (71, 2)

2010-10-22 20:05:42.056 QBookExtendedLayoutTool[1038:a0f] 標準 (73, 2)

2010-10-22 20:05:42.057 QBookExtendedLayoutTool[1038:a0f] 漢語 (75, 2)

2010-10-22 20:05:42.058 QBookExtendedLayoutTool[1038:a0f] 現代 (78, 2)

2010-10-22 20:05:42.058 QBookExtendedLayoutTool[1038:a0f] 漢語 (80, 2)

2010-10-22 20:05:42.062 QBookExtendedLayoutTool[1038:a0f] 方言 (82, 2)

2010-10-22 20:05:42.063 QBookExtendedLayoutTool[1038:a0f] 眾多 (84, 2)

2010-10-22 20:05:42.064 QBookExtendedLayoutTool[1038:a0f] (87, 1)

2010-10-22 20:05:42.065 QBookExtendedLayoutTool[1038:a0f] (88, 1)

2010-10-22 20:05:42.065 QBookExtendedLayoutTool[1038:a0f] 方言 (89, 2)

2010-10-22 20:05:42.066 QBookExtendedLayoutTool[1038:a0f] (91, 1)

2010-10-22 20:05:42.067 QBookExtendedLayoutTool[1038:a0f] 口語 (92, 2)

2010-10-22 20:05:42.067 QBookExtendedLayoutTool[1038:a0f] (94, 1)

2010-10-22 20:05:42.068 QBookExtendedLayoutTool[1038:a0f] (95, 1)

2010-10-22 20:05:42.068 QBookExtendedLayoutTool[1038:a0f] 差異 (96, 2)

2010-10-22 20:05:42.069 QBookExtendedLayoutTool[1038:a0f] (98, 1)

2010-10-22 20:05:42.070 QBookExtendedLayoutTool[1038:a0f] (99, 1)

2010-10-22 20:05:42.071 QBookExtendedLayoutTool[1038:a0f] (101, 1)

2010-10-22 20:05:42.072 QBookExtendedLayoutTool[1038:a0f] 書面 (102, 2)

2010-10-22 20:05:42.073 QBookExtendedLayoutTool[1038:a0f] (104, 1)

2010-10-22 20:05:42.073 QBookExtendedLayoutTool[1038:a0f] (105, 1)

2010-10-22 20:05:42.074 QBookExtendedLayoutTool[1038:a0f] (106, 1)

2010-10-22 20:05:42.074 QBookExtendedLayoutTool[1038:a0f] 統一 (107, 2)


결과는 이렇게 나오네요.
프로그램 이름은 지금 작업중인 무언가이고...

일단 척 보니 일본어/중국어는 꽤 제대로 구문에 따라, 의미에 따라 단어를 잘 쪼개는 것으로 보입니다. 그러나 문제는 한국어...한국어는 그냥 공백에서 잘랐군요. 일본어는 조사에 해당하는 것을 단어로 취급하고 있는데( (41, 1))...추측컨대, 일단 해당 언어의 사전을 가지고 있다가그 사전을 가지고 매칭 테스트를 하는 것으로 여겨집니다. 그러나...한국어는?

역시 한국어는 상당히 다루기가 까다로운 부분이 있는 것 같군요. 하기야 일본어나 중국어처럼 사전적인 매칭으로 단어를 구별해 내는 것이 한국어에는 그다지 통하지 않을것으로 생각되니까, 그리고 공백 문자가 지원되는 언어니까...그냥 저렇게 영어처럼 처리한 것으로 느껴집니다.

그래서 회사에서 이번에 한국어 지원하지! 하면 좀 빡빡할 듯...제가 한국인이라서 회사에서도 한국어는 쉽게 될것이라 생각할지도 모르지만...

아무튼 한국어와 아랍어(와 히브리어)가 역시 고난도인듯(아랍어는 또한 글자들끼리 접착되어 다른 Glyph를 보여줘야 하는 Ligature가 반드시 지원되어야 하기에 상당히 골때릴 것으로 예상되네요. 회사의 제품이 단어는 물론 글자 단위로 쪼개서 애니메이션을 하거나 하는 것이 포인트라서 말이죠)...
Posted by 타이가장관
,