es-hangul 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. es_hangul-0.1.0/.gitignore +14 -0
  2. es_hangul-0.1.0/PKG-INFO +191 -0
  3. es_hangul-0.1.0/README.md +166 -0
  4. es_hangul-0.1.0/docs/api/core.md +405 -0
  5. es_hangul-0.1.0/docs/api/keyboard.md +134 -0
  6. es_hangul-0.1.0/docs/api/number.md +243 -0
  7. es_hangul-0.1.0/docs/api/pronunciation.md +216 -0
  8. es_hangul-0.1.0/docs/index.md +40 -0
  9. es_hangul-0.1.0/pyproject.toml +42 -0
  10. es_hangul-0.1.0/src/es_hangul/__init__.py +58 -0
  11. es_hangul-0.1.0/src/es_hangul/_internal/__init__.py +17 -0
  12. es_hangul-0.1.0/src/es_hangul/_internal/constants.py +119 -0
  13. es_hangul-0.1.0/src/es_hangul/_internal/hangul.py +120 -0
  14. es_hangul-0.1.0/src/es_hangul/_internal/utils.py +36 -0
  15. es_hangul-0.1.0/src/es_hangul/core/__init__.py +33 -0
  16. es_hangul-0.1.0/src/es_hangul/core/assemble.py +12 -0
  17. es_hangul-0.1.0/src/es_hangul/core/can_be_choseong.py +8 -0
  18. es_hangul-0.1.0/src/es_hangul/core/can_be_jongseong.py +8 -0
  19. es_hangul-0.1.0/src/es_hangul/core/can_be_jungseong.py +14 -0
  20. es_hangul-0.1.0/src/es_hangul/core/combine_character.py +33 -0
  21. es_hangul-0.1.0/src/es_hangul/core/combine_vowels.py +12 -0
  22. es_hangul-0.1.0/src/es_hangul/core/disassemble.py +8 -0
  23. es_hangul-0.1.0/src/es_hangul/core/disassemble_complete_character.py +40 -0
  24. es_hangul-0.1.0/src/es_hangul/core/disassemble_to_groups.py +35 -0
  25. es_hangul-0.1.0/src/es_hangul/core/get_choseong.py +32 -0
  26. es_hangul-0.1.0/src/es_hangul/core/has_batchim.py +32 -0
  27. es_hangul-0.1.0/src/es_hangul/core/josa.py +65 -0
  28. es_hangul-0.1.0/src/es_hangul/core/remove_last_character.py +39 -0
  29. es_hangul-0.1.0/src/es_hangul/keyboard/__init__.py +11 -0
  30. es_hangul-0.1.0/src/es_hangul/keyboard/convert_hangul_to_qwerty.py +23 -0
  31. es_hangul-0.1.0/src/es_hangul/keyboard/convert_qwerty_to_alphabet.py +19 -0
  32. es_hangul-0.1.0/src/es_hangul/keyboard/convert_qwerty_to_hangul.py +11 -0
  33. es_hangul-0.1.0/src/es_hangul/number/__init__.py +17 -0
  34. es_hangul-0.1.0/src/es_hangul/number/amount_to_hangul.py +62 -0
  35. es_hangul-0.1.0/src/es_hangul/number/days.py +41 -0
  36. es_hangul-0.1.0/src/es_hangul/number/number_to_hangul.py +72 -0
  37. es_hangul-0.1.0/src/es_hangul/number/number_to_hangul_mixed.py +50 -0
  38. es_hangul-0.1.0/src/es_hangul/number/seosusa.py +41 -0
  39. es_hangul-0.1.0/src/es_hangul/number/susa.py +62 -0
  40. es_hangul-0.1.0/src/es_hangul/pronunciation/__init__.py +9 -0
  41. es_hangul-0.1.0/src/es_hangul/pronunciation/constants.py +113 -0
  42. es_hangul-0.1.0/src/es_hangul/pronunciation/exception_words.py +13 -0
  43. es_hangul-0.1.0/src/es_hangul/pronunciation/romanize.py +134 -0
  44. es_hangul-0.1.0/src/es_hangul/pronunciation/rules/__init__.py +41 -0
  45. es_hangul-0.1.0/src/es_hangul/pronunciation/rules/transform_12th.py +128 -0
  46. es_hangul-0.1.0/src/es_hangul/pronunciation/rules/transform_13_14th.py +88 -0
  47. es_hangul-0.1.0/src/es_hangul/pronunciation/rules/transform_16th.py +75 -0
  48. es_hangul-0.1.0/src/es_hangul/pronunciation/rules/transform_17th.py +60 -0
  49. es_hangul-0.1.0/src/es_hangul/pronunciation/rules/transform_18th.py +38 -0
  50. es_hangul-0.1.0/src/es_hangul/pronunciation/rules/transform_19th.py +25 -0
  51. es_hangul-0.1.0/src/es_hangul/pronunciation/rules/transform_20th.py +46 -0
  52. es_hangul-0.1.0/src/es_hangul/pronunciation/rules/transform_9_10_11th.py +36 -0
  53. es_hangul-0.1.0/src/es_hangul/pronunciation/rules/transform_hard_conversion.py +40 -0
  54. es_hangul-0.1.0/src/es_hangul/pronunciation/rules/transform_nl_assimilation.py +76 -0
  55. es_hangul-0.1.0/src/es_hangul/pronunciation/rules/types.py +60 -0
  56. es_hangul-0.1.0/src/es_hangul/pronunciation/rules/utils.py +8 -0
  57. es_hangul-0.1.0/src/es_hangul/pronunciation/standardize_pronunciation.py +219 -0
  58. es_hangul-0.1.0/tests/__init__.py +0 -0
  59. es_hangul-0.1.0/tests/_internal/__init__.py +0 -0
  60. es_hangul-0.1.0/tests/_internal/test_constants.py +102 -0
  61. es_hangul-0.1.0/tests/_internal/test_utils.py +71 -0
  62. es_hangul-0.1.0/tests/core/__init__.py +0 -0
  63. es_hangul-0.1.0/tests/core/test_assemble.py +12 -0
  64. es_hangul-0.1.0/tests/core/test_can_be_choseong.py +21 -0
  65. es_hangul-0.1.0/tests/core/test_can_be_jongseong.py +24 -0
  66. es_hangul-0.1.0/tests/core/test_can_be_jungseong.py +21 -0
  67. es_hangul-0.1.0/tests/core/test_combine_character.py +30 -0
  68. es_hangul-0.1.0/tests/core/test_combine_vowels.py +16 -0
  69. es_hangul-0.1.0/tests/core/test_disassemble.py +18 -0
  70. es_hangul-0.1.0/tests/core/test_disassemble_complete_character.py +31 -0
  71. es_hangul-0.1.0/tests/core/test_disassemble_to_groups.py +30 -0
  72. es_hangul-0.1.0/tests/core/test_get_choseong.py +18 -0
  73. es_hangul-0.1.0/tests/core/test_has_batchim.py +67 -0
  74. es_hangul-0.1.0/tests/core/test_josa.py +170 -0
  75. es_hangul-0.1.0/tests/core/test_remove_last_character.py +36 -0
  76. es_hangul-0.1.0/tests/keyboard/__init__.py +0 -0
  77. es_hangul-0.1.0/tests/keyboard/test_convert_hangul_to_qwerty.py +26 -0
  78. es_hangul-0.1.0/tests/keyboard/test_convert_qwerty_to_alphabet.py +25 -0
  79. es_hangul-0.1.0/tests/keyboard/test_convert_qwerty_to_hangul.py +24 -0
  80. es_hangul-0.1.0/tests/number/__init__.py +0 -0
  81. es_hangul-0.1.0/tests/number/test_amount_to_hangul.py +37 -0
  82. es_hangul-0.1.0/tests/number/test_days.py +22 -0
  83. es_hangul-0.1.0/tests/number/test_number_to_hangul.py +48 -0
  84. es_hangul-0.1.0/tests/number/test_number_to_hangul_mixed.py +39 -0
  85. es_hangul-0.1.0/tests/number/test_seosusa.py +25 -0
  86. es_hangul-0.1.0/tests/number/test_susa.py +42 -0
  87. es_hangul-0.1.0/tests/pronunciation/__init__.py +0 -0
  88. es_hangul-0.1.0/tests/pronunciation/test_romanize.py +55 -0
  89. es_hangul-0.1.0/tests/pronunciation/test_standardize_pronunciation.py +119 -0
