한자 데이터를 정리하는데 너무 오래 걸리네요

masoris의 이미지

파이썬 스크립트를 만든다음, 한자 3만자를 아래와같이 모두 정리하는데, 제 컴퓨터(펜티엄3 800Mhz)로 2시간 걸리더군요.

가:家:집:20950:宀부수;10획;중등한자;상용한자;傢의 간체자
가:價:값:5321:亻부수;15획;중등한자;상용한자
가:可:옳을:55638:口부수;5획;중등한자;상용한자
가:加:더할:12981:力부수;5획;중등한자;상용한자
가:假:거짓:5453:亻부수;11획;중등한자;상용한자
가:歌:노래:4468:欠부수;14획;중등한자;상용한자
가:街:거리:2842:行부수;12획;중등한자;상용한자
가:伽:절:692:亻부수;7획;상용한자
가:暇:겨를:3178:日부수;13획;고등한자;상용한자
가:佳:아름다울:3351:亻부수;8획;중등한자;상용한자

옛한글 7만자를 생성하는데에는 1시간 정도로 무난(?)한 편이였고,

간:가ᇆ:기역아니은디귿:7.894
간:가ᇇ:기역아니은시옷:7.893
간:가ᇈ:기역아니은시옷:7.892
갈:가ᇐ:기역아쌍리을:7.884
갈:가ᇌ:기역아리을기역시옷:7.888
갈:가ᇓ:기역아리을비읍시옷:7.881
갈:가ᇗ:기역아리을반시옷:7.877
갈:가ᇙ:기역아리을히읗:7.875
감:가ᇜ:기역아미음비읍:7.872
감:가ᇝ:기역아미음시옷:7.871
감:가ᇟ:기역아미음반시옷:7.869
감:가ᇢ:기역아여린미음:7.866
갑:가ᇦ:기역아여린비읍:7.862
갓:가ᇧ:기역아시옷기역:7.861
갓:가ᇨ:기역아시옷디귿:7.86
갓:가ᇪ:기역아시옷비읍:7.858
갓:가ᇫ:기역아반시옷:7.857
강:가ᇮ:기역아쌍이응:7.854
강:가ᇰ:기역아옛이응:7.852
강:가ᇱ:기역아옛이응시옷:7.851

지금 한자어 30만개 가량을 정리하려고, 스크립트를 4시간째 돌리고 있는데, 아직 반도 정리하지 못하고 있습니다.

가가:可呵:옳을;꾸짖을:5.02621068407:
가가:可嘉:옳을;아름다울:4.02958604177:
가가:呵呵:꾸짖을;꾸짖을:0.00524595081944:
가가:家家:집;집:0.0289482296523:
가가:假家:거짓;집:6.02185855793:
가가대소:呵呵大笑:꾸짖을;꾸짖을;큰;웃음:6.03629106949:
가가례:家家禮:집;집;예도:6.04426064292:
가가문전:家家門前:집;집;문;앞:6.05927694849:
가가방:假家房:거짓;집;방:3.02908628233:
가가호호:家家戶戶:집;집;지게;지게:6.0485930763:
가각:苛刻:까다로울;새길:5.00842161531:
가각고:架閣庫:시렁;다락집;곳집:4.01617828327:
가각본:家刻本:집;새길;근본:4.03778873573:
가간:家間:집;사이:4.02557051064:
가간사:家間事:집;사이;일:6.05453894173:

위의 세가지 스크립트는 모두, 한번에 한줄씩만 처리하면 되니 그나마 빠른 편이지만, 중복된 자료를 제거하고, 빈도순으로 정리하는 것은 참 막막하군요. 아무리 생각해도 최적화하는 방법을 전혀 모르는 제가 파이썬 스크립트를 만들어서 정리하면 최소한 20시간 이상이 걸릴 것 같습니다. 그래서 제가 이 두가지 마무리를 하는 것은 불가능하다고 판단하게 되었습니다. 어떻게 방법 없을까요?

그리고 혹시 한자키를 통해 입력할만한 한자로된 고유명사나, 종류별로 정리된 특수문자 목록 등의 자료가 있으면 저에게 보내주셨으면합니다. 가능하다면 다음 버전의 SCIM-hangul이나 새나루 한글 입력기에 반영되도록 해 보겠습니다.

