Metadata-Version: 2.4
Name: madipy
Version: 0.1.0
Classifier: Programming Language :: Rust
Classifier: Programming Language :: Python :: 3
Classifier: Natural Language :: Korean
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: MacOS
Classifier: Operating System :: POSIX :: Linux
Classifier: Topic :: Text Processing :: Linguistic
Summary: madi(마디): 순수 Rust 한국어 형태소 분석기
Keywords: korean,morphological analyzer,nlp,형태소 분석
License: MIT OR Apache-2.0
Requires-Python: >=3.9
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Homepage, https://github.com/p14jeffwest/madi-release

# madipy — madi (마디)

순수 Rust 로 만든 한국어 형태소 분석기의 Python 패키지입니다. 세종 품사 태그(NNG, VV, EF …)로 형태소를 나누고, 형태소 분석을 이용한 문장 분리도 합니다.

A Korean morphological analyzer written in pure Rust, with Python bindings (Sejong tag set, morpheme-aware sentence splitting).

## 설치

```
pip install madipy
```

설치 이름은 `madipy`, 코드에서는 `import madi` 입니다.

Windows·macOS(Intel·Apple Silicon)·Linux(x86_64·aarch64), Python 3.9 이상. 모델 파일은 패키지에 들어 있지 않고, 처음 쓸 때 한 번 받아 둡니다(기본 약 87 MB, 풀면 240 MB).

## 사용

```python
import madi

m = madi.Analyzer()                         # 처음 한 번 모델을 받는다
m.tokenize('아버지가 방에 들어가신다')
# [('아버지', 'NNG', 0, 3), ('가', 'JKS', 3, 4), ('방', 'NNG', 5, 6), ('에', 'JKB', 6, 7),
#  ('들어가', 'VV', 8, 11), ('시', 'EP', 11, 13), ('ㄴ다', 'EF', 11, 13)]
m.pos('감기는 무서운 병이다.')                  # [('감기', 'NNG'), ('는', 'JX'), ('무섭', 'VA'), …]
m.split_sentences('오늘 날씨가 참 좋네요 내일은 비가 온대요')
# ['오늘 날씨가 참 좋네요', '내일은 비가 온대요']
m.tokenize_batch(['문장 하나', '문장 둘'], threads=4)
```

- `madi.Analyzer(precise=True)` — 정밀 모드: 애매한 어절만 작은 신경망으로 다시 고릅니다(모델 +27 MB, 느림).
- `madi.Analyzer(nlm=False)` — 신경망 LM 없이 n-gram 만(빠르고 메모리가 작음).
- `madi.Analyzer(std_2025=True)` — 2025년판 형태 분석 지침식 출력.
- `madi.Analyzer(user=['my_dict.tsv'])` — 사용자 사전.
- `tokenize` 의 시작·끝은 입력 문자열의 글자 위치입니다(`text[start:end]`). 활용형이 축약된 곳(신다 = 시 + ㄴ다)은 여러 형태소가 같은 구간을 가리킵니다.

## 모델 파일

- 받는 곳: [madi-release](https://github.com/p14jeffwest/madi-release) 의 Release. 받은 뒤 sha256 을 확인합니다.
- 두는 곳: Windows `%LOCALAPPDATA%\madi\models\<태그>`, 그 밖 `~/.cache/madi/models/<태그>` (환경 변수 `MADI_MODEL_DIR` 로 바꿈).
- 인터넷이 막힌 곳: Release 의 `.xz` 파일을 따로 받아 그 디렉터리를 `MADI_MODEL_URL` 로 주거나, 받은 파일 경로를 직접 줍니다 — `madi.Analyzer('madi.dict', lm='knlm.bin', nlm='model.nlm')`.

명령줄: `python -m madi download [--precise]`, `python -m madi info`, `python -m madi verify`, `python -m madi "문장"`.

