상세 컨텐츠

본문 제목

[국어정보학] 코퍼스를 구축하여 빈도분석하는 방법

수업노트

by ∫2tdt=t²+c 2013. 10. 15. 02:17

본문



국어학에서 컴퓨터를 유용하게 사용하는 방법은 바로 방대한 데이터를 잘 짜여진 프로그램으로 처리하여 여러가지 결과물을 도출해 내는것이지요. 개강 후 한 달 반 동안 여러가지 프로그램을 배우며 코퍼스를 구축하는 방법을 간단하게 공부했었는데, 짬을 내어 정리해봅니다.



1. 제일 먼저 수집할 것은 텍스트입니다. 어떤 코퍼스를 구축할지에 따라 '구어 텍스트', '뉴스 텍스트', '라디오 텍스트', '가을동화 텍스트' 등등을 모을 수 있겠죠. 이렇게 수집된 텍스트들을 '원시 말뭉치'라고 부릅니다.


2. 두번째로 필요한 작업은 '원시말뭉치'를 형태소분석하여 태깅하는 것입니다. 한국어와 같은 경우 동음이의어가 많고 단어의 굴절이 복잡하기에 형태소를 분석하지 않고 단순히 빈도분석을 한다면 잘못된 결과가 나올수 있지요. 널리 사용되는 것은 울산대 UTagger입니다.


실행 후 꼭 옵션 설정을 눌러서 [파일형태]를 [원시 말뭉치]로 설정해야 합니다.

그런뒤에 "파일분석"을 누르시면 파일이 통째로 분석되어 .tag 형식으로 저장이 됩니다.


3. 결과를 문맥색인 주석코퍼스 형식으로 변환합니다. UTagger가 출력하는 태깅결과는 


[원래문장]

[형태소 태깅된 문장]

[빈 줄]

...(모든 문장별로 반복)

과 같은 형태로 나타납니다.

하지만 빈도분석 등에 유용한 코퍼스 형태는 문맥색인 주석코퍼스로 다음과 같은 형태로 구성됩니다.


[인덱스] [원래 단어] [형태소 분석 결과] [주변 문맥]

...(모든 단어별로 반복)


이렇게 변환작업을 해주는 프로그램으로 UTagger_Corrector가 있습니다. 이 프로그램을 활용하여 문맥색인 주석 코퍼스를 구축하도록 합니다.


4. 문맥색인 주석코퍼스가 여러 개 있을 경우 하나의 파일로 합칩니다. 손으로 일일히 합쳐도 되지만, 명령프롬프트를 이용하면 편리합니다.


copy [합칠 파일들] [결과물 파일]

[합칠 파일들]에는 와일드카드 문자가 사용가능합니다. a로 시작하는 모든 텍스트 파일을 합쳐서 b.txt로 저장하고 싶다면 

copy a*.txt b.txt

와 같이 명령구문을 작성하시면 됩니다.


5. 단어의 빈도를 분석하기 위해서는 counter 프로그램을 이용합니다. 

counter 프로그램은 콘솔에서 작동하는 프로그램으로 사용법은 다음과 같습니다.

counter -d [분석할 디렉토리] -o [결과물 파일] -f [필드넘버] -s [정렬기준] -m -e

[분석할 디렉토리]는 빈도를 셀 문맥색인주석코퍼스가 있는 폴더를 지정하시면 됩니다.

[결과물 파일]은 말그대로 결과가 저장될 파일이고,

[필드넘버]는 어느 필드를 셀 것인지 지정하시면 됩니다. 단어의 빈도를 셀 것이라면, 문맥색인 주석코퍼스에서는 2번째 필드에 원래 단어가 등장하니 -f 2로 지정하시면 됩니다.

[정렬기준]은 빈도를 기준(freq)으로 정렬하여 출력할 것인지, ABC로 정렬(abc)하여 출력할 것인지 결정합니다. freq 를 일반적으로 사용합니다.

-m 은 morpheme 즉 형태소를 카운팅합니다.

-e 는 어절을 카운팅합니다. 단어를 셀 것이라면 -e를 사용하면 됩니다.



이렇게 해서 단순히 단어의 빈도를 세는 것은 할 수 있지만, 연어 빈도를 조사하는데에는 한계가 있다고 하네요.

"눈물이 ~~~"와 같은 구에서 ~~~에 들어가는 말의 빈도를 조사하고 싶으면, EditPlus로 {눈물이} 다음에 나타나는 줄을 일일히 체크해서 뽑아낸 다음 빈도를 분석해야하는 삽질을 해야한다고 합니다...


음... 간단한 프로그램인데 아직 개발된건 없나보네요. 잠깐 만들어볼까...?

-> 프로그램 만들었습니다. 2013/10/15 - [프로그래밍] - 빈도분석 프로그램 Counter



Utagger_Corrector0506.zip

UTagger Corrector 첨부합니다.


관련글 더보기

댓글 영역