@@ -0,0 +1,14 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *$py.class
4
+ *.egg-info/
5
+ dist/
6
+ build/
7
+ .eggs/
8
+ *.egg
9
+ .pytest_cache/
10
+ .coverage
11
+ htmlcov/
12
+ .venv/
13
+ venv/
14
+ .env
@@ -0,0 +1,191 @@
1
+ Metadata-Version: 2.4
2
+ Name: es-hangul
3
+ Version: 0.1.0
4
+ Summary: Python port of es-hangul: Korean Hangul processing library
5
+ Project-URL: Homepage, https://github.com/dogbull/es-hangul
6
+ Project-URL: Repository, https://github.com/dogbull/es-hangul
7
+ Project-URL: Original (TypeScript), https://github.com/toss/es-hangul
8
+ License-Expression: MIT
9
+ Keywords: assemble,disassemble,hangul,josa,korean,pronunciation,romanize
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Natural Language :: Korean
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Text Processing :: Linguistic
20
+ Requires-Python: >=3.10
21
+ Provides-Extra: dev
22
+ Requires-Dist: pytest-cov>=5.0; extra == 'dev'
23
+ Requires-Dist: pytest>=8.0; extra == 'dev'
24
+ Description-Content-Type: text/markdown
25
+
26
+ # es-hangul-py
27
+
28
+ 한국어 한글 처리 Python 라이브러리.
29
+
30
+ ## 원본
31
+
32
+ 이 라이브러리는 **[es-hangul](https://github.com/toss/es-hangul)** (TypeScript)을 Python으로 포팅한 것입니다.
33
+
34
+ - 원본 저장소: https://github.com/toss/es-hangul
35
+ - 원본 문서: https://es-hangul.slash.page/
36
+ - 원본 라이선스: MIT
37
+ - 원본 언어: TypeScript
38
+ - 포팅 언어: Python 3.10+
39
+
40
+ es-hangul은 [Toss](https://toss.im)에서 개발한 오픈소스 한글 처리 라이브러리로,
41
+ 한글 분해/조합, 조사 선택, 숫자 변환, 발음 변환, 키보드 변환 등의 기능을 제공합니다.
42
+ 이 패키지는 동일한 기능을 Python 환경에서 사용할 수 있도록 구현했습니다.
43
+
44
+ ## 설치
45
+
46
+ ```bash
47
+ pip install es-hangul
48
+ ```
49
+
50
+ ## 기능 목록
51
+
52
+ | 분류 | 함수 | 설명 |
53
+ |------|------|------|
54
+ | 핵심 | `disassemble` | 한글 문자열 분해 |
55
+ | 핵심 | `disassemble_complete_character` | 완성형 한글 낱자 분해 |
56
+ | 핵심 | `disassemble_to_groups` | 어절 단위로 분해 |
57
+ | 핵심 | `assemble` | 자모 조합 |
58
+ | 핵심 | `combine_character` | 초성/중성/종성으로 완성자 조합 |
59
+ | 핵심 | `combine_vowels` | 모음 조합 |
60
+ | 핵심 | `get_choseong` | 초성 추출 |
61
+ | 핵심 | `has_batchim` | 받침 유무 확인 |
62
+ | 핵심 | `can_be_choseong` | 초성 가능 여부 |
63
+ | 핵심 | `can_be_jungseong` | 중성 가능 여부 |
64
+ | 핵심 | `can_be_jongseong` | 종성 가능 여부 |
65
+ | 핵심 | `josa` | 조사 선택 |
66
+ | 핵심 | `remove_last_character` | 마지막 글자 제거 |
67
+ | 키보드 | `convert_qwerty_to_hangul` | 영문 → 한글 변환 |
68
+ | 키보드 | `convert_hangul_to_qwerty` | 한글 → 영문 변환 |
69
+ | 키보드 | `convert_qwerty_to_alphabet` | QWERTY → 영문자 변환 |
70
+ | 숫자 | `number_to_hangul` | 숫자 → 한글 (일억이천...) |
71
+ | 숫자 | `number_to_hangul_mixed` | 숫자 → 한글 혼합 (1억 2천...) |
72
+ | 숫자 | `amount_to_hangul` | 금액 문자열 → 한글 |
73
+ | 숫자 | `susa` | 수사 (하나, 둘, 셋...) |
74
+ | 숫자 | `seosusa` | 서수사 (첫째, 둘째...) |
75
+ | 숫자 | `days` | 날 수 한글 표현 (하루, 이틀...) |
76
+ | 발음 | `standardize_pronunciation` | 표준 발음 변환 |
77
+ | 발음 | `romanize` | 로마자 표기 변환 |
78
+
79
+ ## 사용 예시
80
+
81
+ ### 한글 분해 / 조합
82
+
83
+ ```python
84
+ from es_hangul import disassemble, assemble, combine_character
85
+
86
+ disassemble("안녕")
87
+ # => 'ㅇㅏㄴㄴㅕㅇ'
88
+
89
+ assemble(['ㅎ', 'ㅏ', 'ㄴ', 'ㄱ', 'ㅡ', 'ㄹ'])
90
+ # => '한글'
91
+
92
+ combine_character('ㅎ', 'ㅏ', 'ㄴ')
93
+ # => '한'
94
+ ```
95
+
96
+ ### 초성 추출
97
+
98
+ ```python
99
+ from es_hangul import get_choseong
100
+
101
+ get_choseong("안녕하세요")
102
+ # => 'ㅇㄴㅎㅅㅇ'
103
+
104
+ get_choseong("띄어 쓰기")
105
+ # => 'ㄷ ㅆㄱ'
106
+ ```
107
+
108
+ ### 받침 확인
109
+
110
+ ```python
111
+ from es_hangul import has_batchim
112
+
113
+ has_batchim("한") # => True
114
+ has_batchim("하") # => False
115
+ ```
116
+
117
+ ### 조사 선택
118
+
119
+ ```python
120
+ from es_hangul import josa
121
+
122
+ josa("사과", "을/를") # => '사과를'
123
+ josa("바나나", "을/를") # => '바나나를'
124
+ josa("닭", "을/를") # => '닭을'
125
+
126
+ # 조사만 반환
127
+ josa.pick("사과", "을/를") # => '를'
128
+ josa.pick("닭", "을/를") # => '을'
129
+ ```
130
+
131
+ 지원하는 조사 목록:
132
+ `이/가`, `을/를`, `은/는`, `으로/로`, `와/과`, `이나/나`, `이란/란`,
133
+ `아/야`, `이랑/랑`, `이에요/예요`, `으로서/로서`, `으로써/로써`,
134
+ `으로부터/로부터`, `이라/라`
135
+
136
+ ### 키보드 변환
137
+
138
+ ```python
139
+ from es_hangul import convert_qwerty_to_hangul, convert_hangul_to_qwerty
140
+
141
+ convert_qwerty_to_hangul("dkssud") # => '안녕'
142
+ convert_hangul_to_qwerty("안녕") # => 'dkssud'
143
+ ```
144
+
145
+ ### 숫자 → 한글
146
+
147
+ ```python
148
+ from es_hangul import number_to_hangul, number_to_hangul_mixed, susa, seosusa
149
+
150
+ number_to_hangul(1234) # => '천이백삼십사'
151
+ number_to_hangul_mixed(1234) # => '1천2백3십4'
152
+
153
+ susa(3) # => '셋'
154
+ susa(3, True) # => '세' (수관형사: "세 마리")
155
+
156
+ seosusa(1) # => '첫째'
157
+ seosusa(3) # => '셋째'
158
+ ```
159
+
160
+ ### 표준 발음 / 로마자 표기
161
+
162
+ ```python
163
+ from es_hangul import standardize_pronunciation, romanize
164
+
165
+ standardize_pronunciation("닭볶음") # => '닥뽁끔'
166
+ standardize_pronunciation("먹는") # => '멍는'
167
+
168
+ romanize("안녕하세요") # => 'annyeonghaseyo'
169
+ romanize("백마") # => 'baengma'
170
+ romanize("신라") # => 'silla'
171
+ ```
172
+
173
+ ## 개발
174
+
175
+ ```bash
176
+ # 의존성 설치
177
+ pip install -e ".[dev]"
178
+
179
+ # 테스트 실행
180
+ pytest
181
+
182
+ # 커버리지 포함
183
+ pytest --cov=es_hangul
184
+ ```
185
+
186
+ ## 라이선스
187
+
188
+ MIT
189
+
190
+ 원본 es-hangul의 라이선스를 따릅니다.
191
+ 원본 저작권: [Toss](https://github.com/toss) and es-hangul contributors
@@ -0,0 +1,166 @@
1
+ # es-hangul-py
2
+
3
+ 한국어 한글 처리 Python 라이브러리.
4
+
5
+ ## 원본
6
+
7
+ 이 라이브러리는 **[es-hangul](https://github.com/toss/es-hangul)** (TypeScript)을 Python으로 포팅한 것입니다.
8
+
9
+ - 원본 저장소: https://github.com/toss/es-hangul
10
+ - 원본 문서: https://es-hangul.slash.page/
11
+ - 원본 라이선스: MIT
12
+ - 원본 언어: TypeScript
13
+ - 포팅 언어: Python 3.10+
14
+
15
+ es-hangul은 [Toss](https://toss.im)에서 개발한 오픈소스 한글 처리 라이브러리로,
16
+ 한글 분해/조합, 조사 선택, 숫자 변환, 발음 변환, 키보드 변환 등의 기능을 제공합니다.
17
+ 이 패키지는 동일한 기능을 Python 환경에서 사용할 수 있도록 구현했습니다.
18
+
19
+ ## 설치
20
+
21
+ ```bash
22
+ pip install es-hangul
23
+ ```
24
+
25
+ ## 기능 목록
26
+
27
+ | 분류 | 함수 | 설명 |
28
+ |------|------|------|
29
+ | 핵심 | `disassemble` | 한글 문자열 분해 |
30
+ | 핵심 | `disassemble_complete_character` | 완성형 한글 낱자 분해 |
31
+ | 핵심 | `disassemble_to_groups` | 어절 단위로 분해 |
32
+ | 핵심 | `assemble` | 자모 조합 |
33
+ | 핵심 | `combine_character` | 초성/중성/종성으로 완성자 조합 |
34
+ | 핵심 | `combine_vowels` | 모음 조합 |
35
+ | 핵심 | `get_choseong` | 초성 추출 |
36
+ | 핵심 | `has_batchim` | 받침 유무 확인 |
37
+ | 핵심 | `can_be_choseong` | 초성 가능 여부 |
38
+ | 핵심 | `can_be_jungseong` | 중성 가능 여부 |
39
+ | 핵심 | `can_be_jongseong` | 종성 가능 여부 |
40
+ | 핵심 | `josa` | 조사 선택 |
41
+ | 핵심 | `remove_last_character` | 마지막 글자 제거 |
42
+ | 키보드 | `convert_qwerty_to_hangul` | 영문 → 한글 변환 |
43
+ | 키보드 | `convert_hangul_to_qwerty` | 한글 → 영문 변환 |
44
+ | 키보드 | `convert_qwerty_to_alphabet` | QWERTY → 영문자 변환 |
45
+ | 숫자 | `number_to_hangul` | 숫자 → 한글 (일억이천...) |
46
+ | 숫자 | `number_to_hangul_mixed` | 숫자 → 한글 혼합 (1억 2천...) |
47
+ | 숫자 | `amount_to_hangul` | 금액 문자열 → 한글 |
48
+ | 숫자 | `susa` | 수사 (하나, 둘, 셋...) |
49
+ | 숫자 | `seosusa` | 서수사 (첫째, 둘째...) |
50
+ | 숫자 | `days` | 날 수 한글 표현 (하루, 이틀...) |
51
+ | 발음 | `standardize_pronunciation` | 표준 발음 변환 |
52
+ | 발음 | `romanize` | 로마자 표기 변환 |
53
+
54
+ ## 사용 예시
55
+
56
+ ### 한글 분해 / 조합
57
+
58
+ ```python
59
+ from es_hangul import disassemble, assemble, combine_character
60
+
61
+ disassemble("안녕")
62
+ # => 'ㅇㅏㄴㄴㅕㅇ'
63
+
64
+ assemble(['ㅎ', 'ㅏ', 'ㄴ', 'ㄱ', 'ㅡ', 'ㄹ'])
65
+ # => '한글'
66
+
67
+ combine_character('ㅎ', 'ㅏ', 'ㄴ')
68
+ # => '한'
69
+ ```
70
+
71
+ ### 초성 추출
72
+
73
+ ```python
74
+ from es_hangul import get_choseong
75
+
76
+ get_choseong("안녕하세요")
77
+ # => 'ㅇㄴㅎㅅㅇ'
78
+
79
+ get_choseong("띄어 쓰기")
80
+ # => 'ㄷ ㅆㄱ'
81
+ ```
82
+
83
+ ### 받침 확인
84
+
85
+ ```python
86
+ from es_hangul import has_batchim
87
+
88
+ has_batchim("한") # => True
89
+ has_batchim("하") # => False
90
+ ```
91
+
92
+ ### 조사 선택
93
+
94
+ ```python
95
+ from es_hangul import josa
96
+
97
+ josa("사과", "을/를") # => '사과를'
98
+ josa("바나나", "을/를") # => '바나나를'
99
+ josa("닭", "을/를") # => '닭을'
100
+
101
+ # 조사만 반환
102
+ josa.pick("사과", "을/를") # => '를'
103
+ josa.pick("닭", "을/를") # => '을'
104
+ ```
105
+
106
+ 지원하는 조사 목록:
107
+ `이/가`, `을/를`, `은/는`, `으로/로`, `와/과`, `이나/나`, `이란/란`,
108
+ `아/야`, `이랑/랑`, `이에요/예요`, `으로서/로서`, `으로써/로써`,
109
+ `으로부터/로부터`, `이라/라`
110
+
111
+ ### 키보드 변환
112
+
113
+ ```python
114
+ from es_hangul import convert_qwerty_to_hangul, convert_hangul_to_qwerty
115
+
116
+ convert_qwerty_to_hangul("dkssud") # => '안녕'
117
+ convert_hangul_to_qwerty("안녕") # => 'dkssud'
118
+ ```
119
+
120
+ ### 숫자 → 한글
121
+
122
+ ```python
123
+ from es_hangul import number_to_hangul, number_to_hangul_mixed, susa, seosusa
124
+
125
+ number_to_hangul(1234) # => '천이백삼십사'
126
+ number_to_hangul_mixed(1234) # => '1천2백3십4'
127
+
128
+ susa(3) # => '셋'
129
+ susa(3, True) # => '세' (수관형사: "세 마리")
130
+
131
+ seosusa(1) # => '첫째'
132
+ seosusa(3) # => '셋째'
133
+ ```
134
+
135
+ ### 표준 발음 / 로마자 표기
136
+
137
+ ```python
138
+ from es_hangul import standardize_pronunciation, romanize
139
+
140
+ standardize_pronunciation("닭볶음") # => '닥뽁끔'
141
+ standardize_pronunciation("먹는") # => '멍는'
142
+
143
+ romanize("안녕하세요") # => 'annyeonghaseyo'
144
+ romanize("백마") # => 'baengma'
145
+ romanize("신라") # => 'silla'
146
+ ```
147
+
148
+ ## 개발
149
+
150
+ ```bash
151
+ # 의존성 설치
152
+ pip install -e ".[dev]"
153
+
154
+ # 테스트 실행
155
+ pytest
156
+
157
+ # 커버리지 포함
158
+ pytest --cov=es_hangul
159
+ ```
160
+
161
+ ## 라이선스
162
+
163
+ MIT
164
+
165
+ 원본 es-hangul의 라이선스를 따릅니다.
166
+ 원본 저작권: [Toss](https://github.com/toss) and es-hangul contributors