결국 한자 한글 변환기를 만들어 버렸습니다.

masoris의 이미지

전에 한자>한글 변환기 제작해 보실분을 찾아 보았지만, 아무도 없어서 제가 직접 만들게 되었습니다.

실행 파일이 아니라, 파이썬 py파일 이므로, 파이썬 설치 후, 압축 해지 한다음,
(콘솔, 터미널, 명령프롬포트, 도스창(?)) 에서 "python hanja.py"라고 입력하시면 됩니다.

참고로 10시간전까지만 해도 파이썬을 전혀 모르던 사람이, 벼락치기 공부 후 프로그래밍 한것이므로, 엄청 부실합니다.
일주일전에 리눅스 처음 써보고, 오늘 파이썬 처음써보고, 요즘 새로운걸 많이 접했더니 정신이 없군요;;;

대충 작동 화면은 다음과 같습니다 :

user@user-desktop:~/hanja$ python hanja.py
한자한글변환기 0.01   제작:마소리스(masoris@gmail.com)
명령어: 종료(exit), 방식, 정변환, 역변환, 목록
변환하고자 하는 한자를 입력하세요.
 
dic0.txt을 읽어 들임
dic4.txt을 읽어 들임
dic3.txt을 읽어 들임
dic2.txt을 읽어 들임
총 60001 개 데이터 읽어 드림
 
入力1> 大韓民國은 民主共和國이다. 大韓民國의 主權은 國民에게 있고, 모든 權力은 國民으로부터 나온다.
出力1> 대한민국은 민주공화국이다. 대한민국의 주권은 국민에게 있고, 모든 권력은 국민으로부터 나온다.
 
入力2> 방식
dic0.txt을 읽어 들임
변환하고자 하는 방식을 선택하세요
1. 다용도 한자-한글 변환 시스템 (권장)
2. 유니코드 대표음으로 변환 (MS Word)
3. 유니코드 정규화 알고리즘 적용 후 한글로 변환 (위키백과)
4. 두음법칙 비적용 한글로 변환 (문화어)
5. 한자에 정규화 알고리즘 적용 시키기
4
dic1.txt을 읽어 들임
총 27496 개 데이터 읽어 드림
 
入力3> 朝鮮民主主義人民共和國은 全體 朝鮮人民의 利益을 代表하는 自主的인 社會國家이다.
出力3> 조선민주주의인민공화국은 전체 조선인민의 리익을 대표하는 자주적인 사회국가이다.
 
入力4> 방식
dic0.txt을 읽어 들임
변환하고자 하는 방식을 선택하세요
1. 다용도 한자-한글 변환 시스템 (권장)
2. 유니코드 대표음으로 변환 (MS Word)
3. 유니코드 정규화 알고리즘 적용 후 한글로 변환 (위키백과)
4. 두음법칙 비적용 한글로 변환 (문화어)
5. 한자에 정규화 알고리즘 적용 시키기
3
dic4.txt을 읽어 들임
dic1.txt을 읽어 들임
총 59733 개 데이터 읽어 드림
 
入力5> 天皇は、日本國の象?であり日本國民統合の象?であつて、この地位は、主權の存する日本國民の總意に基く。
出力5> 천황は、일본국の상징であり일본국민통합の상징であつて、この지위は、주권の존する일본국민の총의に기く。
 
入力6> 中?人民共和?是工人????的、以工??盟?基?的人民民主?政的社?主??家。
出力6> 중화인민공화국시공인계급령도적、이공농련맹위기출적인민민주전정적사회주의국가。
 
入力7> 역변환
한글을 한자로 변환합니다 (시험용)
 
入力8> 대한민국
出力8> 大韓民國
 
入力9> 조선민주주의인민공화국
出力9> 朝鮮民主主義人民共和國
 
入力10> 중화인민공화국
出力10> 中和人民共和國
 
入力11> 종료
user@user-desktop:~/hanja$ 

무려 4가지 방식의 한자 변환을 지원합니다. 놀랍지 않나요?

1. 다용도 한자-한글 변환 시스템 (권장)
2. 유니코드 대표음으로 변환 (MS Word)
3. 유니코드 정규화 알고리즘 적용 후 한글로 변환 (위키백과)
4. 두음법칙 비적용 한글로 변환 (문화어)

