Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

오탈자 보정기능 개선 제안 #94

Open
opopttt opened this issue Sep 1, 2022 · 3 comments
Open

오탈자 보정기능 개선 제안 #94

opopttt opened this issue Sep 1, 2022 · 3 comments
Labels
bug Something isn't working enhancement New feature or request

Comments

@opopttt
Copy link

opopttt commented Sep 1, 2022

안녕하세요, 오탈자 교정기능을 잘 사용하고 있습니다.

다만 현재 로직에서는 오자를 교정하다 보니 탈자 교정은 불가능한 한계가 있습니다.

좋아용 -> 좋아/IC 용/NNG
좋아영 -> 좋아/IC 영/NNG

인터넷에서 많이 쓰이는 문체가 종성을 추가하는 경우가 있으므로
음절 구성요소(초, 중, 종성)를 삭제하거나 추가하여서 자연스러운 문장이 되는지 추론하는 로직으로 개선되었으면 합니다.

감사합니다.

@bab2min
Copy link
Owner

bab2min commented Sep 1, 2022

안녕하세요 @opopttt
네 현재 오탈자 교정기능에서는 말씀하신것처럼 특정 종성이 추가된 경우에 대한 교정은 수행하지 않고 있습니다.
해당 기능을 추가하는건 기술적으로 가능하지만 이 경우 오탈자 탐색 속도가 크게 느려질듯합니다. 속도를 크게 손상시키지 않으면서도 가능한 방법이 있는지 고민해보도록 할게요.

그때까지는 대신 위와 같은 어미 변형에 대응해서는 add_re_rule을 사용하는것을 권장드립니다.

>>> kiwi.add_re_rule('EF', '요$', '영', -3) # '요'로 끝나는 종결어미를 '영'으로 끝나도록 변형하여 추가
['어영', '에영', '지영', '잖아영', '거든영', 'ᆯ까영', '네영', '구영', '나영', '군영', ..., '으니깐영'] # 추가된 종결어미들
>>> kiwi.tokenize('싫어영')
[Token(form='싫', tag='VA', start=0, len=1), Token(form='어영', tag='EF', start=1, len=2)]

@bab2min bab2min added enhancement New feature or request bug Something isn't working labels Sep 1, 2022
@bab2min
Copy link
Owner

bab2min commented Sep 1, 2022

확인해보니, add_re_rule 사용시 모음조화에 의한 이형태에 대해서 변형 어미가 제대로 생성되지 않는 문제가 있네요.

>>> kiwi = kiwipiepy.Kiwi()
>>> kiwi.add_re_rule('EF', '요$', '영', -3)
>>> kiwi.tokenize('싫어영')
[Token(form='싫', tag='VA', start=0, len=1), Token(form='어영', tag='EF', start=1, len=2)]
>>> kiwi.tokenize('좋아영')
[Token(form='좋', tag='VA', start=0, len=1), Token(form='어', tag='EC', start=1, len=1), Token(form='영', tag='MAG', start=2, len=1)]

이는 다음 버전에서 수정하도록 하겠습니다.

@opopttt
Copy link
Author

opopttt commented Sep 2, 2022

답변 감사합니다!

속도 문제는 멀티쓰레딩으로 처리하면 어느정도 극복가능할 것 같습니다.

웹문서 처리에는 오탈자 교정이 무척 중요하여서 해당 로직을 옵션으로 적용할 수 있으면 좋겠습니다.

추천해주신 re_rule 을 사용하면 형태소 분석은 제대로 되지만 join시 정상적인 어미로 변환되지는 않는 것 같습니다.

아니면 혹시 TypoTransformer에서 TypoDefinition으로 종성이 생략된 경우를 추가할 수 있을까요?

커스텀으로 만들어서 사용하면 좋을 것 같습니다.

감사합니다.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
bug Something isn't working enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants