kiwipiepy
kiwipiepy copied to clipboard
Token 결과값 정리 관련
안녕하세요.
Kiwipiepy 넘 잘 쓰고 있습니다.
다름이 아니고 analyze하면 Token값이 나오는데, 결과값을 저장/활용할 때 불편한 점이 있어서요.
긴 문장을 분석하고 나면 다중 리스트의 형태로 나와 하나의 단어를 확인하려면 불필요한 작업이 필요하더라고요.
예를 들면
res = kiwi.analyze("샘플 문장입니다. 샘플 문장이에요. 샘플입니다") print(res[0][0][0]) Token(form="샘플", tag="NNG", start=0, end=2)
이렇게 3중리스트까지 활용해야 접근이 가능합니다. --- (1번) 아마 여러 결과값을 함께 반환하는 것 때문인 것 같은데 이 점수를 활용하지 않는 경우(예: top_n=1)에는 따로 표기가 안되면 어떨까요.
그리고 결과값을 저장하고 싶은데 Token 클래스가 계속 함께 나오는 문제가 있더라고요. 한 sentence의 결과값을 저장할 때에는 불필요한 loop를 사용해서 tuple로 변환해주는 작업을 해야합니다. -- (2번)
결과적으로 제안드리는거는 (1번) 단순 리스트의 형태로 결과값을 반환하면 어떨까요? (2번) Token 클래스 말고 단순 튜플형태로 결과값이 나오도록 하는 옵션을 추가하면 어떨까요? (혹은 이미 있는데 제가 API에서 못찾은 것인지..ㅎㅎ) (추가) 결과값을 Token 클래스말고 딕셔너리 형태로 반환하는 것도 있으면 어떨까요?
바쁘실텐데 항상 감사합니다.
안녕하세요 @dawnlog 님, 좋은 제안 감사합니다~!
- 네,
Kiwi.analyze
메소드가 사용하기에 너무 불편하다는 피드백이 있어서, 0.10.2버전부터Kiwi.tokenize
메소드를 추가했습니다.
>>> kiwi.tokenize('샘플 문장입니다. 샘플 문장이에요. 샘플입니다')
[Token(form='샘플', tag='NNG', start=0, len=2), Token(form='문장', tag='NNG', start=3, len=2), Token(form='이', tag='VCP', start=5, len=1), Token(form='ᆸ니다', tag='EF', start=5, len=3), Token(form='.', tag='SF', start=8, len=1), Token(form='샘플', tag='NNG', start=10, len=2), Token(form='문장', tag='NNG', start=13, len=2), Token(form='이', tag='VCP', start=15, len=1), Token(form='에요', tag='EF', start=16, len=2), Token(form='.', tag='SF', start=18, len=1), Token(form='샘플', tag='NNG', start=20, len=2), Token(form='이', tag='VCP', start=22, len=1), Token(form='ᆸ니다', tag='EF', start=22, len=3)]
tokenize를 쓰시면 결과값만 바로 1중 리스트로 반환해줍니다. 일반적인 용도로는 이걸 쓰시는 걸 권장드려요.
-
Token
클래스는 그 자체로 바로tuple
로 변환가능하도록 설계되어있습니다.
>>> token = kiwi.tokenize('샘플 문장입니다. 샘플 문장이에요. 샘플입니다')[0]
>>> token # Token 클래스
Token(form='샘플', tag='NNG', start=0, len=2)
>>> tuple(token) # tuple로 변환됨. (형태, 품사태그, 시작위치, 길이)
('샘플', 'NNG', 0, 2)
>>> tuple(token)[:2] # 형태와 품사 태그만 추출 시
('샘플', 'NNG')
- 좋은 제안이네요~ dict로 바로 변환하는 기능을 추가해보도록 하겠습니다!