Skip to main content

호환성 변경

Python 3.11 이상이 필요합니다. v1.4에서 폐기를 예고한 chosungIncludes, notallowempty, allowDoubleConsonant를 제거했습니다. 대체 이름과 옵션의 타입 변경은 마이그레이션 가이드를 확인하세요.

검색 구간과 치환 정확도

호환 자모를 조합하는 과정에서 원문 위치를 함께 추적합니다. 이전에 뒤 음절의 초성까지 포함하던 ㄱㅗㅏㄴㅏ 검색은 이제 원문의 [0, 3)을 반환합니다.
overlap=False는 원문에서 겹치는 구간을 제외합니다. NFC·NFD·호환 자모가 섞여 있어도 같은 원칙을 적용하며, Unicode 결합 문자의 정렬이 바뀌는 묶음은 하나의 원문 구간으로 보존합니다. 제한된 개수의 치환·분할은 필요한 매치까지만 읽습니다.

검색과 자모 처리 성능

  • 접두 문자열을 반복 정규화하던 검색 위치 계산을 조합 구간 추적으로 바꿨습니다.
  • 참/거짓 검색은 원문 위치 배열을 만들지 않습니다. 전역 검색 캐시는 256자 이하 문자열을 최대 256개 보관하며 긴 입력은 캐시에 저장하지 않습니다.
  • HangulIndex는 정규화한 검색 데이터를 직접 보관합니다. 데이터가 전역 캐시의 크기를 넘더라도 매 검색마다 전체 문자열을 다시 분해하지 않습니다.
  • 인덱스의 정확한 부분 문자열 검색과 min_score=1은 불필요한 편집 거리 계산을 생략합니다. limit이 있으면 전체 정렬 대신 필요한 상위 결과만 선택합니다.
  • 자모 분해는 실제로 사용한 현대 한글 음절의 변환을 재사용합니다. 이 테이블은 현대 한글 음절 11,172개와 겹자모 18개를 넘지 않습니다.

발음과 표기

꽃잎, 솜이불, 색연필 등 지원 어휘의 ㄴ 첨가 규칙을 발음 변환과 로마자 표기에서 공유합니다. 금요일의 로마자 표기에 불필요하게 들어가던 n을 제거했습니다. 임의의 형태소 경계를 모두 분석하는 기능은 아닙니다. standardize_pronunciation에 호출별 lexicon 옵션을 추가했습니다. 정규화한 연속 한글 구간과 정확히 일치하는 항목의 최종 발음을 지정할 수 있습니다. explain=False에서는 단계별 설명 문자열을 생성하지 않습니다.

단어 결합과 큰 수

jarip_noun의 진열·분열·기념·사례·요령 결과를 수정했습니다. 이 함수의 범위는 지원하는 접미 한자음의 결합 규칙이며 의미를 추론하는 사전은 아닙니다. hangul_to_number("일구")는 이제 10**32를 복원합니다. 십구는 기본적으로 19이며 큰 단위 구를 의도하면 large_unit_gu=True를 지정하세요. 숫자 9와 큰 단위 구의 표기가 같아 모든 입력을 자동으로 구분할 수는 없습니다. 큰 수의 중의성에 자세히 설명했습니다.

재현 가능한 비교 벤치마크

비교 브랜치의 Python·JavaScript 벤치마크를 통합했습니다. 측정 구간 밖에서 전체 출력의 SHA-256을 비교하고, 출력이나 처리 단위가 다른 항목은 순위에서 제외합니다. 원시 측정값과 실행 환경을 결과에 함께 기록합니다. python -m benchmarks.scaling은 문자열 길이·Unicode 표현·반복 입력·검색 실패· 인덱스 크기와 점수 기준을 바꾸어 측정합니다. 속도는 입력과 실행 환경에 따라 달라지며, 다른 라이브러리와 출력이 같다는 사실만으로 언어학적 정확도를 보장하지는 않습니다. 실행 방법은 저장소의 benchmarks/README.md를 확인하세요.