GoP FST 로딩 재구현 및 WFST/pynini 학습 노트

Source

  • Field Notes/ReturnZero/Daily Notes/Day 371. 2022-07-06.md

Summary

이 노트는 GoP(Grammar of Phonology?) 서비스의 FST(Finite State Transducer) 로딩 방식을 파일 기반에서 메모리 맵(fst_map) 기반의 일괄 적재 방식으로 변경하는 코드 리팩토링 과정을 기록한다. 동시성 처리(스레드 락)와 리로드 로직 구현이 핵심 과제다. 또한, 정규 언어, FSA/FST, 가중치 기계(WFSA/WFST), 세미링(Semiring) 등 이론적 배경과 pynini 라이브러리의 주요 개념(상태, 호, 가중치, 알고리즘 등)을 학습한 내용을 상세히 정리하고 있다.

Key Points

  • GoP 서비스 아키텍처 변경: fst_reader 제거 및 gopService 내 fst_map(메모리 적재) 도입
  • 동시성 고려사항: GopComputer::Context 클래스 내 리로드 함수 구현 및 스레드 락 적용 필요
  • 이론 학습: Regular Language, FSA, FST, Rational Relations, Semiring, WFSA, WFST 정의 및 구성 요소
  • pynini 라이브러리 학습: 상태/호/가중치 관리, 이터레이터 무효화 조건, VectorFst, 문자열 인코딩 방식
  • pynini 알고리즘: Concat, Closure, Union, Composition, Difference, Inversion, Reversal, Optimize, Shortest Path 등