SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
Hunspell 한국어 맞춤법
검사의 원리
류창우 <cwryu@debian.org>
GNOME.asia 2013
소개
● 1995년 이후 리눅스 유저
● SW 프로젝트 재미를 들여 여러 가지 참여
● Debian developer - 한국어 관련 패키지
● GNOME 한국어 번역 coordinator
● Embedded software engineer for media &
broadcasting devices
목표: F/OSS 환경의 맞춤법 검사
● 2008년 부터 시작
● 아직 많이 부족한 상태 (뒤에)
● 사람들의 반응
● 칭찬 AND/OR 고정관념과 오해
● 이 발표를 통해 이해하는 시간을
흔한 오해: 오픈소스 맞춤법 검사
● 오해: 어렵고 복잡한 것이니 오픈소스는 별
로 안 좋을 것이다?
● 진실: 맞춤법 검사는 오래전부터 널리 알려
져 있고 오픈소스 맞춤법 검사는 항상 독점
소프트웨어의 검사보다 더 뛰어났다.
● 적어도 유럽 주요 언어에 대해서는.
F/OSS 맞춤법 검사
● ispell
● GNU aspell
● myspell
● hunspell
ispell
● Since 1971 on PDP-10
● Usenet
GNU aspell
● GNU version
● 아직도 릴리스되지만 사용 거의 없어짐
● 8비트 내부 구조 고집
● Manual A.2 “Notes on 8-bit characters”
● Manual B.2.4 “Unsupported” / “Hangul”
myspell
● ispell 기반
● OpenOffice.org를 위해 작성 - 더 나은 연
동
● 복잡한 규칙 가능 - 더 복잡한 언어 지원 가
능
● 여전히 8비트
hunspell
●
László Németh, 헝가리어를 위해 myspell 개선
●
GPL/LGPL/MPL tri-license relicensing
●
Mozilla Firefox & LibreOffice
●
내부 유니코드 사용
●
8비트 인코딩에 없는 헝가리어 부호
●
Man 4 hunspell / Character Encoding
●
어떤 다른 맞춤법 프로그램보다 더 널리 이용됨
●
Mozilla, LibreOffice, Charome, Mac OS X
흔한 오해 - 모국어
● 오해: 한국어는 어렵고 특이한 언어이므로,
전통적인 맞춤법 검사 방식으로 동작하지 않
을 것이다.
● 진실: 한국어는 인류가 쓰는 다른 언어에 비
해 별로 특이하지 않다.
● 아마도 국어 시험의 트라우마?
맞춤법 검사의 범위
● 단어 단위 맞춤법 검사 – 형태론 (morphology)
● 단일한 단어에만 적용
● 주로 white listing - 가능한 단어가 무엇인지 데이터에 저
장
● 띄어쓰기가 없는 언어에서는 별도 처리 필요 (kakasi)
● 문법 검사 - 통사론 (syntax)
● 문장의 전체/일부에 적용
● 주로 black listing - 많이 틀리는 오류 패턴
맞춤법 검사가 하는 일
● 주어진 단어가 올바른 단어인지 판단
● 가능한 단어의 목록을 만든다
● 가능한 단어의 파생 형태 규칙을 기술한다
● 틀린 단어이면 가능성 높은 올바른 단어를
제시
맞춤법 검사가 하는 일 (계속)
맞는 단어를 찾는 기준
Q: 무엇이 가능성 높은 올바른 단어?
A: 최소한의 “편집”을 통해 만들 수 있는 단
어.
편집 거리 (edit distance, Levenshtein
distance): A, B 두 개의 단어가 있을 때 단
어 A에 몇 번의 최소한의 편집으로 단어 B를
만들 수 있는가.
Insertion / Deletion
맞추법 → 맞춤법
ㅁㅏㅈㅊㅜㅂㅓㅂ
ㅁㅏㅈㅊㅜㅁㅂㅓㅂ
Replace
잇습니다
ㅇㅣㅅㅅㅡㅂㄴㅣㄷㅏ
ㅇㅣㅆㅅㅡㅂㄴㅣㄷㅏ
Swap
ㅇ벗어
ㅇㅂㅓㅅㅇㅓ
ㅇㅓㅂㅅㅇㅓ
바퀴를 다시 만들지 말라
● hunspell이 처리해 주니 그대로 사용
● 잘 동작하게 “사전”(?)을 만들자
● 코딩은 여전히 필요
● hunspell 사용하는 프로그램과 상호 연동은
덤.
추가하면 끝?
$ cat test.dic
1
ㄱㅡㄴㅗㅁ
$ hunspell -d test
Hunspell 1.3.2
ㄱㅡㄴㅗㅁ
*
ㄱㅡㄴㅗㅇ 1 0: ㄱㅡㄴㅗㅁ
그놈
# 그놈 0
$ ㅠㅠ
모아쓰기 & 풀어쓰기 전략
● 자모로 풀기
● 잇습니다 -> ㅇㅣㅅㅅㅡㅂㄴㅣㄷㅏ
● 검사
● →ㅇㅣㅅㅅㅡㅂㄴㅣㄷㅏ ㅇㅣㅆㅅㅡㅂㄴㅣㄷ
ㅏ
● 음절로 모으기
● →ㅇㅣㅆㅅㅡㅂㄴㅣㄷㅏ 있습니다
모아쓰기 & 풀어쓰기 (계속)
● Hunspell 1.1.x – 인코딩 변환 필터 프로그
램으로 테스트
● Hunspell 1.2 or later – ICONV/OCONV
ICONV 가 ㄱㅏ
ICONV 각 ㄱㅏㄱ
...
OCONV ㄱㅏ 가
OCONV ㄱㅏㄱ 각
...
모아쓰기 & 풀어쓰기 (계속)
● 문제점 - 종성은 초성을 다시 쓰라고 가르쳐
주셨지만 유니코드는..
● 예: ㅎㅏㅂㅣㄴㄷㅏ / ㅎㅏㅂㄴㅣㄷㅏ
● 초성/종성이 같으면 검사가 용이하지만 변환
구현 어려움
● 다르면 불필요한 편집 거리 증가 (현재 상태)
모아쓰기 & 풀어쓰기 (계속)
● 복자음/복모음 분해?
● 예: ㅇㅂㅓㅅㅇㅓ / ㅇㅓㅂㅅㅇㅓ
● 역시 분해하면 검사가 용이하지만 변환 구현
어려움
● 다르면 불필요한 편집 거리 증가 (현재 상태)
모아쓰기 & 풀어쓰기 (계속)
● hunspell의 수정 / 기능 추가 필요
● 현재 상태 - 케이스별로만 대응.
REP ㅂㅣㄴ ㅂㄴㅣ
REP ㅇㅂㅓㅅ ㅇㅓㅄ
파생형 구현
● hunspell의 suffix 규칙
$ cat test.dic
1
가다/A
$ cat test.aff
SFX A Y 1
SFX A 다 시다 .
$ hunspell -d test
Hunspell 1.3.2
가다
*
가시다
+ 가다
파생형 구현 (계속)
●
조사는 명사에 그냥 추가
●
한국어는 교착어 (Agglunative language)
●
안녕하세요 : 안녕하다 + 높임 선어말 어미 -시-
+ 종결 어미 -요
●
용언의 가능한 파생형이 너무 많다.
●
이론상 무한 (있었음이었음이었음이었음...)
●
hunspell에서는 2단계 규칙으로만 정의 가능
하므로 개별 규칙으로 정의 못함
●
가다 → 가시다 → 가셨다 → 가셨고 (x) ???
파생형 구현 (계속)
● 선어말 어미 + 어말 어미 조합을 미리 “빌드
”
● Python 코딩이 필요한 맞춤법 사전 탄생
● 용언은 보통 수천가지
SFX A 다 시다 .
SFX A 다 셨다 .
SFX A 다 셨고 .
SFX A 다 셨으
며 .
...
파생형 구현 (계속)
● 정의하기 힘든 어미 조합 있음.
● 공손 선어말 어미
● 가옵시고(o), 가시옵고(o), 가시옵시고(x)
● 문제점 - 가능한 조합이 단어 수 만큼 많다.
빌드 및 런타임 속도 저하의 주범.
● 빌드 방법 최적화 필요. 가능하면 hunspell 수
정.
파생형 구현 (계속)
● 앗! 불규칙 용언
●
ㄷ불규칙: 듣다 → 들어
●
ㅂ불규칙: 아름답다 → 아름다워
●
ㅅ불규칙: 긋다 → 그어
●
ㅎ불규칙: 빨갛다 → 빨개
●
러불규칙: 이르다 → 이르러
●
우불규칙: 푸다 → 퍼
●
으불규칙: 크다 → 커
파생형 구현 (계속)
● 단어별로 규칙 다르게 지정
● 조합 생성이 더욱 복잡해짐.
합성어 처리
● 명사 + 명사, 명사 + 접사, 접사 + 명사
● 유리지갑, 가죽지갑, ~式, ~用
● 기준이 그 단어가 의미가 있는지이기 때문에
구현 쉽지 않음
● 다른 맞춤법 검사도 기준이 가지각색
● 광범위한 허용 vs 소극적 허용
● 현재 구현되지 않음
그 밖의 이슈
●
명확하지 않은 표준
●
1988년 표준어 개정안
●
초중고 국어 교육 과정
●
국립국어원 사전
●
예: 거라/너라 불규칙
●
표준어 규정: 가다/오다 동사에 대해 불규칙
●
7차 교육 과정: 가다/오다 및 추가 동사에 대해 가능한
어미
●
실생활: 가라! 와라! 이거 좀 하거라!
그 밖의 이슈 (계속)
● Hunspell 버전 별로 구현 한계
● 특정 규칙에서 버그
● 예: 오천백일만 팔천사백육십팔 (1.2.14 필요)
● Mac OS X는 아직 1.2.8
단어 데이터 편집
● http://galkwi.appspot.com/
● 온라인 단어 + 품사 + 속성 등 입력, 간단한 리
뷰
● 정기적으로 릴리스에 통합
● 웹 잘 몰라요
● 구글 앱 엔진 나빠요 - 개편 예정
결론
● 사실 별 것 아니다. 국어 시험 트라우마 극
복
● hunspell 및 맞춤법 SW 개선이 필요.
Thank you
● http://code.google.com/p/spellcheck-ko
● https://github.com/changwoo/hunspell-dict-ko
● http://groups.google.com/group/spellcheck-ko

