1. 대만어 정렬의 복잡성과 기존 방식의 한계
대만어(台語)는 한자와 로마자 표기(POJ/Tailo)를 병행하며, 로마자 표기에는 음절 구분을 위한 하이픈(-), 휴지를 나타내는 이중 하이픈(–), 그리고 유니코드 조합 문자로 표현되는 성조 기호가 포함됩니다. 기존에는 이를 처리하기 위해 65개 이상의 정규 표현식 패턴을 사용하는 3단계 파이프라인을 구축했으나, 코드가 깨지기 쉽고 유지보수가 매우 어려웠습니다.
2. Parslet을 활용한 파서 아키텍처 도입
발표자는 이 문제를 단순한 문자열 조작이 아닌 컴파일러 이론의 파싱 문제로 재정의하고 Ruby의 Parslet 젬을 사용하여 3단계 파서를 구현했습니다.
-
어휘 분석(Lexical Analysis): 하이픈 포함 음절, 이중 하이픈, 문장 부호 등을 토큰으로 정의했습니다.
-
구문 분석(Syntax Analysis): PEG(Parsing Expression Grammar)를 사용하여 로마자 단어의 구조적 독립성을 보장했습니다.
-
의미 분석(Semantic Analysis): AST 변환을 통해 음절 수를 계산하고 이를 한자 범위에 직접 매핑하는 안전한 정렬 방식을 채택했습니다.
3. 기술적 결과 및 성과
로마자 표기가 한자보다 구조적으로 복잡하다는 점에 착안하여 로직의 의존성을 역전시켰습니다. 그 결과 대만 교육부의 공식 말뭉치 데이터 3,000건에 대해 오류율 0%를 달성하며 시스템의 견고함을 입증했습니다.