한글 처리 관련 프로젝트

최근들어 새로운 프로젝트로인해 한글 처리를 주로 하는 작업을 하고 있다.
물론 지난달까지 다른 일에 매달리느라 정신 없었는데… 이제 숨좀 돌리면서 코드에 집중을 하고 있다.
역시나 서비스 관련 프로젝트가 정말 많은 리소스를 소요하는 것이라는 것을 새삼 다시 깨닫게 되었다.

요즘엔 본사 개발자와 직접적으로 일을 하고 있는데, 새로운 개발 환경과 업무 방식 그리고 코딩 룰 같은 것을 살펴보며 상당히 많은것을 배우고 있다.
게다가 코딩을 같이 하기 때문에 여러 나라의 언어 처리 코드를 참고할 경우가 많은데 코드 리딩을 하면서 이렇게 많이 배우기도 오랜만인거 같다는 생각까지 들었다. 
게다가 무슨일을 하든지 꼭 문서화로 남겨서 모든 사람들에게 공유를 하는 자세는 정말 나처럼 나중에 프로젝트에 참여하는 사람에게 많은 시행착오를 줄여주는 효과를 가져다 주는거 같다. 그리고 그것을 다시 주간 회의때 서로 다시 공유하고 말이다.
오후가 시작되는 시점에 svn checkout를 하면 거의 오후 중에 update나 checkout을 할 필요가 없다. 하긴 그 시간에 미국은 늦은 저녁일 테니 밀이다. 그리고 작업이 끝나고 테스트가 끝나면 commit을 한다. 그 시간대에 다른 개발자의 작업이 거의 없어서 코딩을 정말 자유롭고 편하게 할 수 있다. 시간대가 다르다는게 이게 좋은거 같다. ㅋ 

내가 3년전에 공부했던 여러 알고리즘들을 다시 살펴봐야 되서 3년 전의 내 코드를 프린트로 뽑아서 보는 기이한 경험도 하고 있다.
어제는 edit distance를 살펴보면서 알고리즘의 개선도 해봤다.
간단한 아이디어는 이 edit distance를 구하기 위해 2차원 행렬을 사용하는데 이 2차원 행렬의 메모리를 3행으로 제한해서 이를 이용해 값을 구하는 것이다.
사실 특정 포지션까지의 편집 거리를 구하기 위해 (i-1,j), (i-1,j-1), (i,j-1)중에서 최소값을 가지고 이어 나가는데에 힌트가 있다. 전체 행렬의 모든 포인트의 점을 기록해둘 필요가 없이 이전 위치의 편집거리들만 기억하고 있으면 되니 3행으로 행렬을 축소할 수 있다는 것이 핵심이다.
물론 이것으로 얻어지는 잇점은 메모리 사용량을 줄일 수 있다는 것뿐이 없지만 수많은 데이터를 처리하는 엔진쪽에서는 분명 잇점이 있을 것이다.

여튼 이런 저런 생각들을 많이 하게 만든 한주였다. 게다가 이전에 개인적으로 해봤던 형태소 분석기 관련 프로젝트가 상당히 도움이 많이 되고 있다.
자소 분리, 결합, 편집거리, 사운덱스 등등 ..

최근 글로벌 컴퍼니에서 일하면서 한국 개발자로서 어떠한 자세로 일해야 하는지 많은 생각을 하게 만들어주었다. 예전에는 이런 외국 개발자와 공동작업을 한번도 해본적이 없는 관계로 이는 새롭게 내가 느낀 경험들이다.
일단 이런 회사에서 큰 소리를 치려면 한국 서비스의  장사가 잘 되어야 한다. 그래야 한국인 개발자로서 더 많은 경험과 기여를 할 수 있을 거라는 생각이 든다.
왜냐면 단순히 코딩 실력만으로는 다른 나라 개발자와 차별화가 힘들것이고 한국에 대한 도메인 스페셜리스트라는 장점을 발전시킨다면 세계의 다른 개발자와 정말 차별된 작업을 할 수 있다는 것이다. 아마도 이런 도메인스페셜 리스트의 모습이 외국의 개발자들이 한국의 개발자들에게 바라는 점일지도 모르겠다.

하지만 그 도메인 스페셜 리스트라는 강점도 한국 인터넷 시장의 가치와 함께한다는 점을 생각해보면 일단 한국이 인터넷 IT강국으로서의 강점을 가지고 나아가야 될 거라는 생각을 해본다.
게다가 더욱이 야후 코리아도 잘 되어야 할 것이고 말이다.

결국 성공적인 서비스가 글로벌리 개발자의 파워도 높혀준다는 아주 중요하고 기본적인 사실을 새삼 느끼고 있는 중이다.

CC BY-NC 4.0 한글 처리 관련 프로젝트 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.