bab2min / kiwipiepy

Python API for Kiwi
Other
282 stars 27 forks source link

형태소 기반 string interpolation #142

Closed bab2min closed 11 months ago

bab2min commented 12 months ago

Kiwi.join 메소드를 통해 임의의 형태소를 결합해 텍스트로 출력하는 것은 이미 가능하지만, join은 사용하기에 너무 번거로운 문제가 있다. 이에 Python string formatting과 유사한 형태로 제공되는 string interpolation를 제안한다.

from kiwipiepy import Kiwi
kiwi = Kiwi()
tpl= kiwi.template("{}가 {}을 {}었다.") # 템플릿 객체 생성

tpl.format(("나", "NP"), ("공부", "NNG"), ("하", "VV"))
# 내가 공부를 했다.

tpl.format(("너", "NP"), ("밥", "NNG"), ("먹", "VV"))
# 네가 밥을 먹었다.

tpl.format(("우리", "NP"), ("길", "NNG"), ("묻", "VV-I"))
# 우리가 길을 물었다.

내부적으로 형태소를 결합하는데에는 기존과 마찬가지로 Kiwi.join()을 사용하며, Kiwi.template()으로 템플릿 객체를 생성시 입력된 문자열을 파싱하고 한국어 영역에 대해서는 형태소 분석을 실시하여 Kiwi.join에 입력가능한 형태로 내부적으로 변환해두면 여러 번 재사용할 때의 효율을 개선하는 것까지 가능.