Skip to main content

Add your description here

Project description

hangeul

파이썬 환경에서 한글을 다루기 위한 현대적인 툴킷입니다.

기존의 파이썬용 한글 라이브러리들은 최신 개발 환경(Type Hinting, Python 3.10+ 등)에 최적화되어 있지 않거나 기능이 파편화되어 있었습니다. hangeul은 조합/분해 오토마타를 기반으로 실무에서 즉시 사용 가능한 강력한 기능들을 통합하여 제공합니다.


핵심 강점

  • 조사(Josa) 처리: 단순히 받침 유무만 체크하지 않고 영문 약어(SDK, IBM 등)의 발음과 숫자(7, 8 등)의 종성 발음을 인식하여 조사를 선택합니다.
  • 자소 단위 유사도 매칭: 단어 단위가 아닌 초/중/종성 단위의 편집 거리(Levenshtein Distance)를 계산하여 오타 교정에 최적화된 유사도 점수를 제공합니다.
  • 오토마타 기반 조합/분해: 연음 법칙을 고려한 조합 로직을 통해 ㄱㅏㅂㅅㅇㅣ값이로 정확히 조립합니다.
  • Zero Dependency: 외부 라이브러리 의존성 없이 파이썬 표준 라이브러리만으로 동작합니다.
  • Modern Development: 전 기능에 대한 타입 힌팅을 지원하며, uv 및 최신 파이썬 환경에 최적화되어 있습니다.

주요 기능 및 예제

1. 조사 결합

단순 문자열 비교가 아닌 발음 기반의 처리를 수행합니다.

import hangeul as han

# 영문 약어 발음 인식
han.attach("SDK", "은/는")  # "SDK는" (에스디케이 - 받침 없음)
han.attach("IBM", "이/가")  # "IBM이" (아이비엠 - ㅁ받침)

# 숫자 종성 인식
han.attach("7", "으로/로")  # "7로" (칠 - ㄹ받침 예외)
han.attach("10", "을/를")  # "10을" (십 - ㅂ받침)

# 괄호 제거 후 판별
han.attach("애플(Apple)", "이/가")  # "애플(Apple)이"

2. 조합 및 분해 (Assemble / Disassemble)

한국어 음운 규칙을 따르는 조립과 완전 분해를 지원합니다.

# 조합 (연음 법칙 적용)
han.assemble("ㄱㅏㅂㅅㅇㅣ")  # "값이"

# 분해 (겹받침/복합모음 완전 분리)
han.disassemble("값")  # "ㄱㅏㅂㅅ"
han.disassemble("과")  # "ㄱㅗㅏ"

3. 유사도 분석 및 검색

오타에 강한 검색 기능을 구현할 때 유용합니다.

# 자소 단위 유사도 (0.0 ~ 1.0)
# '값'과 '갑'은 글자 단위에선 0점이지만 자소 단위에선 0.75점입니다.
han.similarity("값", "갑")  # 0.75

# 초성 검색 및 부분 일치
han.matches("서강대학교", "ㅅㄱㄷ")  # True
han.matches("한글", "ㅎㅏㄴ")  # True

4. 숫자 한글 변환

숫자 단위를 분석하여 관습적인 한글 읽기 방식으로 변환합니다.

han.num2han(1234567)  # "백이십삼만사천오백육십칠"
han.num2han(10000)    # "만" (일만 -> 만 축약 적용)

설치

pip install hangeul
# or
uv add hangeul

환경

  • Python 3.10 이상 권장
  • 의존성 없음 (Standard Library Only)

기여 및 문의

버그 리포트나 기능 제안은 이슈 트래커를 이용해 주세요. High Cohesion, Low Coupling 원칙을 준수하며 관리됩니다.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hangeul-0.1.1.tar.gz (20.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hangeul-0.1.1-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

Details for the file hangeul-0.1.1.tar.gz.

File metadata

  • Download URL: hangeul-0.1.1.tar.gz
  • Upload date:
  • Size: 20.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for hangeul-0.1.1.tar.gz
Algorithm Hash digest
SHA256 41af29b0789edd78e62a69316382f32eba65a683eefa9a72f434f09134997386
MD5 3888de1ccec1b0fbaf4060729eb1484a
BLAKE2b-256 736f3731dec3c8162eebb258726db3fd8283b0f0895907957972280966c1b0dc

See more details on using hashes here.

File details

Details for the file hangeul-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: hangeul-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for hangeul-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bdc16f3789ee13f3b2f64dfb79117c4c02012163801a74f776aa7e95b6d71d74
MD5 61a8db1e7da92b4989e5fa72fbd5d3b3
BLAKE2b-256 356b72e7ebb822086b04e2e713dd91c625e3b31404406aed0dec805c90d9363a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page