binWord/blog Leopardの「辞書」アプリで郵便番号辞書を使う란 MacOS용 시스템 사전을 응용한 일본 우편번호 사전 만들기 포스트를 보고 한국어 버전으로 만들어 보았음.
우정사업본부에서도 우편번호 데이터를 얻을 수 있지만,
인터넷에서 아래와 같이 정리된 데이터를 이용하였음.(2012년5월, 51,989항목)
135-807 서울 강남구 개포1동 우성3차아파트 (1∼6동) 2
135-806 서울 강남구 개포1동 우성9차아파트 (901∼902동) 3
135-770 서울 강남구 개포1동 주공아파트 (1∼16동) 4
아래와 같이 작성한 ruby 코드로 데이터를 사전용 xml 포맷으로 변환하고, XCode에 있는 사전 도구를 이용해서 make 한방 때리면 사전이 튀어 나옴.
puts < <XML_HEAD
<?xml version="1.0" encoding="UTF-8"?>
<d:dictionary xmlns="http://www.w3.org/1999/xhtml"
xmlns:d="http://www.apple.com/DTDs/DictionaryService-1.0.rng">
XML_HEAD
class File
def File.open_and_process(*args)
f = File.open(*args)
yield f
f.close
end
end
File.open_and_process(ARGV[0],'r') do |file|
while line = file.gets
line.gsub(/\s+/,' ').scan(/^(\S+)\s+(.*)\s+(\d+)\s+$/).each{|zip,index,id|
puts "<d:entry d:title='#{index}' id='#{id}' from=''>"
index.split(' ').each{ |x|
puts "\t<d:index d:value='#{x}'></d:index>"
}
puts "<section><b>#{zip}</b> #{index}</section>"
puts "</d:entry>"
}
end
end
puts < <XML_TAIL
</d:dictionary>
XML_TAIL
</d:dictionary>
원래 txt 데이터는 3MB
MacOSX 사전용 xml로 변환하면 5MB
사전으로 컴파일하면 28MB
Zip으로 압축해서 5.7MB
7월19일 추가사항
배포를 하려해도 호스팅비용이 부담되어 어찌할까 하다가,
요번 참에 github 가입하고, 소스채 올림.
소스: https://github.com/alexken/korzipcode
컴파일된 사전: https://github.com/alexken/korzipcode/downloads
설치방법?
zip 파일을 다운받아 압축을 풀면 ‘한국 우편번호.dictionary’가 나오고 이것을 ~/Library/Dictionaries에 복사하면 끝.
(~/Library/Dictionaries을 파인더로 가기 힘들다면 Terminal.app에서 cd ~/Library/Dictionaries 하고 open . 으로 열 수 있음.)