두음법칙 비적용 한글로 변환은 국내 최초에요!!!

그런데, py파일을 윈도우 명령 프롬포트용 exe파일로 만드는 방법있나요?

File attachments: 
첨부파일 크기
Binary Data hanja001.tar.gz464.82 KB
hey의 이미지

ㅊㅊㅈ...

May the F/OSS be with you..



----------------------------
May the F/OSS be with you..


익명 사용자의 이미지

와우

7339989b62a014c4ce6e31b3540bc7b5f06455024f22753f6235c935e8e5의 이미지

py2exe를 찾아보세요.
그나저나, 10시간이라니 정말 대단하십니다........ ㅠㅠ;

cppig1995의 이미지

진정한 geek이십니다. 10시간만에 파이썬 습득 + 한자한글변환기 제작...
geekforum으로!

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

Munsen의 이미지

괴물이시다 -_-;

cppig1995의 이미지

그런데 도스창에서는 글자가 깨지네요...
혹시나 해서 chcp 65001해도 여전합니다.

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

blueskya의 이미지

텍스트를 ansi 포맷으로 저장하시면 윈도우용 도스에서 한글이 잘 보이실껍니다.

요즘 리눅스 쓰시는 분들 포맷이 utf-8이니 아마도 ^^; 뭐 어떤 포맷이라도 ansi 포맷으로 저장하시면됩니다.

참고로 이건 꼼수일 뿐입니다. -_-a
----------------------------------------------------------------------
인생 뭐있어? 백수로 사는거야~ 가는거야~

----------------------------------------------------------------------
인생 뭐있어? 백수로 사는거야~ 가는거야~

익명 사용자의 이미지

제목: 한자를 한글로 변환

개요:
http://kldp.org/node/78544,
hanja001.tar.gz 에서
hanja.py를 hanja-new.py로 수정
자세한 내용은 스크립트 참조

1. 스크립트의 첫 부분

# -*- coding: utf-8 -*-
# File name: hanja.py
from __future__ import unicode_literals 
import sys
import codecs
SRC_ENCODING="utf_8"
DIC_ENCODING="utf_8"
UTF8_BOM_UNI=unicode(codecs.BOM_UTF8, "utf8")

2. command 함수

codepointed=dic0[i]+'\t'+dic1[i];
encoded=codepointed.encode(sys.stdout.encoding,'backslashreplace')
print encoded

3. readdic 함수

firstline = True
dic=codecs.open(dicfilename,'r',DIC_ENCODING)
while(True):
	line = dic.readline()
	if True==firstline:
		if UTF8_BOM_UNI==line:
			line=line.lstrip( UTF8_BOM_UNI )
		firstline=False

4. setmode 함수

s = raw_input().decode(sys.stdin.encoding)

5. while 루프

prompt='\n入力'+str(times)+'> '
prompt=prompt.encode(sys.stdout.encoding)
inp = raw_input(prompt) 
command(inp.decode(sys.stdin.encoding))

익명 사용자의 이미지

if UTF8_BOM_UNI==line[0]:

익명 사용자의 이미지

raw_input으로 얻은 (변환되지 않은) 문자열에 stdin에서 지원하지 않는 문자가 있을 때

1. IDLE을 사용중이라면 unicode로 처리됨.
2. Console 에서는 str로 처리됨.

if(type(inp) == unicode):
	indecoded=inp
else:
	try:
		indecoded=inp.decode(sys.stdin.encoding)
	except:
		print "지원되지 않는 문자가 있습니다."
		indecoded=inp
command(indecoded)

익명 사용자의 이미지

Python 3.xx을 사용하면 표준입출력을 사용할 때, unicode 스트링을 byte 스트링으로 또는 그 반대로 변환하는 과정이 필요 없어서 간결한 코드가 만들어짐. 또한, IDLE과 콘솔 모두에서 유니코드 문자가 처리가 정상적으로 처리됨.

Python 3.XX용으로 바꾸려면:

1. 파일 첫 부분

UTF8_BOM_UNI=codecs.BOM_UTF8

2. command 함수에서

2.1. command 함수에서 목록 표시 부분

codepointed=dic0[i]+'\t'+dic1[i];
encoded=codepointed
print (encoded)

2.2. command 함수에서 결과 출력 부분

result('出力'+str(times)+'> '+convert(a))

3. setmode 함수에서 번호 입력 부분

s = input() # raw_input이 아님

4. 주 while 루프

prompt='\n入力'+str(times)+'> '
indecoded = input(prompt)  
command(indecoded)

Python 3.XX 및 2.XX에서 모두 실행할 수 있게 하려면 __future__ 모듈에서 print_function 함수를 임포트하고, print문을 모두 함수 형태로 바꾸고, sys.sys_info[0]으로 주 버전 번호를 검사해서 버전에 따라 다르게 처리해야 함.

PS 1. 위의 2.xx용 코드에서는 setmode 함수에서 raw_input을 decode할 때 에러를 처리하는 루틴을 추가해야 함.

PS 2. 프로젝트 주소 찾았음: http://kldp.net/projects/hanja/

blueskya의 이미지

한자 딕셔너리 파일이 더 대단해보인다는 -_-;;

----------------------------------------------------------------------
인생 뭐있어? 백수로 사는거야~ 가는거야~

----------------------------------------------------------------------
인생 뭐있어? 백수로 사는거야~ 가는거야~

xyhan의 이미지

와 .. 믿어지지가 않네요..
저는 리눅스 쓰는데만 몇 달 걸렸는데..

이거 세상 불공평 해서... 어디 ...

============================================================

선한 인간이냐 악한 인간이냐는 그사람의 의지에 달렸다. -에픽테토스-
의지 노력 기다림은 성공의 주춧돌이다. -파스퇴르-

============================================================

============================================================

선한 인간이냐 악한 인간이냐는 그사람의 의지에 달렸다. -에픽테토스-
의지 노력 기다림은 성공의 주춧돌이다. -파스퇴르-

============================================================

masoris의 이미지

다운로드 : http://masoris.egloos.com/3099428

윈도에서 인코딩 문제로 모두 깨져 나오더라구요. 그래서, 파일을 전부 ANSI로 만들어 실행 해 보았는데, 실행 까지는 정상적으로 되는데, 변환이 정상적으로 되지않아, 그냥 윈도 지원은 포기해 버렸습니다.

"3. 정규화 알고리즘 적용 후 한글로 변환" 기능을 좀더 강화 하였습니다. 이제 위키백과나 위키자료실에서 국한문혼용으로 적혀 있는 문서를 변환해도 5000자 중에 한 글자 정도 오류가 발생합니다. 대한민국 헌법을 변환해 보았는데, 한 글자도 오류가 없었습니다.

데이터베이스와 소스가 GFDL로 배포 되기 때문에, 오픈오피스에도 탑재할 수 있고, 누구든지 변환 프로그램을 만들 수 있습니다.


____
The limits of my language mean the limits of my world. - Ludwig Wittgenstein

yuni의 이미지

정말 대단하시군요.
이정도론 저의 충격을 담아 낼 수 가 없네요.

제가 최근에 들은 어떤 뉴스보다 충격적입니다.

"내친김에", <--- 아주 무섭습니다.

저의 사전에 있는 이 단어의 용례를 잠시 보겠습니다.

검정색 구두 사러 갔다가, "내친김에" 구두약하고 솔도 샀다.

모니터 닦다가 "내친김에" 키보드하고 마우스도 닦았다.

정말 대단하십니다.
==========================
안녕하세요? 인간이 덜 영글어서 실수가 많습니다. :-)
=====================
"지금하는 일을 꼭 완수하자."

==========================
부양가족은 많은데, 시절은 왜 이리 꿀꿀할까요?
=====================
"지금하는 일을 꼭 완수하자."

bejoy4him의 이미지

뭔소리인가 하고 들어와 봤다가 허걱했습니다.

KLDP에 기록된 발자취를 보니
KLDP에 가입한지 대략 6주,불과 일주일 전에 리눅스를 메인 OS로 사용하겠다고 선언
10시간 만에 파이썬을 필요한 만큼 습득하여 한자변환기 작성
내친김에..0.02버전 릴리즈

음.. 자랑하시려고 쓰신것은 아닌것 같은데...
기본 배경 지식은 있었다고 보여지지만, 실로 대단하십니다.

음.. 난 뭐냐... ㅡ,.ㅡa

앞으로도 쭈욱 좋은 프로그램을 소개도 하시고 만들기도 하셨으면 좋겠습니다. ^^

codebank의 이미지

필요하면 만든다라는 의미를 절실하게 느끼게하는 글인것 같습니다.
그나저나 10시간만에 한가지 언어를 배워서 원하는 결과를 만들어 내신것에
감탄이 절로나네요.
가능하시면 kldp.net쪽에 등록해 보시면 어떠실런지... :-)
뭐 이미 공개하셨지만 소스들은 kldp.net쪽에서 유지하는게 편하지 않을까
하는 생각입니다.

고생 많으셨습니다.
------------------------------
좋은 하루 되세요.

------------------------------
좋은 하루 되세요.

masoris의 이미지

KLDP에 프로젝트 신청했습니다. 36시간 내에 관리자가 등록해 준다고 뜨네요. 일단 프로젝트가 등록되면 그곳에서 보강하도록 하겠습니다.


____
The limits of my language mean the limits of my world. - Ludwig Wittgenstein

세이군의 이미지

마침 제가 로그인해있던 사이에 등록하셨더라구요.
바로 승인해드렸습니다.

한 걸음 더 가까이

cppig1995의 이미지

"종료"를 역변환하려면 어떻게하나요...
명령어에 prefix를 붙여 &목록/&list, &정변환/&hjhg, &역변환/&hghj, &방식/&type, &종료/&exit와 같이 하는게 좋을듯합니다.
* 읽어 드림(X) 읽어들임 (O)

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

masoris의 이미지

"종료"를 입력하면 바로 종료가 되니 "(한칸띄우고) 종료"라고 입력하면 " 終了"라고 변환이 될 겁니다.
따라서 이렇게 입력합니다.

入力1> 역변환
한글을 한자로 변환합니다 (시험용)

入力2> 종료
出力2> 終了

"읽어들임"은 0.0.2버전에 수정하였습니다.

제가 개발자가 아니다 보니, prefix를 붙이면 어떻게 되는지 잘 모르겠네요. -_-


____
The limits of my language mean the limits of my world. - Ludwig Wittgenstein

masoris의 이미지

저작권을 무엇으로 배포하는 것이 좋을까요? 일단 현재로서는 오픈오피스와 위키백과에 적용할 생각이 있으니, GFDL과 LGPL로 모두 사용할 수 있어야합니다. GPL, GFDL, LGPL의 차이점도 뭔지 잘 모르겠네요 ... -_-


____
The limits of my language mean the limits of my world. - Ludwig Wittgenstein

죠커의 이미지

GFDL은 문서에 관련된 것입니다. 위키백과의 "글"과 같은 용도로 쓰이지요.

배포시 소스 공개를 GPL과 LGPL은 강제를 할 수 있느냐 없느냐에 달려 있습니다.

- CN의 낙서장 / HanIRC:#CN

masoris의 이미지

http://58.234.234.210:8008/wiki/index.php?title=%EC%9D%BC%EB%B3%B8%EA%B5%AD%ED%97%8C%EB%B2%95&variant=ko-kr
난생 처음 데스크톱에 서버도 만들어보고, php도 수정해보고, 한자덕에 참 여러가지 배웁니다.


____
The limits of my language mean the limits of my world. - Ludwig Wittgenstein

jachin의 이미지

데스크탑에서 서버를 만드셨다고 하시니 말인데, 혹시 유동 IP 에서 구동하신건가요?

그렇다면 유동 IP 도메인 서비스를 사용하셔야 할 것 같아용.

그나저나 대단하세요. 그 짧은 시간에 이렇게까지 하시다니...

정말 고개가 숙여집니다. (_ _)
====
( - -)a 이제는 학생으로 가장한 백수가 아닌 진짜 백수가 되어야겠다.

masoris의 이미지

제 데스크톱에 설치해서 제가 컴퓨터를 켜 놓았을 때만 서버가 작동합니다.

오늘 오후 3시쯤에는 제사 지내로 가느라, 컴퓨터를 꺼 두었습니다.

지금은 제가 컴퓨터를 사용중이니, 들이오실 수 있을 겁니다.

무료 도메인도 신청하였고요 http://masoris.dnip.net:8008/wiki/

제가 짧은 시간에 리눅스와 서버 돌리는 방법을 배울 수 있던 이유는, 전부 우분투 위키에 설명이 잘 되어 있어서죠.
설명이 워낙 자세히 되어 있어서, 시간만 있으면 누구나 서버쯤이야 뚝딱 만들어 낼 수 있을 정도에요 :)

우분투의 방대한 위키와 포럼은 윈도우에는 없는 매력이죠, 전 그 매력에 쑥 빠져버렸습니다.
이젠 윈도우를 메인 OS로 돌릴 이유가 없어져서, VMWare속에서만 생존하고 있어요.
우분투 최고입니다 !!!


____
The limits of my language mean the limits of my world. - Ludwig Wittgenstein

익명사용자의 이미지

드디어 찾았네요. :)

http://cafe.naver.com/game20060521.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=4212

왠지 이 만화가 생각났는데 심심할때마다 찾았는데 이제서야 찾게되는군요.
처음 이글타래가 포스팅되고 읽자마자 저게 생각났었어요.

익명사용자의 이미지

죄송합니다.
위 URL은 검색해서 가야지만 보이네요.
그래서 다른 URL 링크시킵니다.

http://www.leejuseong.com/94?popQuery=n&nil_profile=tot

cleansugar의 이미지

masoris님 최신버전 링크가 깨졌습니다.

파이썬버전 어디서 다운로드받을 수 있나요?
___________________

http://blog.aaidee.com

재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.

아이디의 아이디어 무한도전
http://blog.aaidee.com

귀태닷컴
http://www.gwitae.com

thom의 이미지

혹시 학교에서 우등생이셨습니까?

파이썬 배우기 전에 다른 프로그래밍 언어를 알고 있었습니까?
___________________________________
一刻千金 (일각천금) : 한 순간이 천금의 가치가 있다
개과천선: 지난날의 잘못을 고치어 착하게 됨

-------------------
一刻千金 (일각천금) : 한 순간이 천금의 가치가 있다

superwtk의 이미지

저도 하나 만들어봤습니다.

http://labs.sumin.us/hanja

핵심 기술(?)은 다음의 한 줄입니다.

map(lambda x: x in dict and dict[x] or x, post['query'])

한자-한글 매팽 데이터는 여기서 얻었습니다.


http://blog.sumin.us

cleansugar의 이미지

잘 봤습니다.

소스 링크는 어디에 있나요?
___________________

http://blog.aaidee.com

재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.

아이디의 아이디어 무한도전
http://blog.aaidee.com

귀태닷컴
http://www.gwitae.com

superwtk의 이미지

글 수정이 안 돼서 답글로 씁니다.

어떤 문과생느님께서 (문과적) 기술 자문을 도와주시겠다고 하셔서 이번에 두음 법칙까지 구현하면서 아예 독립된 서비스로 만들어봤습니다. 아직 미완성이긴 한데, 시간 날때마다 이런저런 예외적인 규칙들도 추가해나갈 계획입니다.

http://hanja.suminb.com (http://labs.suminb.com/hanja)

iamt의 이미지

파이썬으로 exe배포판 만들수있어요 :-)

와.. 정말 대단하시네요.

저도 프로젝트가 시작하면 도와드리고싶습니다.

---------------------------------------------------------------------------------
C(++)과 php 펄등을 공부하고있습니다.
반갑습니다! 리눅스 :-)

---------------------------------------------------------------------------------
C(++)과 php 펄등을 공부하고있습니다.
반갑습니다! 리눅스 :-)

QuietJoon의 이미지

원도우 쓸때는 날개셋으로 한자>한글이 있어서 괜찮았는데 리눅스에서도 쓸 수 있는 물건이!!!

엄청나네요. Python은 배워야지배워야지 하고 있었는데, 이렇게 대단한 분을 보니까 오히려 의욕이.....

익명 사용자의 이미지

한자 한글 단어를 한자로 변경해주는 건 없나요. 아니면 일본에서 하는것처럼 한자위에다 한글을 표기해주는 거.