#한글 #맞춤법검사 $훈스펠
2023-01-17 Note hunspell notes spellchecker아!맞춤법 검사와 사전 기능은 다른 것이다. 다른 관점에서 접근한다. 4 년만에 한국어 사전이 업데이트 되었다 감사할 일이다.
이맥스 : 맞춤법 검사 이 노트를 검토해야 한다
hunspell-dict-ko
훈스펠 한국어 사전
https://github.com/junghan0611/hunspell-dict-ko
먼저 훈스펠 설치 잘했는가? 최신 버전을 사용하자. 창우님이 관리하시는 최신 버전에다가 나의 사용자 사전을 추가하도록 구성한다. 한글 스펠은 이렇게 하면 최고의 퀄리티로 커버하는 것이다.
먼저 한국어 관련 사전 데이터가 최신이 되었다. 감사할 일이다. 그러고 보니 4 년만에 업데이트다. 감사할 일이다.
국립국어원 사전 단어 가져오기 (2023/05/01 버전)
- 한국어기초사전, 표준국어대사전, 우리말샘 갱신
한 가지 더! 국립국어원 사전 데이터를 잘 활용해서 오프라인 사전을 만들어야 한다.
빌드 및 설치 방법
$ git clone git@github.com:junghan0611/hunspell-dict-ko.git -b main
내가 포크해서 관리하는 것을 받으면 아래 내용이 반영되어 있다.
오랜만이라 어떻게 빌드하는지도 까먹었다. 위에 기록이 있지만 믿을 수 없으니 일단 리포도 리베이스하고 진행한다.
$ ln -s ~/.spacemacs.d/dict-ko-mydata.yaml dict-ko-mydata.yaml
dict-ko-mydata.yaml 을 Makefile 에 넣어준다.
DICT_DATA = dict-ko-builtins.yaml dict-ko-data.yaml dict-ko-mydata.yaml
그리고 make 해주면 된다.
> cd hunspell-dict-ko
> make
python3 make-aff-dic.py ko.aff ko.dic dict-ko-builtins.yaml dict-ko-data.yaml
Progress: 중복 제거...
Status: 중복 제거 후 단어 수: 51149...
Progress: 보조용언 확장...
Progress: 플래그 계산...
Progress: dic 출력...
Progress: aff 출력...
Before
-rw-rw-r-- 1 junghan junghan 11094418 6월 11 22:20 ko.aff
-rw-rw-r-- 1 junghan junghan 2864524 6월 11 22:20 ko.dic
After
-rw-rw-r-- 1 junghan junghan 11094418 6월 11 22:34 ko.aff
-rw-rw-r-- 1 junghan junghan 2864635 6월 11 22:34 ko.dic
여기 잘 반영되면 된다.
+ # 373 cd /usr/share/hunspell
+ # 374 sudo rm ko.aff ko.dic
+ # 376 sudo ln -s /home/junghan/sync/emacs/hunspell-dict-ko/ko.aff ko.aff
+ # 377 sudo ln -s /home/junghan/sync/emacs/hunspell-dict-ko/ko.dic ko.dic
Github Actions
매우 유용하다. 나의 단어를 포함해서 빌드하기 어렵지 않는가? 그냥 workflow 를 이용하는게 좋다. 사전만 추가해서 돌리면 된다.
https://github.com/junghan0611/hunspell-dict-ko/releases/download/23.06.19/ko-aff-dic-0.7.94.zip
$ git tag 23.06.19
$ git push origin --tags
로직은 내가 변경한게 없으니까 파일은 위와 같다. 일단 그냥 두고. 파일 안에는 내가 추가한 단어가 들어가 있을 것이다. 저걸 다운 받아서 사용하면 된다.
맞춤법 검사 구글 : 훈스펠
그러고 보니 구글 그룹이 있었다. 한국어 사전을 안 쓰는 곳이 거의 없을 텐데 아주 조용하다. 더 큰 기대를 하지 않는 것 같다.
DONE librea office 완벽하다
대규모 영어 사전 - 리브레용 https://proofingtoolgui.org/
home/junghan.config/libreoffice/4 여기에 사전이 있다. 훈스펠 용으로 잘 관리되고 있다. 코드에 여러 사전 지원하는 로직이 있을 것이다. 리브레는 너무 매끄럽게 되는데 사실 마찬가지로 된다. 계속 프로그램 올리고 내리는게 싫어서 그런 것 뿐.
DONE obsidian :: 일렉트론
잘 된다. 쥑여준다. 일렉트론이 해준다. 근데 엔진 버전이 완전 구식이다. 옵시디언은 스펠체커를 여러개 등록할 수 있다. 검사를 하면 리브레와 마찬가지로 동작한다. 엔진은 일렉트론에서 다 제공해주는 것이기에 크롬과 다를 게 없다. 업데이트는 따로 안되는 것 같다. 엄청 구식이다. 7-8 년 전 인듯.
Hunspell update
Download Ubuntu pkgs version 1.7.0
보면 실행 파일이 전부라고 볼 수 있다. 그렇다면 hunspell-ko 는? 스펠 데이터 파일이 끝이다. 그건 앞서 기록해 놓음.
usr control control.tar.zst data.tar.zst debian-binary hunspell_1.7.0-4build1_amd64.deb md5sums
> cd usr
> tree
.
├── bin
│ └── hunspell
└── share
├── doc
│ └── hunspell
│ ├── changelog.Debian.gz -> ../libhunspell-1.7-0/changelog.Debian.gz
│ └── copyright
└── man
├── hu
│ └── man1
│ └── hunspell.1.gz
└── man1
└── hunspell.1.gz
8 directories, 5 files
hunspell 최신 버전에 한글용 패치가 들어갔다.
Resolves: rhbz#2158548 allow longer words for hunspell-ko
#903
A problem since the sanity check added in:
commit 05e44e0
Author: Caolán McNamara <caolanm@redhat.com>
Date: Thu Sep 1 13:46:40 2022 +0100
Check word limit (#813)
* check against hentry blen max
그렇다면 빌드 버전을 설치하자.
아래와 같이 빌드한다. 이전 버전은 지워버린다. 실행 파일 하나 빼곤 패키지에 특별한게 없으니 문제가 없다. stow 로 설치하는 게 편하다. 나중이 지우기도 좋고
> sudo apt install autoconf automake autopoint libtool libncurses5-dev libreadline-dev
> sudo apt-get remove hunspell
autoreconf -vfi
./configure --with-ui ; --with-warnings for optional
make
sudo make install prefix=/usr/local/stow/hunspell
cd /usr/local/stow/hunspell
sudo stow hunspell
sudo ldconfig
> tree
.
├── bin
│ ├── affixcompress
│ ├── analyze
│ ├── chmorph
│ ├── hunspell
│ ├── hunzip
│ ├── hzip
│ ├── ispellaff2myspell
│ ├── makealias
│ ├── munch
│ ├── unmunch
│ ├── wordforms
│ └── wordlist2hunspell
├── include
│ └── hunspell
│ ├── atypes.hxx
│ ├── hunspell.h
│ ├── hunspell.hxx
│ ├── hunvisapi.h
│ └── w_char.hxx
├── lib
│ ├── libhunspell-1.7.a
│ ├── libhunspell-1.7.la
│ ├── libhunspell-1.7.so -> libhunspell-1.7.so.0.0.1
│ ├── libhunspell-1.7.so.0 -> libhunspell-1.7.so.0.0.1
│ ├── libhunspell-1.7.so.0.0.1
│ └── pkgconfig
│ └── hunspell.pc
└── share
훈스펠 놀아보자. 간단한 개인 사전 테스트 + 최신 기능 검토
3 주 전에 추가된 한글 패치도 테스트해보고 품사 관련 개인 사전 기능도 테스트해 본다.
Junghanacs/3 이런 식으로 넣으면 뒤에 붙는 조사까지 패스가 되는 줄 오늘 알았다. 그게 아니라면 이 단어를 hunspell-ko 에 사전 데이터에 명사로 넣어 놓고, 빌드해야 한다. 그렇게 해서 사용하고 있었다. 이게 어디냐!? 라고 엄청 좋아했는데ㅋㅋ
맥이나 리눅스 계열에서는 한글 맞춤법에 훈스펠 피할 수가 없다. 알아야 한다. 배워야 한다. 그래서 이 작업이 의미도 있고 재미도 있는 것이다.
hunspell + ispell – flyspell – 개인 사전 품사 지원이 flyspell 연동 안된다는 말
현재 버전은 다음과 같다. 그렇다면, 한글 관련 이전 이야기가 지원 될 것인가? 예를 들어 hunspell 개인 사전에 뒤에 품사 정보를 넣을 경우 말이다.
> hunspell –version @(#) International Ispell Version 3.2.06 (but really Hunspell 1.7.0)
Emacs 현재 관련 설정 현황 점검
먼저 알아야 할 것. 훈스펠은 이맥스와 관계가 없다. 훈스펠이 커맨드라인에서 되는지 확인 되면 여기에 이맥스를 연동하는 것이다. 훈스펠이 독립적으로 동작하기에 다른 오피스 프로그램에서 연동이 되는 것이니까.
다만, 설정 파일을 먼저 보자면, Emacs 버전을 나누어서 다음과 같이 설정을 했다. 이건 멀티 사전을 고려하지 않은 것 같다. 다만 버전에 따라서 왜 다른가?
;; 사전 목록에 한국어("korean") 추가
(if (>= emacs-major-version 23)
(setq ispell-local-dictionary-alist
'(("korean"
"[가-힣]"
"[^가-힣]"
"[0-9a-zA-Z]" nil
("-d" "ko_KR")
nil utf-8)))
(setq ispell-local-dictionary-alist
'(("korean"
"[가-힝]"
"[^가-힝]"
"[0-9a-zA-Z)]" nil
("-d" "ko_KR")
nil utf-8))))
;; 한국어를 기본 사전으로 지정
(setq ispell-dictionary "korean")