Skip to content

Commit 4a35855

Browse files
authored
Merge pull request #215 from bab2min/dev/0_23_0
Prepare 0.23.0
2 parents 245f38e + 3f81328 commit 4a35855

18 files changed

Lines changed: 1384 additions & 272 deletions

.github/workflows/deploy.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,12 @@ jobs:
4747
/opt/python/cp311-cp311/bin/python -m pip install twine wheel numpy
4848
/opt/python/cp311-cp311/bin/python setup.py sdist
4949
/opt/python/cp311-cp311/bin/python -m twine upload dist/*.tar.gz
50-
USE_MIMALLOC=1 Py_LIMITED_API=1 /opt/python/cp311-cp311/bin/python setup.py build bdist_wheel
50+
NUM_AVAILABLE_CPU_CORES=2 USE_MIMALLOC=1 Py_LIMITED_API=1 /opt/python/cp311-cp311/bin/python setup.py build bdist_wheel
5151
auditwheel repair dist/*-linux_x86_64.whl
5252
for cp in cp314-cp314t
5353
do
5454
/opt/python/${cp}/bin/python -m pip install wheel setuptools numpy==`/opt/python/${cp}/bin/python .github/workflows/numpy_version.py`
55-
USE_MIMALLOC=1 /opt/python/${cp}/bin/python setup.py build bdist_wheel
55+
NUM_AVAILABLE_CPU_CORES=2 USE_MIMALLOC=1 /opt/python/${cp}/bin/python setup.py build bdist_wheel
5656
auditwheel repair dist/*-${cp}-linux_x86_64.whl
5757
done
5858
/opt/python/cp311-cp311/bin/python -m twine upload wheelhouse/*.whl
@@ -242,12 +242,12 @@ jobs:
242242
rm /usr/local/bin/cmake || true
243243
ln -s /opt/python/cp311-cp311/bin/cmake /usr/local/bin/cmake
244244
/opt/python/cp311-cp311/bin/pip install -U wheel setuptools numpy twine
245-
USE_MIMALLOC=1 Py_LIMITED_API=1 /opt/python/cp311-cp311/bin/python setup.py build bdist_wheel
245+
NUM_AVAILABLE_CPU_CORES=2 USE_MIMALLOC=1 Py_LIMITED_API=1 /opt/python/cp311-cp311/bin/python setup.py build bdist_wheel
246246
auditwheel repair dist/*.whl
247247
for cp in cp314-cp314t
248248
do
249249
/opt/python/${cp}/bin/pip install -U wheel setuptools numpy==`/opt/python/${cp}/bin/python .github/workflows/numpy_version.py`
250-
USE_MIMALLOC=1 /opt/python/${cp}/bin/python setup.py build bdist_wheel
250+
NUM_AVAILABLE_CPU_CORES=2 USE_MIMALLOC=1 /opt/python/${cp}/bin/python setup.py build bdist_wheel
251251
auditwheel repair dist/*-${cp}-*.whl
252252
done
253253
/opt/python/cp311-cp311/bin/twine upload wheelhouse/*.whl

.github/workflows/deploy_test.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,12 @@ jobs:
4444
/opt/python/cp311-cp311/bin/python -m pip install twine wheel numpy
4545
/opt/python/cp311-cp311/bin/python setup.py sdist
4646
/opt/python/cp311-cp311/bin/python -m twine upload --repository testpypi dist/*.tar.gz
47-
USE_MIMALLOC=1 Py_LIMITED_API=1 /opt/python/cp311-cp311/bin/python setup.py build bdist_wheel
47+
NUM_AVAILABLE_CPU_CORES=2 USE_MIMALLOC=1 Py_LIMITED_API=1 /opt/python/cp311-cp311/bin/python setup.py build bdist_wheel
4848
auditwheel repair dist/*-linux_x86_64.whl
4949
for cp in cp314-cp314t
5050
do
5151
/opt/python/${cp}/bin/python -m pip install wheel setuptools numpy==`/opt/python/${cp}/bin/python .github/workflows/numpy_version.py`
52-
USE_MIMALLOC=1 /opt/python/${cp}/bin/python setup.py build bdist_wheel
52+
NUM_AVAILABLE_CPU_CORES=2 USE_MIMALLOC=1 /opt/python/${cp}/bin/python setup.py build bdist_wheel
5353
auditwheel repair dist/*-${cp}-linux_x86_64.whl
5454
done
5555
/opt/python/cp311-cp311/bin/python -m twine upload --repository testpypi wheelhouse/*.whl
@@ -239,12 +239,12 @@ jobs:
239239
rm /usr/local/bin/cmake || true
240240
ln -s /opt/python/cp311-cp311/bin/cmake /usr/local/bin/cmake
241241
/opt/python/cp311-cp311/bin/pip install -U wheel setuptools numpy twine
242-
USE_MIMALLOC=1 Py_LIMITED_API=1 /opt/python/cp311-cp311/bin/python setup.py build bdist_wheel
242+
NUM_AVAILABLE_CPU_CORES=2 USE_MIMALLOC=1 Py_LIMITED_API=1 /opt/python/cp311-cp311/bin/python setup.py build bdist_wheel
243243
auditwheel repair dist/*.whl
244244
for cp in cp314-cp314t
245245
do
246246
/opt/python/${cp}/bin/pip install -U wheel setuptools numpy==`/opt/python/${cp}/bin/python .github/workflows/numpy_version.py`
247-
USE_MIMALLOC=1 /opt/python/${cp}/bin/python setup.py build bdist_wheel
247+
NUM_AVAILABLE_CPU_CORES=2 USE_MIMALLOC=1 /opt/python/${cp}/bin/python setup.py build bdist_wheel
248248
auditwheel repair dist/*-${cp}-*.whl
249249
done
250250
/opt/python/cp311-cp311/bin/twine upload --repository testpypi wheelhouse/*.whl

.github/workflows/pull_request_test.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
cd model
4242
/opt/python/${{ matrix.cp }}/bin/python setup.py build install
4343
cd ..
44-
/opt/python/${{ matrix.cp }}/bin/python setup.py build install
44+
NUM_AVAILABLE_CPU_CORES=2 /opt/python/${{ matrix.cp }}/bin/python setup.py build install
4545
/opt/python/${{ matrix.cp }}/bin/python -m pip install numpy==`/opt/python/${{ matrix.cp }}/bin/python .github/workflows/numpy_version.py v1` || true
4646
- name: Test kiwipiepy
4747
run: |
@@ -102,7 +102,7 @@ jobs:
102102
cd model
103103
/opt/python/cp39-cp39/bin/python setup.py bdist_wheel
104104
cd ..
105-
Py_LIMITED_API=1 /opt/python/cp39-cp39/bin/python setup.py bdist_wheel
105+
NUM_AVAILABLE_CPU_CORES=2 Py_LIMITED_API=1 /opt/python/cp39-cp39/bin/python setup.py bdist_wheel
106106
- name: Test kiwipiepy
107107
run: |
108108
/opt/python/${{ matrix.cp }}/bin/python -m pip install model/dist/*.whl
@@ -458,7 +458,7 @@ jobs:
458458
cd ..
459459
- name: Build
460460
run: |
461-
/opt/python/${{ matrix.cp }}/bin/python setup.py build install bdist_wheel
461+
NUM_AVAILABLE_CPU_CORES=2 /opt/python/${{ matrix.cp }}/bin/python setup.py build install bdist_wheel
462462
/opt/python/${{ matrix.cp }}/bin/python -m pip install numpy==`/opt/python/${{ matrix.cp }}/bin/python .github/workflows/numpy_version.py v1` || true
463463
tar -zcvf /artifacts/build.tgz build/*
464464
cp -r dist /artifacts/
@@ -522,7 +522,7 @@ jobs:
522522
cd ..
523523
- name: Build
524524
run: |
525-
Py_LIMITED_API=1 /opt/python/cp39-cp39/bin/python setup.py bdist_wheel
525+
NUM_AVAILABLE_CPU_CORES=2 Py_LIMITED_API=1 /opt/python/cp39-cp39/bin/python setup.py bdist_wheel
526526
tar -zcvf /artifacts/build.tgz build/*
527527
cp -r dist /artifacts/
528528
- name: Test

Kiwi

Submodule Kiwi updated 84 files

README.md

Lines changed: 72 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -254,9 +254,9 @@ True
254254
Token(form='', tag='XSN', start=1, len=1),
255255
Token(form='', tag='NR', start=3, len=1),
256256
Token(form='', tag='JKS', start=4, len=1),
257-
Token(form='사귀', tag='VV', start=6, len=2,
258-
Token(form='', tag='EP', start=7 len=1,
259-
Token(form='', tag='EF', start=8 len=1]
257+
Token(form='사귀', tag='VV', start=6, len=2),
258+
Token(form='', tag='EP', start=7, len=1),
259+
Token(form='', tag='EF', start=8, len=1)]
260260

261261
# v0.12.0 신기능
262262
# 0.12.0 버전부터는 형태소를 결합하여 문장으로 복원하는 기능이 추가되었습니다.
@@ -265,18 +265,17 @@ True
265265
>>> kiwi.join([('', 'NNG'), ('', 'JKS'), ('', 'VV'), ('어요', 'EF')])
266266
'흙이 묻어요'
267267

268-
# v0.13.0 신기능
269-
# 오타 교정 기능이 추가되었습니다.
268+
# 오타 교정 기능을 지원합니다.
270269
# 간단한 오타를 교정하여, 사소한 오타 때문에 전체 분석 결과가 어긋나는 문제를 해결할 수 있습니다.
271-
>>> kiwi = Kiwi(model_type='largest', typos='basic')
272-
>>> kiwi.tokenize('외않됀대?') # 오타 교정 사용 시 로딩 시간이 5~10초 정도 소요됨
270+
>>> kiwi = Kiwi()
271+
>>> kiwi.tokenize('외않됀대?', typos='basic')
273272
[Token(form='', tag='MAG', start=0, len=1),
274273
Token(form='', tag='MAG', start=1, len=1),
275274
Token(form='', tag='VV', start=2, len=1),
276275
Token(form='ᆫ대', tag='EF', start=2, len=2),
277276
Token(form='?', tag='SF', start=4, len=1)]
278277

279-
>>> kiwi.tokenize('장례희망이 뭐냐는 선섕님의 질문에 벙어리가 됫따')
278+
>>> kiwi.tokenize('장례희망이 뭐냐는 선섕님의 질문에 벙어리가 됫따', typos='basic')
280279
[Token(form='장래', tag='NNG', start=0, len=2),
281280
Token(form='희망', tag='NNG', start=2, len=2),
282281
Token(form='', tag='JKS', start=4, len=1),
@@ -296,20 +295,18 @@ True
296295

297296
# 0.17.1에서는 연철에 대한 오타 교정이 추가되었습니다.
298297
# 받침 + 초성 ㅇ/ㅎ 꼴을 잘못 이어적은 경우에 대해 교정이 가능합니다.
299-
>>> kiwi = Kiwi(typos='continual')
300-
>>> kiwi.tokenize('오늘사무시레서')
298+
>>> kiwi.tokenize('오늘사무시레서', typos='continual')
301299
[Token(form='오늘', tag='NNG', start=0, len=2),
302300
Token(form='사무실', tag='NNG', start=2, len=4),
303301
Token(form='에서', tag='JKB', start=5, len=2)]
304-
>>> kiwi.tokenize('지가캤어요')
302+
>>> kiwi.tokenize('지가캤어요', typos='continual')
305303
[Token(form='지각', tag='NNG', start=0, len=3),
306304
Token(form='', tag='XSV', start=2, len=1),
307305
Token(form='', tag='EP', start=2, len=1),
308306
Token(form='어요', tag='EF', start=3, len=2)]
309307

310308
# 기본 오타 교정에 연철 오타 교정까지 함께 사용할 수도 있습니다.
311-
>>> kiwi = Kiwi(typos='basic_with_continual')
312-
>>> kiwi.tokenize('웨 지가캤니?')
309+
>>> kiwi.tokenize('웨 지가캤니?', typos='basic_with_continual')
313310
[Token(form='', tag='MAG', start=0, len=1),
314311
Token(form='지각', tag='NNG', start=2, len=3),
315312
Token(form='', tag='XSV', start=4, len=1),
@@ -319,15 +316,13 @@ True
319316

320317
# 0.19.0 버전에서는 장음화 오류(한 음절을 여러 음절로 늘려 적는 오류)가
321318
# 포함된 텍스트를 교정하는 기능도 추가되었습니다.
322-
>>> kiwi = Kiwi(typos='lengthening')
323-
>>> kiwi.tokenize('지이인짜 귀여워요')
319+
>>> kiwi.tokenize('지이인짜 귀여워요', typos='lengthening')
324320
[Token(form='진짜', tag='MAG', start=0, len=4),
325321
Token(form='귀엽', tag='VA-I', start=5, len=3),
326322
Token(form='어요', tag='EF', start=7, len=2)]
327323

328324
# 기본 오타 교정 + 연철 오타 교정 + 장음화 오류 교정을 함께 사용할 수도 있습니다.
329-
>>> kiwi = Kiwi(typos='basic_with_continual_and_lengthening')
330-
>>> kiwi.tokenize('지이인짜 기여워요~ 마니 좋아해')
325+
>>> kiwi.tokenize('지이인짜 기여워요~ 마니 좋아해', typos='basic_with_continual_and_lengthening')
331326
[Token(form='진짜', tag='MAG', start=0, len=4),
332327
Token(form='귀엽', tag='VA-I', start=5, len=3),
333328
Token(form='어요', tag='EF', start=7, len=2),
@@ -494,6 +489,61 @@ print(kiwi.tokenize("약주 ᄒᆞᆫ 잔 드셧수과?", allowed_dialects='jeju
494489
Token(form='', tag='EP', start=10, len=1),
495490
Token(form='수과', tag='EF', start=11, len=2, sense=1),
496491
Token(form='?', tag='SF', start=13, len=1)]
492+
493+
# 0.23.0 버전에서는 OOV 탐지 방식을 선택할 수 있는 옵션이 추가되었습니다.
494+
# oov_handling='rule'로 설정 시 이전 방식대로 길이에 기반한 규칙으로 OOV를 탐지합니다.
495+
>>> kiwi.tokenize('알리오올리오가 진짜 맛있는 집', oov_handling='rule')
496+
[Token(form='알리', tag='VV', start=0, len=2),
497+
Token(form='', tag='EC', start=2, len=1),
498+
Token(form='올리', tag='VV', start=3, len=2),
499+
Token(form='', tag='EC', start=5, len=1),
500+
Token(form='', tag='JKS', start=6, len=1),
501+
Token(form='진짜', tag='MAG', start=8, len=2),
502+
Token(form='맛있', tag='VA', start=11, len=2),
503+
Token(form='', tag='ETM', start=13, len=1),
504+
Token(form='', tag='NNG', start=15, len=1)]
505+
506+
# oov_handling='chr'로 설정 시 경량 문자모델에 기반하여 OOV를 탐지합니다. '알리오올리오'는 사전에 등재되지 않은 단어이지만 OOV로 잘 탐지되어서 잘못 쪼개지지 않고 하나의 형태소로 분석된 것을 볼 수 있습니다.
507+
# oov_handling의 기본값은 'chr'이므로, oov_handling은 생략해도 됩니다.
508+
>>> kiwi.tokenize('알리오올리오가 진짜 맛있는 집', oov_handling='chr')
509+
[Token(form='알리오올리오', tag='NNG', start=0, len=6, oov=True),
510+
Token(form='', tag='JKS', start=6, len=1),
511+
Token(form='진짜', tag='MAG', start=8, len=2),
512+
Token(form='맛있', tag='VA', start=11, len=2),
513+
Token(form='', tag='ETM', start=13, len=1),
514+
Token(form='', tag='NNG', start=15, len=1)]
515+
516+
# 종종 oov_handling='chr'만으로는 탐지가 어려운 경우도 있습니다.
517+
>>> kiwi.tokenize('엑소바이옴에서 나온 제품. 엑소바이옴은 화장품 회사로', oov_handling='chr')
518+
[Token(form='엑소', tag='NNP', start=0, len=2),
519+
Token(form='바이오', tag='NNG', start=2, len=3),
520+
Token(form='', tag='ETN', start=4, len=1),
521+
Token(form='에서', tag='JKB', start=5, len=2),
522+
Token(form='나오', tagg='VV', start=8, len=2),
523+
Token(form='', tag='ETM', start=9, len=1),
524+
Token(form='제품', tag='NNG', start=11, len=2),
525+
Token(form='.', tag='SF', start=13, len=1),
526+
Token(form='엑소', tag='NNP', start=15, len=2),
527+
Tooken(form='바이오', tag='NNG', start=17, len=3),
528+
Token(form='', tag='ETN', start=19, len=1),
529+
Token(form='', tag='JX', start=20, len=1),
530+
Token(form='화장품', tag='NNG', start=22, len=3),
531+
Token(form='회사', tagg='NNG', start=26, len=2),
532+
Token(form='', tag='JKB', start=28, len=1)]
533+
534+
# oov_handling='chr_freq'로 설정 시 OOV 탐지 시 빈도수 정보도 활용하게 됩니다. '엑소바이옴'이 반복적으로 등장하는 것을 보고 신조어일 것이라고 판단하게 됩니다.
535+
>>> kiwi.tokenize('엑소바이옴에서 나온 제품. 엑소바이옴은 화장품 회사로', oov_handling='chr_freq')
536+
[Token(form='엑소바이옴', tag='NNG', start=0, len=5, oov=True),
537+
Token(form='에서', tag='JKB', start=5, len=2),
538+
Token(form='나오', tag='VV', start=8, len=2),
539+
Token(form='', tag='ETM', start=9, len=1),
540+
Token(forrm='제품', tag='NNG', start=11, len=2),
541+
Token(form='.', tag='SF', start=13, len=1),
542+
Token(form='엑소바이옴', tag='NNP', start=15, len=5, oov=True),
543+
Token(form='', tag='JX', start=20, len=1),
544+
Token(form='화장품', tag='NNG', start=22, len=3),
545+
Token(form='회사', tag='NNG', start=26, len=2),
546+
Token(form='', tag='JKB', start=28, len=1)]
497547
```
498548

499549
## 시작하기
@@ -505,7 +555,7 @@ kiwi = Kiwi()
505555
```
506556
Kiwi 생성자는 다음과 같습니다.
507557
```python
508-
Kiwi(num_workers=-1, model_path=None, load_default_dict=True, integrate_allomorph=True, model_type=None, typos=None, typo_cost_threshold=2.5, enabled_dialects='standard')
558+
Kiwi(num_workers=-1, model_path=None, load_default_dict=True, integrate_allomorph=True, model_type=None, enabled_dialects='standard')
509559
```
510560
* `num_workers`: 1 이상이면 단어 추출 및 형태소 분석에 멀티 코어를 활용하여 조금 더 빠른 속도로 분석을 진행할 수 있습니다. <br>
511561
0인 경우 단일 코어만 활용합니다. num_workers가 -1이면 현재 환경에서 사용가능한 모든 코어를 활용합니다. <br>
@@ -514,8 +564,6 @@ Kiwi(num_workers=-1, model_path=None, load_default_dict=True, integrate_allomorp
514564
* `load_default_dict`: 추가 사전을 로드합니다. 추가 사전은 위키백과의 표제어 타이틀로 구성되어 있습니다. 이 경우 로딩 및 분석 시간이 약간 증가하지만 다양한 고유명사를 좀 더 잘 잡아낼 수 있습니다. 분석 결과에 원치 않는 고유명사가 잡히는 것을 방지하려면 이를 False로 설정하십시오.
515565
* `integrate_allomorph`: 어미 중, '아/어', '았/었'과 같이 동일하지만 음운 환경에 따라 형태가 달라지는 이형태들을 자동으로 통합합니다.
516566
* `model_type`: 형태소 분석에 사용할 언어 모델을 지정합니다. `'cong'`, `'cong-global'` 중 하나를 선택할 수 있습니다. `'cong-global'` 는 상대적으로 느리지만 먼 거리에 있는 형태소 간의 관계를 포착할 수 있습니다.
517-
* `typos`: 형태소 분석 시 간단한 오타를 교정합니다. `None`으로 설정 시 교정을 수행하지 않습니다.
518-
* `typo_cost_threshold`: 오타 교정을 허용할 최대 오타 비용을 설정합니다.
519567
* `enabled_dialects`: 활성화할 방언을 설정합니다. 기본값은 `Dialect.STANDARD`으로 이 경우 Kiwi는 표준어만을 분석할 수 있습니다.
520568

521569
kiwi 객체는 크게 다음 세 종류의 작업을 수행할 수 있습니다.
@@ -710,8 +758,8 @@ kiwi을 생성하고, 사용자 사전에 단어를 추가하는 작업이 완
710758
형태소 분석, 문장 분리, 띄어쓰기 교정, 문장 복원 등의 작업을 수행할 수 있습니다.
711759

712760
```python
713-
Kiwi.tokenize(text, match_option, normalize_coda=False, z_coda=True, split_complex=False, compatible_jamo=False, saisiot=None, blocklist=None, allowed_dialects='standard', dialect_cost=3.0)
714-
Kiwi.analyze(text, top_n, match_option, normalize_coda=False, z_coda=True, split_complex=False, compatible_jamo=False, saisiot=None, blocklist=None, allowed_dialects='standard', dialect_cost=3.0)
761+
Kiwi.tokenize(text, match_option, normalize_coda=False, z_coda=True, split_complex=False, compatible_jamo=False, saisiot=None, blocklist=None, allowed_dialects='standard', dialect_cost=3.0, oov_handling=None, typos=None, typo_cost_threshold=2.5)
762+
Kiwi.analyze(text, top_n, match_option, normalize_coda=False, z_coda=True, split_complex=False, compatible_jamo=False, saisiot=None, blocklist=None, allowed_dialects='standard', dialect_cost=3.0, oov_handling=None, typos=None, typo_cost_threshold=2.5)
715763
Kiwi.split_into_sents(text, match_options=Match.ALL, normalize_coda=False, z_coda=True, split_complex=False, compatible_jamo=False, saisiot=None, blocklist=None, allowed_dialects='standard', dialect_cost=3.0, return_tokens=False)
716764
Kiwi.glue(text_chunks, insert_new_lines=None, return_space_insertions=False)
717765
Kiwi.space(text, reset_whitespace=False)
@@ -720,7 +768,7 @@ Kiwi.template(format_str, cache=True)
720768
```
721769

722770
<details>
723-
<summary><code>tokenize(text, match_option=Match.ALL, normalize_coda=False, z_coda=True, split_complex=False, compatible_jamo=False, saisiot=None, blocklist=None, allowed_dialects='standard', dialect_cost=3.0)</code></summary>
771+
<summary><code>tokenize(text, match_option=Match.ALL, normalize_coda=False, z_coda=True, split_complex=False, compatible_jamo=False, saisiot=None, blocklist=None, allowed_dialects='standard', dialect_cost=3.0, oov_handling=None, typos=None, typo_cost_threshold=2.5)</code></summary>
724772

725773
입력된 `text`를 형태소 분석하여 그 결과를 간단하게 반환합니다. 분석결과는 다음과 같이 `Token`의 리스트 형태로 반환됩니다.
726774

@@ -746,7 +794,7 @@ Kiwi.template(format_str, cache=True)
746794
<hr>
747795

748796
<details>
749-
<summary><code>analyze(text, top_n=1, match_option=Match.ALL, normalize_coda=False, z_coda=True, split_complex=False, compatible_jamo=False, saisiot=None, blocklist=None, allowed_dialects='standard', dialect_cost=3.0)</code></summary>
797+
<summary><code>analyze(text, top_n=1, match_option=Match.ALL, normalize_coda=False, z_coda=True, split_complex=False, compatible_jamo=False, saisiot=None, blocklist=None, allowed_dialects='standard', dialect_cost=3.0, oov_handling=None, typos=None, typo_cost_threshold=2.5)</code></summary>
750798

751799
입력된 `text`를 형태소 분석하여 그 결과를 반환합니다. 총 top_n개의 결과를 자세하게 출력합니다. 반환값은 다음과 같이 구성됩니다.
752800

kiwipiepy/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
from kiwipiepy._version import __version__
66
from kiwipiepy._wrap import (
77
Kiwi,
8+
KiwiConfig,
89
Sentence,
910
TypoTransformer,
1011
TypoDefinition,
1112
HSDataset,
13+
ChrDataset,
1214
MorphemeSet,
1315
PretokenizedToken,
1416
extract_substrings,
@@ -31,6 +33,7 @@
3133
TypoTransformer.__module__ = 'kiwipiepy'
3234
TypoDefinition.__module__ = 'kiwipiepy'
3335
HSDataset.__module__ = 'kiwipiepy'
36+
ChrDataset.__module__ = 'kiwipiepy'
3437
MorphemeSet.__module__ = 'kiwipiepy'
3538
PretokenizedToken.__module__ = 'kiwipiepy'
3639
SimilarMorpheme.__module__ = 'kiwipiepy'

0 commit comments

Comments
 (0)