Skip to content

Kiwi.tokenize()에 음절 분해 여부를 선택할 수 있는 decompose_syllables 인자 추가 #193

@bab2min

Description

@bab2min

#161 처럼 원 입력의 음절은 최대한 유지하면서 형태소 분석을 수행해야하는 상황이 자주 발생하는 것으로 보인다. 현재는 여러 형태소가 결합되어 이뤄진 음절의 경우 그 음절을 자소단위까지 분해하여 형태소 분석 결과를 내고 있기에 원 입력의 음절을 유지하려면 추가적인 후처리 단계가 필요해 비효율적이다.

테스트입니다.
Mecab: (테스트, NNG), (입니다, VCP+EF)
Kiwi: (테스트, NNG), (이, VCP), (ㅂ니다, EF)

참고로 Mecab에서는 음절 기반 분석을 사용하기에 위와 같이 원 음절을 보존한 결과 출력이 가능하다.

이에 Kiwi에서도 음절을 유지한 채 분석할 수 있도록 신규 인자인 decompose_syllables을 제안한다.
default값은 True로 이 경우 기존와 동일하게 음절을 분해하여 음소단위까지 분석을 수행하며, 이 값을 False 준 경우 Mecab 결과와 유사하게 음절을 분해하지 않고 음절을 살리는 수준까지만 분석을 수행한다.

고려해야할 사항

Kiwi.tokenize()의 반환 타입인 Tokentag property는 기존까지 단일 태그만 가진다는 전제하여 쓰였지만, decompose_syllables=False로 분석을 하게 되면 Token.tag에 +로 연결된 여러 태그가 입력될 수 있으므로, Token.tag를 사용하는 부분에서 복합 태그를 처리할 수 있도록 별도의 로직이 추가되어야 한다.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions