Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

효과적인 맞춤법 검사를 위한 내부 인코딩 #23

Open
changwoo opened this issue Apr 23, 2015 · 2 comments
Open

효과적인 맞춤법 검사를 위한 내부 인코딩 #23

changwoo opened this issue Apr 23, 2015 · 2 comments

Comments

@changwoo
Copy link
Member

changwoo commented Apr 23, 2015

맞춤법 검사에 적합한 인코딩은 두벌식 키보드 스트로크이다. 두벌식 키보드를 사용해서 발생하는 오타 뿐만 아니라 자음이 종성에 붙는지 초성에 붙는지 헷갈리는 오타 패턴이 많이 발견된다. 연음법칙 때문이기도 하다.

문제는 이러한 인코딩은 hunspell의 ICONV/OCONV 테이블에서는 구현이 불가하다는 점이다. 이 기능에서는 테이블에서 일치하는 문자열을 replace하는 기능이 있을 뿐, 가장 긴 걸 매칭한다든가, 뒤의 시퀀스를 고려한다든가 하는 부분이 없다. 예를 들어 다음과 같은 테이블이 있으면 내부적으로 "ㄱㅏㄱㅏ"라는 시퀀스가 있으면 "각ㅏ"로 변환된다. (테이블 순서를 바꾼다면 반대로 "각"이 되야 할 경우에도 "가"로 변환될 것이다.)

OCONV ㄱㅏㄱ 각
OCONV ㄱㅏ 가

이상적인 해결 절차와 방식은 다음과 같다. 아직 애매함

  • hunspell 커뮤니케이션 - 문제점 제기
  • 인코딩 변환을 hunspell 코드에 하드코딩하지 않고, 변환 방법을 사전 데이터에 정의하는 방법을 고안
  • hunspell 커뮤니케이션 - 수정하는 방법 제안

hunspell 커맨드라인을 비롯한 몇몇 부분에서 OCONV 적용이 제대로 안 되는 버그도 문제.

@changwoo
Copy link
Member Author

changwoo commented Apr 5, 2017

문제는 이러한 인코딩은 hunspell의 ICONV/OCONV 테이블에서는 구현이 불가하다는 점이다. 이 기능에서는 테이블에서 일치하는 문자열을 replace하는 기능이 있을 뿐, 가장 긴 걸 매칭한다든가, 뒤의 시퀀스를 고려한다든가 하는 부분이 없다. 예를 들어 다음과 같은 테이블이 있으면 내부적으로 "ㄱㅏㄱㅏ"라는 시퀀스가 있으면 "각ㅏ"로 변환된다. (테이블 순서를 바꾼다면 반대로 "각"이 되야 할 경우에도 "가"로 변환될 것이다.)

정정하면, ICONV/OCONV 테이블에서 제일 긴 걸 매칭하게 되어 있음. 하지만 구현하지 못한다는 점은 동일.

@changwoo
Copy link
Member Author

changwoo commented May 1, 2017

2+RST 인코딩 구현

c894507
e25919c

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant