콘텐츠로 이동

빈도단어 사전

빈도단어 사전 — 말뭉치 빈도가 오타 교정·후보 평가에 쓰이는 방식

바른은 어떤 단어가 실제로 얼마나 자주 쓰이는지를 담은 빈도단어 사전 word-freq.gob를 내장합니다. 오타를 고칠 후보가 여럿일 때, 빈도가 높은 단어를 더 그럴듯한 답으로 보고 순위를 매기는 데 사용합니다.

이 사전은 맞춤법 검사 기능이 포함된 빌드에 함께 담깁니다.

빈도가 왜 필요한가

오타를 고칠 때, 글자 모양만 비슷한 후보는 여럿 나오기 마련입니다. 이때 무엇이 더 그럴듯한지 판단하려면, 사람들이 실제로 어떤 말을 자주 쓰는지가 중요합니다.

편집거리만으로는 부족합니다

학생과 글자 모양이 비슷한 단어는 여럿일 수 있습니다. 글자 차이(편집거리)만 보면 우열을 가리기 어렵지만, 말뭉치에서 훨씬 자주 등장하는 단어를 우선하면 더 자연스러운 교정이 됩니다. 빈도단어 사전은 바로 이 "사람들이 실제로 쓰는 정도"를 알려줍니다.

BK-tree와 결합한 오타 교정

바른은 오타 후보를 찾을 때 BK-tree(자모 바이그램 기반 유사어 검색)로 편집거리가 가까운 후보를 모으고, 그 후보들을 빈도단어 사전으로 다시 평가해 순위를 정합니다.

graph TD
  TYPO[오타 어절] --> BK[BK-tree 유사어 검색];
  BK --> CAND[편집거리 가까운 후보들];
  CAND --> WF[word-freq.gob 빈도 평가];
  WF --> RANK[빈도 높은 순으로 순위];
  RANK --> BEST[최선의 교정 후보];
단계 사용 자료 역할
후보 수집 BK-tree 자모 편집거리가 가까운 단어 모으기
후보 평가 word-freq.gob 빈도로 후보 순위 매기기

BK-tree는 우리말샘 사전 기반으로 만들어지며, 자모 바이그램의 편집거리로 유사어를 빠르게 찾습니다. 빈도 사전은 그 후보 가운데 실제로 더 많이 쓰이는 말을 위로 올려, 교정 품질을 높입니다.

음소 기반 사전 검색은 별도로 다룹니다

맞춤법 검사기는 이 빈도 평가와 별개로, 사전을 음소(초성·중성·종성) 단위로 분해한 NFD 색인으로 음운 규칙에 맞는 단어 집합을 찾기도 합니다. 음소 기반 검색의 원리는 맞춤법 규정 문서에서 다룹니다.

gob 형식과 빌드 비용

빈도단어 사전은 Go의 gob 형식(word-freq.gob)으로 저장됩니다. 큰 말뭉치에서 빈도를 집계해 만들기 때문에 빌드에 10시간 이상 걸리는 별도 과정입니다. 한 번 만들어 두면 서버는 이 파일을 읽어 빠르게 활용합니다.

자주 묻는 질문

Q. 빈도단어 사전은 어디에 쓰이나요?

오타 교정에서 후보가 여럿일 때, 말뭉치에서 더 자주 쓰이는 단어를 우선하도록 후보의 순위를 매기는 데 쓰입니다.

Q. BK-tree와 빈도 사전은 어떻게 함께 작동하나요?

BK-tree가 편집거리가 가까운 유사어 후보를 모으고, 빈도단어 사전이 그 후보들을 빈도순으로 평가해 가장 그럴듯한 교정을 고릅니다.

Q. 빈도 사전을 만드는 데 왜 오래 걸리나요?

큰 말뭉치 전체에서 단어 빈도를 집계해야 하므로 빌드에 10시간 이상 걸립니다. 그래서 별도 과정으로 미리 만들어 word-freq.gob로 저장해 둡니다.

Q. 빈도단어 사전은 어떤 빌드에 포함되나요?

word-freq.gob는 맞춤법 검사기를 포함하는 빌드에 함께 담깁니다. 오타 교정 후보의 순위 평가에 쓰이므로, 형태소 분석만 쓰는 기본 빌드에는 들어가지 않습니다.

Q. 빈도 사전 말고 음소 단위 검색도 쓰나요?

네. 맞춤법 검사기는 빈도 평가와 별개로 사전을 음소(NFD) 단위로 분해해 음운 규칙에 맞는 단어 집합을 찾기도 합니다. 음소 기반 사전 검색의 자세한 원리는 맞춤법 규정 문서에서 다룹니다.

도움이 되었나요?