모바일 환경을 위한 초경량 형태소 분석기 개발기: C++ 선택, LOUDS, 비트 연산 최적화!

by DD
5개월 전
조회수 14

모바일 환경 제약 조건 하에 C++을 선택하여 경량 형태소 분석기를 개발함

LOUDS 기반 Trie 압축을 통해 사전 데이터 용량을 9.4MB로 최적화함

select0 비트 연산 최적화로 형태소 분석 속도 17% 향상을 달성함

C++ 선택과 모바일 환경의 제약

모바일 환경의 바이너리 크기 제약 때문에 C++을 선택했다. Rust는 바이너리 크기가 커서 적합하지 않았다. 따라서 C++20을 사용하여 코드 표현력안정성을 높였다. 구체적으로, std::spanConcepts를 활용하여 코드 가독성을 향상시켰다.

LOUDS 기반 Trie 압축의 효과

LOUDSTrie 자료구조를 비트 시퀀스로 표현하여 메모리 사용량을 줄인다. 포인터 기반 Trie보다 압축률이 높다. 따라서 사전 데이터를 9.4MB로 압축하여 모바일 환경에 적합하게 만들었다. 한글 인코딩 최적화를 통해 사전 크기를 더욱 줄였다.

Select 비트 연산 최적화

Select0 연산 최적화를 통해 형태소 분석 속도를 향상시켰다. 비트 시퀀스를 64비트 단위로 나누고, zero_prefix_counts 배열을 사용하여 바이너리 서치를 수행했다. 결과적으로, select0 연산 시간을 줄여 전체 분석 시간을 17% 단축했다.

초경량 클래식 형태소 분석기 개발기

댓글 0

첫 번째 댓글을 남겨보세요!