slomo의 이미지

장확히 어떤 작업인지 모르겠습니다만. 세번째 한자어 자료에서
중복된 자료 제거, 빈도순 정리라면 uniq, sort 명령을 이용하거나
awk로 스크립트를 짜시면 그리 오래 걸리지 않을 것 같은데요...

저도 아는 것은 별로 없지만 도와드릴 수 있을 것 같습니다.
정확한 작업 정보를 좀 더 주시면 해보겠습니다.

====
No one asks you for change or directions.
-- Slo-Mo, J. Krokidas

====
No one asks you for change or directions.
-- Slo-Mo, J. Krokidas

masoris의 이미지

파일 용량이 커서 게시판에 파일 첨부가 안되네요. 메일 주소 알려주시면 메일로 보내드리도록 하겠습니다.

위의 세가지 파일이 합쳐진 파일이 아래와 같은 형식인데, 이 파일을 다음 방법으로 "hanja.txt"파일 형식으로 고쳐야 합니다.
1. 모든 자료를 "한글"을 기준으로 가나다순으로 정리한뒤, "한글"이 동일한 자료끼리는 "빈도"가 높은 항목이 위쪽으로 오도록 정리합니다.
2. "한글:한자 또는 옛한글"이 동일한 중복된 항목을 찾아서, 빈도가 가장 높은 항목만을 남기고 모두 지웁니다.
3. "한글:한자 또는 옛한글:설명:빈도"에서 ":빈도"를 제거하여, "한글:한자 또는 옛한글:설명"형태로 만듭니다.

힐:黠::10007.8102497
힐:恄::10000.0
힐:撷:;擷의 간체자:10014.1421356
힐:擷::10003.1622777
힐:欯::10000.0
힐:缬:;纈의 간체자:10014.1421356
힐:翓::10000.0
힐:肸::10002.6457513
힐:肹::10006.4031242
힐:诘:;詰의 간체자:10014.1421356
힐:颉:;頡의 간체자:10014.1421356
힐:㩪::10000.0
간:가ᇆ:기역아니은디귿:8007.894
간:가ᇇ:기역아니은시옷:8007.893
간:가ᇈ:기역아니은시옷:8007.892
갈:가ᇐ:기역아쌍리을:8007.884
갈:가ᇌ:기역아리을기역시옷:8007.888
갈:가ᇓ:기역아리을비읍시옷:8007.881
갈:가ᇗ:기역아리을반시옷:8007.877
갈:가ᇙ:기역아리을히읗:8007.875
감:가ᇜ:기역아미음비읍:8007.872

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


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

slomo의 이미지

이미 연락되었으므로 주소 삭제하였습니다.

====
No one asks you for change or directions.
-- Slo-Mo, J. Krokidas

====
No one asks you for change or directions.
-- Slo-Mo, J. Krokidas

slomo의 이미지

몇가지 질문 드리고 싶은 것이 있는데요.

네번째 컬럼의 빈도는 무슨 의미인가요? 좀 이상하게 보이는데요.. float 앞에 1000, 1001, 800을 덧붙인 것 같은데요.. 그냥 이 상태로 비교하면 되는 것인가요?

그리고,

Quote:

2. "한글:한자 또는 옛한글"이 동일한 중복된 항목을 찾아서, 빈도가 가장 높은 항목만을 남기고 모두 지웁니다.

라고 하셨는데. 혹시 "한글:한자(옛한글)"은 동일한데 "설명"이 다른 경우가
존재합니까? 혹시 "한글:한자(옛한글):설명"이 전부 동일한 경우만 최고빈도를
남기고 지우면 되는 것은 아닌지요?

====
No one asks you for change or directions.
-- Slo-Mo, J. Krokidas

====
No one asks you for change or directions.
-- Slo-Mo, J. Krokidas

kirrie의 이미지

좀 다른 얘기지만, 의외로 구형(?) 컴퓨터를 쓰시는 분들이 많네요. ^^
왠지 좀 멋져 보인다는.. ;;
--->
데비안 & 우분투로 대동단결!

--->
데비안 & 우분투로 대동단결!

7339989b62a014c4ce6e31b3540bc7b5f06455024f22753f6235c935e8e5의 이미지

psyco를 붙여서 돌리면 약간 더 빨라질 수도 있어요.
http://psyco.sourceforge.net/

에멜무지로의 이미지

참고로 말씀드리자면, 유니코드 5.1에는 옛한글 낱자가 더 더해집니다. 날개셋 5.0도 유니코드 5.1에 새로 추가되는 낱자들을 지원할 것입니다.
제가 쓴 http://kldp.org/node/89864 글을 참고하세요.

masoris의 이미지

날개셋 입력기 홈페이지인 김용묵의 절대공간에서도 에멜무지로님께서 쓰신 글을 읽어 보았는데, 유니코드 5.1이 되면 조합가능한 한글 음절 수가 160만개로 늘어나게 되더군요. 그렇게 방대한 자료를 한자 변환형식으로 지원하는 것은 무리라고 생각합니다. 입력기 자체에서 지원해야 하곘지요.

혹시, 에멜무지로님께서 가지고 있으신 옛한글이나 한자에 관한 목록이 있으시면 좀 보내주세요.

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


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

에멜무지로의 이미지

날개셋은 초·종성 낱자가 서로 맞아야 하기 때문에 유니코드에 없는 초성 ㅈㅂㅂ 같은 것도 임의로 더해서 씁니다. 그래서 날개셋 내부에서는 160만 글자가 아니라 약 350만 글자를 표현할 수 있습니다.

그리고 옛한글 목록은 http://moogi.new21.org/zb41/view.php?id=bugreport&no=1595 이 글을 참고하세요. 아마 모든 옛 문헌에 있는 옛한글이 저 글 첨부 파일에 있는 5436글자를 거의 벗어나지 않을 겁니다.

에멜무지로의 이미지

그리고 옛한글 낱자 코드 값은 http://en.wikipedia.org/wiki/List_of_Hangul_Jamo 또는 http://ko.wikipedia.org/wiki/%ED%95%9C%EA%B8%80_%EB%82%B1%EC%9E%90_%EB%AA%A9%EB%A1%9D 문서를 참고하세요. 유니코드 5.1 낱자 코드 값도 등록돼 있습니다.

masoris의 이미지

slomo님 덕에 "hanja.txt"파일 형식으로 생성하는데 성공했습니다. 혹시 새로운 한자 hanja.txt파일이 필요하신분이 있으시면 메일주소를 알려주시면 보내드리도록 하겠습니다. SCIM 한글 입력기를 사용하신다면, "/usr/share/libhangul/hanja/hanja.txt"파일을 교체하시면 됩니다.

열린 한글 프로젝트를 관리하시는 분들과 메일로 의견을 주고 받고 있는데, 아무래도 다음부터는 hanja.txt자체에 빈도가 포함된 형태가 되지 않을까 추정해 봅니다. 일단 의견을 좀 더 나누어 봐야 겠습니다.
____
The limits of my language mean the limits of my world. - Ludwig Wittgenstein


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

philos66의 이미지

좋은 일 하시네요. 저도 한자 데이터와 한자 폰트에 관심이 많은 사람입니다.
저도 masoris님이 갖고 계신 자료를 받고 싶습니다. 다음은 저의 이메일 주소
인데 보내주시면 감사하겠습니다.

philos66@naver.com

masoris의 이미지

보내드렸습니다.
____
The limits of my language mean the limits of my world. - Ludwig Wittgenstein


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

tongdoli의 이미지

한자 데이터 파일을 받고 싶습니다.
메일 주소는 tongdoli@paran.com입니다.
감사합니다

masoris의 이미지

libhangul에 포함되어 있습니다.
http://kldp.net/projects/hangul/

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


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

tongdoli의 이미지

한문 교사입니다.
한자어 자료를 활용하고 싶습니다.
tongdoli@paran.com입니다.

masoris의 이미지

예전에 한국어 위키자료집에 종류별로 모두 적어 두었는데, 관리자분께서 모두 지우셨네요.
일단 libhangul에 포함되어 있는 자료를 사용하시기 바랍니다.

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


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