Más contenido relacionado

La actualidad más candente

[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기CONNECT FOUNDATION
 
RoFormer: Enhanced Transformer with Rotary Position Embedding
RoFormer: Enhanced Transformer with Rotary Position EmbeddingRoFormer: Enhanced Transformer with Rotary Position Embedding
RoFormer: Enhanced Transformer with Rotary Position Embeddingtaeseon ryu
 
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)WON JOON YOO
 
오토인코더의 모든 것
오토인코더의 모든 것오토인코더의 모든 것
오토인코더의 모든 것NAVER Engineering
 
Elasticsearch development case
Elasticsearch development caseElasticsearch development case
Elasticsearch development case일규 최
 
Nori: The Official Elasticsearch Plugin for Korean Language Analysis
Nori: The Official Elasticsearch Plugin for Korean Language AnalysisNori: The Official Elasticsearch Plugin for Korean Language Analysis
Nori: The Official Elasticsearch Plugin for Korean Language AnalysisElasticsearch
 
딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향홍배 김
 
[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템NAVER D2
 
ورشة تضمين الكلمات في التعلم العميق Word embeddings workshop
ورشة تضمين الكلمات في التعلم العميق Word embeddings workshopورشة تضمين الكلمات في التعلم العميق Word embeddings workshop
ورشة تضمين الكلمات في التعلم العميق Word embeddings workshopiwan_rg
 
Attention mechanism 소개 자료
Attention mechanism 소개 자료Attention mechanism 소개 자료
Attention mechanism 소개 자료Whi Kwon
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민종민 김
 
Efficient and effective passage search via contextualized late interaction ov...
Efficient and effective passage search via contextualized late interaction ov...Efficient and effective passage search via contextualized late interaction ov...
Efficient and effective passage search via contextualized late interaction ov...taeseon ryu
 
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.jsHeeJung Hwang
 
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.Yongho Ha
 
Intro to nlp
Intro to nlpIntro to nlp
Intro to nlpankit_ppt
 
Notes on attention mechanism
Notes on attention mechanismNotes on attention mechanism
Notes on attention mechanismKhang Pham
 
word2vec, LDA, and introducing a new hybrid algorithm: lda2vec
word2vec, LDA, and introducing a new hybrid algorithm: lda2vecword2vec, LDA, and introducing a new hybrid algorithm: lda2vec
word2vec, LDA, and introducing a new hybrid algorithm: lda2vec👋 Christopher Moody
 
[Paper Reading] Attention is All You Need
[Paper Reading] Attention is All You Need[Paper Reading] Attention is All You Need
[Paper Reading] Attention is All You NeedDaiki Tanaka
 
Context2Vec 기반 단어 의미 중의성 해소, Word Sense Disambiguation
Context2Vec 기반 단어 의미 중의성 해소, Word Sense DisambiguationContext2Vec 기반 단어 의미 중의성 해소, Word Sense Disambiguation
Context2Vec 기반 단어 의미 중의성 해소, Word Sense Disambiguation찬희 이
 

La actualidad más candente (20)

[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
 
RoFormer: Enhanced Transformer with Rotary Position Embedding
RoFormer: Enhanced Transformer with Rotary Position EmbeddingRoFormer: Enhanced Transformer with Rotary Position Embedding
RoFormer: Enhanced Transformer with Rotary Position Embedding
 
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
 
오토인코더의 모든 것
오토인코더의 모든 것오토인코더의 모든 것
오토인코더의 모든 것
 
Elasticsearch development case
Elasticsearch development caseElasticsearch development case
Elasticsearch development case
 
Word2Vec
Word2VecWord2Vec
Word2Vec
 
Nori: The Official Elasticsearch Plugin for Korean Language Analysis
Nori: The Official Elasticsearch Plugin for Korean Language AnalysisNori: The Official Elasticsearch Plugin for Korean Language Analysis
Nori: The Official Elasticsearch Plugin for Korean Language Analysis
 
딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향
 
[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템
 
ورشة تضمين الكلمات في التعلم العميق Word embeddings workshop
ورشة تضمين الكلمات في التعلم العميق Word embeddings workshopورشة تضمين الكلمات في التعلم العميق Word embeddings workshop
ورشة تضمين الكلمات في التعلم العميق Word embeddings workshop
 
Attention mechanism 소개 자료
Attention mechanism 소개 자료Attention mechanism 소개 자료
Attention mechanism 소개 자료
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민
 
Efficient and effective passage search via contextualized late interaction ov...
Efficient and effective passage search via contextualized late interaction ov...Efficient and effective passage search via contextualized late interaction ov...
Efficient and effective passage search via contextualized late interaction ov...
 
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
차곡차곡 쉽게 알아가는 Elasticsearch와 Node.js
 
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
 
Intro to nlp
Intro to nlpIntro to nlp
Intro to nlp
 
Notes on attention mechanism
Notes on attention mechanismNotes on attention mechanism
Notes on attention mechanism
 
word2vec, LDA, and introducing a new hybrid algorithm: lda2vec
word2vec, LDA, and introducing a new hybrid algorithm: lda2vecword2vec, LDA, and introducing a new hybrid algorithm: lda2vec
word2vec, LDA, and introducing a new hybrid algorithm: lda2vec
 
[Paper Reading] Attention is All You Need
[Paper Reading] Attention is All You Need[Paper Reading] Attention is All You Need
[Paper Reading] Attention is All You Need
 
Context2Vec 기반 단어 의미 중의성 해소, Word Sense Disambiguation
Context2Vec 기반 단어 의미 중의성 해소, Word Sense DisambiguationContext2Vec 기반 단어 의미 중의성 해소, Word Sense Disambiguation
Context2Vec 기반 단어 의미 중의성 해소, Word Sense Disambiguation
 

Destacado

머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)홍배 김
 
한글 언어 자원과 R: KoNLP 개선과 활용
한글 언어 자원과 R: KoNLP 개선과 활용한글 언어 자원과 R: KoNLP 개선과 활용
한글 언어 자원과 R: KoNLP 개선과 활용r-kor
 
2 d asozo1 - PRINCIPLE OF CREATION
2 d asozo1 - PRINCIPLE OF CREATION2 d asozo1 - PRINCIPLE OF CREATION
2 d asozo1 - PRINCIPLE OF CREATIONHideumi Sekiguchi
 
原理講論 要約訓読チャート 12時間用 前編
原理講論 要約訓読チャート 12時間用 前編原理講論 要約訓読チャート 12時間用 前編
原理講論 要約訓読チャート 12時間用 前編Takayuki Hatada
 
파이썬 유니코드 이해하기
파이썬 유니코드 이해하기파이썬 유니코드 이해하기
파이썬 유니코드 이해하기Yong Joon Moon
 
자료구조 Project6
자료구조 Project6자료구조 Project6
자료구조 Project6KoChungWook
 
Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...
Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...
Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...홍배 김
 
A neural image caption generator
A neural image caption generatorA neural image caption generator
A neural image caption generator홍배 김
 
인공지능시대의 한국어 정보처리
인공지능시대의 한국어 정보처리인공지능시대의 한국어 정보처리
인공지능시대의 한국어 정보처리휘웅 정
 
MNIST for ML beginners
MNIST for ML beginnersMNIST for ML beginners
MNIST for ML beginners홍배 김
 
Cascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the StreamsCascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the Streamsmattpodwysocki
 
Learning to remember rare events
Learning to remember rare eventsLearning to remember rare events
Learning to remember rare events홍배 김
 
[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍NAVER D2
 
Functional Reactive Programming With RxSwift
Functional Reactive Programming With RxSwiftFunctional Reactive Programming With RxSwift
Functional Reactive Programming With RxSwift선협 이
 
Meta-Learning with Memory Augmented Neural Networks
Meta-Learning with Memory Augmented Neural NetworksMeta-Learning with Memory Augmented Neural Networks
Meta-Learning with Memory Augmented Neural Networks홍배 김
 
InfoGAN: Interpretable Representation Learning by Information Maximizing Gene...
InfoGAN: Interpretable Representation Learning by Information Maximizing Gene...InfoGAN: Interpretable Representation Learning by Information Maximizing Gene...
InfoGAN: Interpretable Representation Learning by Information Maximizing Gene...홍배 김
 
Q Learning과 CNN을 이용한 Object Localization
Q Learning과 CNN을 이용한 Object LocalizationQ Learning과 CNN을 이용한 Object Localization
Q Learning과 CNN을 이용한 Object Localization홍배 김
 
선박식별정보를 이용한 어업활동 공간밀도 가시화
선박식별정보를 이용한 어업활동 공간밀도 가시화선박식별정보를 이용한 어업활동 공간밀도 가시화
선박식별정보를 이용한 어업활동 공간밀도 가시화r-kor
 

Destacado (20)

머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)
 
한글 언어 자원과 R: KoNLP 개선과 활용
한글 언어 자원과 R: KoNLP 개선과 활용한글 언어 자원과 R: KoNLP 개선과 활용
한글 언어 자원과 R: KoNLP 개선과 활용
 
2 d asozo1 - PRINCIPLE OF CREATION
2 d asozo1 - PRINCIPLE OF CREATION2 d asozo1 - PRINCIPLE OF CREATION
2 d asozo1 - PRINCIPLE OF CREATION
 
創造原理
創造原理創造原理
創造原理
 
原理講論 要約訓読チャート 12時間用 前編
原理講論 要約訓読チャート 12時間用 前編原理講論 要約訓読チャート 12時間用 前編
原理講論 要約訓読チャート 12時間用 前編
 
原理本体論
原理本体論原理本体論
原理本体論
 
파이썬 유니코드 이해하기
파이썬 유니코드 이해하기파이썬 유니코드 이해하기
파이썬 유니코드 이해하기
 
자료구조 Project6
자료구조 Project6자료구조 Project6
자료구조 Project6
 
Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...
Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...
Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...
 
A neural image caption generator
A neural image caption generatorA neural image caption generator
A neural image caption generator
 
인공지능시대의 한국어 정보처리
인공지능시대의 한국어 정보처리인공지능시대의 한국어 정보처리
인공지능시대의 한국어 정보처리
 
MNIST for ML beginners
MNIST for ML beginnersMNIST for ML beginners
MNIST for ML beginners
 
Cascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the StreamsCascadia.js: Don't Cross the Streams
Cascadia.js: Don't Cross the Streams
 
Learning to remember rare events
Learning to remember rare eventsLearning to remember rare events
Learning to remember rare events
 
[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍[1B4]안드로이드 동시성_프로그래밍
[1B4]안드로이드 동시성_프로그래밍
 
Functional Reactive Programming With RxSwift
Functional Reactive Programming With RxSwiftFunctional Reactive Programming With RxSwift
Functional Reactive Programming With RxSwift
 
Meta-Learning with Memory Augmented Neural Networks
Meta-Learning with Memory Augmented Neural NetworksMeta-Learning with Memory Augmented Neural Networks
Meta-Learning with Memory Augmented Neural Networks
 
InfoGAN: Interpretable Representation Learning by Information Maximizing Gene...
InfoGAN: Interpretable Representation Learning by Information Maximizing Gene...InfoGAN: Interpretable Representation Learning by Information Maximizing Gene...
InfoGAN: Interpretable Representation Learning by Information Maximizing Gene...
 
Q Learning과 CNN을 이용한 Object Localization
Q Learning과 CNN을 이용한 Object LocalizationQ Learning과 CNN을 이용한 Object Localization
Q Learning과 CNN을 이용한 Object Localization
 
선박식별정보를 이용한 어업활동 공간밀도 가시화
선박식별정보를 이용한 어업활동 공간밀도 가시화선박식별정보를 이용한 어업활동 공간밀도 가시화
선박식별정보를 이용한 어업활동 공간밀도 가시화
 

Similar a Hunspell 한국어 맞춤법 검사의 원리

3주차 language
3주차 language3주차 language
3주차 language준혁 이
 
한글라이즈 재제작기
한글라이즈 재제작기한글라이즈 재제작기
한글라이즈 재제작기Heungsub Lee
 
개영한줄영작_Giving Advice on Debugging
개영한줄영작_Giving Advice on Debugging개영한줄영작_Giving Advice on Debugging
개영한줄영작_Giving Advice on DebuggingNasol Kim
 
Deep Learning for Chatbot (1/4)
Deep Learning for Chatbot (1/4)Deep Learning for Chatbot (1/4)
Deep Learning for Chatbot (1/4)Jaemin Cho
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법선협 이
 
NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계tcaesvk
 
유한상태변환기를 이용한 한국어_형태소_분석_이상호
유한상태변환기를 이용한 한국어_형태소_분석_이상호유한상태변환기를 이용한 한국어_형태소_분석_이상호
유한상태변환기를 이용한 한국어_형태소_분석_이상호상호 이
 
유한 상태 기반의 한국어 형태소 분석기_이상호
유한 상태 기반의 한국어 형태소 분석기_이상호유한 상태 기반의 한국어 형태소 분석기_이상호
유한 상태 기반의 한국어 형태소 분석기_이상호Lee Ji Eun
 
Open domain dialogue Chatbot(잡담봇 삽질기)
Open domain dialogue Chatbot(잡담봇 삽질기)Open domain dialogue Chatbot(잡담봇 삽질기)
Open domain dialogue Chatbot(잡담봇 삽질기)NAVER Engineering
 
07.intermediate level patching, kanal in PEiD hangul
07.intermediate level patching, kanal in PEiD hangul07.intermediate level patching, kanal in PEiD hangul
07.intermediate level patching, kanal in PEiD hangulre4lfl0w
 
(Kor ver.)NLP embedding(word2vec) tutorial & implementation(Tensorflow)
(Kor ver.)NLP embedding(word2vec) tutorial & implementation(Tensorflow)(Kor ver.)NLP embedding(word2vec) tutorial & implementation(Tensorflow)
(Kor ver.)NLP embedding(word2vec) tutorial & implementation(Tensorflow)Adonis Han
 
외계어 스터디 1/5 - Overview
외계어 스터디 1/5 - Overview외계어 스터디 1/5 - Overview
외계어 스터디 1/5 - Overview민태 김
 
개발자가 무슨 직업인지 궁금한 학생들 보세요
개발자가 무슨 직업인지 궁금한 학생들 보세요개발자가 무슨 직업인지 궁금한 학생들 보세요
개발자가 무슨 직업인지 궁금한 학생들 보세요Laeyoung Chang
 
훌륭한 개발자로 성장하기
훌륭한 개발자로 성장하기훌륭한 개발자로 성장하기
훌륭한 개발자로 성장하기Changyol BAEK
 
06.the plain stupid patching method, searching for textstrings hangul
06.the plain stupid patching method, searching for textstrings hangul06.the plain stupid patching method, searching for textstrings hangul
06.the plain stupid patching method, searching for textstrings hangulre4lfl0w
 
토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.Pptx토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.PptxMyeongin Woo
 
[114]파파고 서비스 2년의 경험
[114]파파고 서비스 2년의 경험[114]파파고 서비스 2년의 경험
[114]파파고 서비스 2년의 경험NAVER D2
 
4th.Lecture.The.Visual.Principles.of.Typhography.pdf
4th.Lecture.The.Visual.Principles.of.Typhography.pdf4th.Lecture.The.Visual.Principles.of.Typhography.pdf
4th.Lecture.The.Visual.Principles.of.Typhography.pdfJeongeun Kwon
 
네이버 SW교육 교사 연수자료_ 송상수
네이버 SW교육 교사 연수자료_ 송상수네이버 SW교육 교사 연수자료_ 송상수
네이버 SW교육 교사 연수자료_ 송상수Sangsu Song
 

Similar a Hunspell 한국어 맞춤법 검사의 원리 (20)

3주차 language
3주차 language3주차 language
3주차 language
 
한글라이즈 재제작기
한글라이즈 재제작기한글라이즈 재제작기
한글라이즈 재제작기
 
개영한줄영작_Giving Advice on Debugging
개영한줄영작_Giving Advice on Debugging개영한줄영작_Giving Advice on Debugging
개영한줄영작_Giving Advice on Debugging
 
Deep Learning for Chatbot (1/4)
Deep Learning for Chatbot (1/4)Deep Learning for Chatbot (1/4)
Deep Learning for Chatbot (1/4)
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법
 
NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계
 
유한상태변환기를 이용한 한국어_형태소_분석_이상호
유한상태변환기를 이용한 한국어_형태소_분석_이상호유한상태변환기를 이용한 한국어_형태소_분석_이상호
유한상태변환기를 이용한 한국어_형태소_분석_이상호
 
유한 상태 기반의 한국어 형태소 분석기_이상호
유한 상태 기반의 한국어 형태소 분석기_이상호유한 상태 기반의 한국어 형태소 분석기_이상호
유한 상태 기반의 한국어 형태소 분석기_이상호
 
Open domain dialogue Chatbot(잡담봇 삽질기)
Open domain dialogue Chatbot(잡담봇 삽질기)Open domain dialogue Chatbot(잡담봇 삽질기)
Open domain dialogue Chatbot(잡담봇 삽질기)
 
07.intermediate level patching, kanal in PEiD hangul
07.intermediate level patching, kanal in PEiD hangul07.intermediate level patching, kanal in PEiD hangul
07.intermediate level patching, kanal in PEiD hangul
 
(Kor ver.)NLP embedding(word2vec) tutorial & implementation(Tensorflow)
(Kor ver.)NLP embedding(word2vec) tutorial & implementation(Tensorflow)(Kor ver.)NLP embedding(word2vec) tutorial & implementation(Tensorflow)
(Kor ver.)NLP embedding(word2vec) tutorial & implementation(Tensorflow)
 
외계어 스터디 1/5 - Overview
외계어 스터디 1/5 - Overview외계어 스터디 1/5 - Overview
외계어 스터디 1/5 - Overview
 
개발자가 무슨 직업인지 궁금한 학생들 보세요
개발자가 무슨 직업인지 궁금한 학생들 보세요개발자가 무슨 직업인지 궁금한 학생들 보세요
개발자가 무슨 직업인지 궁금한 학생들 보세요
 
Pycon Korea 2020
Pycon Korea 2020 Pycon Korea 2020
Pycon Korea 2020
 
훌륭한 개발자로 성장하기
훌륭한 개발자로 성장하기훌륭한 개발자로 성장하기
훌륭한 개발자로 성장하기
 
06.the plain stupid patching method, searching for textstrings hangul
06.the plain stupid patching method, searching for textstrings hangul06.the plain stupid patching method, searching for textstrings hangul
06.the plain stupid patching method, searching for textstrings hangul
 
토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.Pptx토이 프로젝트를 하자.Pptx
토이 프로젝트를 하자.Pptx
 
[114]파파고 서비스 2년의 경험
[114]파파고 서비스 2년의 경험[114]파파고 서비스 2년의 경험
[114]파파고 서비스 2년의 경험
 
4th.Lecture.The.Visual.Principles.of.Typhography.pdf
4th.Lecture.The.Visual.Principles.of.Typhography.pdf4th.Lecture.The.Visual.Principles.of.Typhography.pdf
4th.Lecture.The.Visual.Principles.of.Typhography.pdf
 
네이버 SW교육 교사 연수자료_ 송상수
네이버 SW교육 교사 연수자료_ 송상수네이버 SW교육 교사 연수자료_ 송상수
네이버 SW교육 교사 연수자료_ 송상수
 

Más de Changwoo Ryu

리눅스 데스크톱의 한국어 입력 개요
리눅스 데스크톱의 한국어 입력 개요리눅스 데스크톱의 한국어 입력 개요
리눅스 데스크톱의 한국어 입력 개요Changwoo Ryu
 
오픈소스 번역 기여하기 v3
오픈소스 번역 기여하기 v3오픈소스 번역 기여하기 v3
오픈소스 번역 기여하기 v3Changwoo Ryu
 
그놈 3.30 번역 모임
그놈 3.30 번역 모임그놈 3.30 번역 모임
그놈 3.30 번역 모임Changwoo Ryu
 
그놈 3.28 번역 모임
그놈 3.28 번역 모임그놈 3.28 번역 모임
그놈 3.28 번역 모임Changwoo Ryu
 
오픈소스 번역 기여하기 v2
오픈소스 번역 기여하기 v2오픈소스 번역 기여하기 v2
오픈소스 번역 기여하기 v2Changwoo Ryu
 
국립국어원 오픈소스 어휘 정보 활용 사례
국립국어원 오픈소스 어휘 정보 활용 사례국립국어원 오픈소스 어휘 정보 활용 사례
국립국어원 오픈소스 어휘 정보 활용 사례Changwoo Ryu
 
날림 학습: 컴퓨터의 시간 처리
날림 학습: 컴퓨터의 시간 처리날림 학습: 컴퓨터의 시간 처리
날림 학습: 컴퓨터의 시간 처리Changwoo Ryu
 
그놈 3.26 번역 모임 2회차
그놈 3.26 번역 모임 2회차그놈 3.26 번역 모임 2회차
그놈 3.26 번역 모임 2회차Changwoo Ryu
 
그놈 3.26 번역 모임
그놈 3.26 번역 모임그놈 3.26 번역 모임
그놈 3.26 번역 모임Changwoo Ryu
 
오픈소스 번역 기여하기
오픈소스 번역 기여하기오픈소스 번역 기여하기
오픈소스 번역 기여하기Changwoo Ryu
 
C/c++ 표준 int 타입
C/c++ 표준 int 타입C/c++ 표준 int 타입
C/c++ 표준 int 타입Changwoo Ryu
 
오픈소스 라이선스 세미나 (2014/07/15)
오픈소스 라이선스 세미나 (2014/07/15)오픈소스 라이선스 세미나 (2014/07/15)
오픈소스 라이선스 세미나 (2014/07/15)Changwoo Ryu
 

Más de Changwoo Ryu (13)

리눅스 데스크톱의 한국어 입력 개요
리눅스 데스크톱의 한국어 입력 개요리눅스 데스크톱의 한국어 입력 개요
리눅스 데스크톱의 한국어 입력 개요
 
오픈소스 번역 기여하기 v3
오픈소스 번역 기여하기 v3오픈소스 번역 기여하기 v3
오픈소스 번역 기여하기 v3
 
그놈 3.30 번역 모임
그놈 3.30 번역 모임그놈 3.30 번역 모임
그놈 3.30 번역 모임
 
그놈 3.28 번역 모임
그놈 3.28 번역 모임그놈 3.28 번역 모임
그놈 3.28 번역 모임
 
오픈소스 번역 기여하기 v2
오픈소스 번역 기여하기 v2오픈소스 번역 기여하기 v2
오픈소스 번역 기여하기 v2
 
국립국어원 오픈소스 어휘 정보 활용 사례
국립국어원 오픈소스 어휘 정보 활용 사례국립국어원 오픈소스 어휘 정보 활용 사례
국립국어원 오픈소스 어휘 정보 활용 사례
 
날림 학습: 컴퓨터의 시간 처리
날림 학습: 컴퓨터의 시간 처리날림 학습: 컴퓨터의 시간 처리
날림 학습: 컴퓨터의 시간 처리
 
그놈 3.26 번역 모임 2회차
그놈 3.26 번역 모임 2회차그놈 3.26 번역 모임 2회차
그놈 3.26 번역 모임 2회차
 
그놈 3.26 번역 모임
그놈 3.26 번역 모임그놈 3.26 번역 모임
그놈 3.26 번역 모임
 
오픈소스 번역 기여하기
오픈소스 번역 기여하기오픈소스 번역 기여하기
오픈소스 번역 기여하기
 
C/c++ 표준 int 타입
C/c++ 표준 int 타입C/c++ 표준 int 타입
C/c++ 표준 int 타입
 
Reprap 소개
Reprap 소개Reprap 소개
Reprap 소개
 
오픈소스 라이선스 세미나 (2014/07/15)
오픈소스 라이선스 세미나 (2014/07/15)오픈소스 라이선스 세미나 (2014/07/15)
오픈소스 라이선스 세미나 (2014/07/15)
 

Hunspell 한국어 맞춤법 검사의 원리

  • 1. Hunspell 한국어 맞춤법 검사의 원리 류창우 <cwryu@debian.org> GNOME.asia 2013
  • 2. 소개 ● 1995년 이후 리눅스 유저 ● SW 프로젝트 재미를 들여 여러 가지 참여 ● Debian developer - 한국어 관련 패키지 ● GNOME 한국어 번역 coordinator ● Embedded software engineer for media & broadcasting devices
  • 3. 목표: F/OSS 환경의 맞춤법 검사 ● 2008년 부터 시작 ● 아직 많이 부족한 상태 (뒤에) ● 사람들의 반응 ● 칭찬 AND/OR 고정관념과 오해 ● 이 발표를 통해 이해하는 시간을
  • 4. 흔한 오해: 오픈소스 맞춤법 검사 ● 오해: 어렵고 복잡한 것이니 오픈소스는 별 로 안 좋을 것이다? ● 진실: 맞춤법 검사는 오래전부터 널리 알려 져 있고 오픈소스 맞춤법 검사는 항상 독점 소프트웨어의 검사보다 더 뛰어났다. ● 적어도 유럽 주요 언어에 대해서는.
  • 5. F/OSS 맞춤법 검사 ● ispell ● GNU aspell ● myspell ● hunspell
  • 6. ispell ● Since 1971 on PDP-10 ● Usenet
  • 7. GNU aspell ● GNU version ● 아직도 릴리스되지만 사용 거의 없어짐 ● 8비트 내부 구조 고집 ● Manual A.2 “Notes on 8-bit characters” ● Manual B.2.4 “Unsupported” / “Hangul”
  • 8. myspell ● ispell 기반 ● OpenOffice.org를 위해 작성 - 더 나은 연 동 ● 복잡한 규칙 가능 - 더 복잡한 언어 지원 가 능 ● 여전히 8비트
  • 9. hunspell ● László Németh, 헝가리어를 위해 myspell 개선 ● GPL/LGPL/MPL tri-license relicensing ● Mozilla Firefox & LibreOffice ● 내부 유니코드 사용 ● 8비트 인코딩에 없는 헝가리어 부호 ● Man 4 hunspell / Character Encoding ● 어떤 다른 맞춤법 프로그램보다 더 널리 이용됨 ● Mozilla, LibreOffice, Charome, Mac OS X
  • 10. 흔한 오해 - 모국어 ● 오해: 한국어는 어렵고 특이한 언어이므로, 전통적인 맞춤법 검사 방식으로 동작하지 않 을 것이다. ● 진실: 한국어는 인류가 쓰는 다른 언어에 비 해 별로 특이하지 않다. ● 아마도 국어 시험의 트라우마?
  • 11. 맞춤법 검사의 범위 ● 단어 단위 맞춤법 검사 – 형태론 (morphology) ● 단일한 단어에만 적용 ● 주로 white listing - 가능한 단어가 무엇인지 데이터에 저 장 ● 띄어쓰기가 없는 언어에서는 별도 처리 필요 (kakasi) ● 문법 검사 - 통사론 (syntax) ● 문장의 전체/일부에 적용 ● 주로 black listing - 많이 틀리는 오류 패턴
  • 12. 맞춤법 검사가 하는 일 ● 주어진 단어가 올바른 단어인지 판단 ● 가능한 단어의 목록을 만든다 ● 가능한 단어의 파생 형태 규칙을 기술한다 ● 틀린 단어이면 가능성 높은 올바른 단어를 제시
  • 14. 맞는 단어를 찾는 기준 Q: 무엇이 가능성 높은 올바른 단어? A: 최소한의 “편집”을 통해 만들 수 있는 단 어. 편집 거리 (edit distance, Levenshtein distance): A, B 두 개의 단어가 있을 때 단 어 A에 몇 번의 최소한의 편집으로 단어 B를 만들 수 있는가.
  • 15. Insertion / Deletion 맞추법 → 맞춤법 ㅁㅏㅈㅊㅜㅂㅓㅂ ㅁㅏㅈㅊㅜㅁㅂㅓㅂ
  • 18. 바퀴를 다시 만들지 말라 ● hunspell이 처리해 주니 그대로 사용 ● 잘 동작하게 “사전”(?)을 만들자 ● 코딩은 여전히 필요 ● hunspell 사용하는 프로그램과 상호 연동은 덤.
  • 19. 추가하면 끝? $ cat test.dic 1 ㄱㅡㄴㅗㅁ $ hunspell -d test Hunspell 1.3.2 ㄱㅡㄴㅗㅁ * ㄱㅡㄴㅗㅇ 1 0: ㄱㅡㄴㅗㅁ 그놈 # 그놈 0 $ ㅠㅠ
  • 20. 모아쓰기 & 풀어쓰기 전략 ● 자모로 풀기 ● 잇습니다 -> ㅇㅣㅅㅅㅡㅂㄴㅣㄷㅏ ● 검사 ● →ㅇㅣㅅㅅㅡㅂㄴㅣㄷㅏ ㅇㅣㅆㅅㅡㅂㄴㅣㄷ ㅏ ● 음절로 모으기 ● →ㅇㅣㅆㅅㅡㅂㄴㅣㄷㅏ 있습니다
  • 21. 모아쓰기 & 풀어쓰기 (계속) ● Hunspell 1.1.x – 인코딩 변환 필터 프로그 램으로 테스트 ● Hunspell 1.2 or later – ICONV/OCONV ICONV 가 ㄱㅏ ICONV 각 ㄱㅏㄱ ... OCONV ㄱㅏ 가 OCONV ㄱㅏㄱ 각 ...
  • 22. 모아쓰기 & 풀어쓰기 (계속) ● 문제점 - 종성은 초성을 다시 쓰라고 가르쳐 주셨지만 유니코드는.. ● 예: ㅎㅏㅂㅣㄴㄷㅏ / ㅎㅏㅂㄴㅣㄷㅏ ● 초성/종성이 같으면 검사가 용이하지만 변환 구현 어려움 ● 다르면 불필요한 편집 거리 증가 (현재 상태)
  • 23. 모아쓰기 & 풀어쓰기 (계속) ● 복자음/복모음 분해? ● 예: ㅇㅂㅓㅅㅇㅓ / ㅇㅓㅂㅅㅇㅓ ● 역시 분해하면 검사가 용이하지만 변환 구현 어려움 ● 다르면 불필요한 편집 거리 증가 (현재 상태)
  • 24. 모아쓰기 & 풀어쓰기 (계속) ● hunspell의 수정 / 기능 추가 필요 ● 현재 상태 - 케이스별로만 대응. REP ㅂㅣㄴ ㅂㄴㅣ REP ㅇㅂㅓㅅ ㅇㅓㅄ
  • 25. 파생형 구현 ● hunspell의 suffix 규칙 $ cat test.dic 1 가다/A $ cat test.aff SFX A Y 1 SFX A 다 시다 . $ hunspell -d test Hunspell 1.3.2 가다 * 가시다 + 가다
  • 26. 파생형 구현 (계속) ● 조사는 명사에 그냥 추가 ● 한국어는 교착어 (Agglunative language) ● 안녕하세요 : 안녕하다 + 높임 선어말 어미 -시- + 종결 어미 -요 ● 용언의 가능한 파생형이 너무 많다. ● 이론상 무한 (있었음이었음이었음이었음...) ● hunspell에서는 2단계 규칙으로만 정의 가능 하므로 개별 규칙으로 정의 못함 ● 가다 → 가시다 → 가셨다 → 가셨고 (x) ???
  • 27. 파생형 구현 (계속) ● 선어말 어미 + 어말 어미 조합을 미리 “빌드 ” ● Python 코딩이 필요한 맞춤법 사전 탄생 ● 용언은 보통 수천가지 SFX A 다 시다 . SFX A 다 셨다 . SFX A 다 셨고 . SFX A 다 셨으 며 . ...
  • 28. 파생형 구현 (계속) ● 정의하기 힘든 어미 조합 있음. ● 공손 선어말 어미 ● 가옵시고(o), 가시옵고(o), 가시옵시고(x) ● 문제점 - 가능한 조합이 단어 수 만큼 많다. 빌드 및 런타임 속도 저하의 주범. ● 빌드 방법 최적화 필요. 가능하면 hunspell 수 정.
  • 29. 파생형 구현 (계속) ● 앗! 불규칙 용언 ● ㄷ불규칙: 듣다 → 들어 ● ㅂ불규칙: 아름답다 → 아름다워 ● ㅅ불규칙: 긋다 → 그어 ● ㅎ불규칙: 빨갛다 → 빨개 ● 러불규칙: 이르다 → 이르러 ● 우불규칙: 푸다 → 퍼 ● 으불규칙: 크다 → 커
  • 30. 파생형 구현 (계속) ● 단어별로 규칙 다르게 지정 ● 조합 생성이 더욱 복잡해짐.
  • 31. 합성어 처리 ● 명사 + 명사, 명사 + 접사, 접사 + 명사 ● 유리지갑, 가죽지갑, ~式, ~用 ● 기준이 그 단어가 의미가 있는지이기 때문에 구현 쉽지 않음 ● 다른 맞춤법 검사도 기준이 가지각색 ● 광범위한 허용 vs 소극적 허용 ● 현재 구현되지 않음
  • 32. 그 밖의 이슈 ● 명확하지 않은 표준 ● 1988년 표준어 개정안 ● 초중고 국어 교육 과정 ● 국립국어원 사전 ● 예: 거라/너라 불규칙 ● 표준어 규정: 가다/오다 동사에 대해 불규칙 ● 7차 교육 과정: 가다/오다 및 추가 동사에 대해 가능한 어미 ● 실생활: 가라! 와라! 이거 좀 하거라!
  • 33. 그 밖의 이슈 (계속) ● Hunspell 버전 별로 구현 한계 ● 특정 규칙에서 버그 ● 예: 오천백일만 팔천사백육십팔 (1.2.14 필요) ● Mac OS X는 아직 1.2.8
  • 34. 단어 데이터 편집 ● http://galkwi.appspot.com/ ● 온라인 단어 + 품사 + 속성 등 입력, 간단한 리 뷰 ● 정기적으로 릴리스에 통합 ● 웹 잘 몰라요 ● 구글 앱 엔진 나빠요 - 개편 예정
  • 35. 결론 ● 사실 별 것 아니다. 국어 시험 트라우마 극 복 ● hunspell 및 맞춤법 SW 개선이 필요.
  • 36. Thank you ● http://code.google.com/p/spellcheck-ko ● https://github.com/changwoo/hunspell-dict-ko ● http://groups.google.com/group/spellcheck-ko