빈도분석 프로그램 Counter

Posted by 적분 ∫2tdt=t²+c
2013.10.15 23:30 프로그래밍





국어정보학 수업시간에 받은 counter 프로그램을 확장해서

문맥주석코퍼스에서 연어의 빈도를 조사할수있는 기능까지 포함한 프로그람을 개발해봤어요.

단순 카운팅이니깐 코딩이 엄청 어려운것도 아니라서 어제 새벽 몇 시간 동안 짰더니 완성됐네요.



CounterPP.exe


CounterPP_XP.exe


(XP유저는 CounterPP_XP.exe를, 비스타 이상 유저는 CounterPP.exe 를 쓰시면 됩니다.)


사용방법은 counter와 유사합니다.

명령행 인수로 실행할 수도 있고, 아니면 프로그램을 단독으로 실행해서 작동시킬 수도 있어요.


프로그램의 기능:

-CSV(탭으로 필드가 구분되고, 줄바꿈으로 행이 구분되는 텍스트 파일)을 입력으로 받아서, 조건에 일치하는 행을 찾아냅니다.

-찾아낸 행에서 특정한 필드를 선택하여 단어를 수를 셀 수도 있고, 아니면 찾아낸 행의 다음행 혹은 이전 행에서 필드를 선택하여 단어 수를 셀 수도 있습니다.

-단어는 스페이스와 로 구분합니다.

-빈도 분석을 끝낸 결과는 [단어]\t[횟수]으로 빈도순으로 정렬하여 출력해줍니다.


명령행 인수 설명

-i : 입력 파일명입니다.

-o : 출력 파일명입니다.

-c : 조건입니다. 뒤에 필드번호와 정규식이 나옵니다. 여러 개 사용가능하며 각 조건들은 and로 연결됩니다.

(예시)

-c 2 ^눈물이$

두 번째 필드가 "눈물이"와 정확하게 일치하는 행만을 골라냅니다.


-c 2 눈물 -c 3 /JK

두 번째 필드에 "눈물"이 포함되고, 세번째 필드에 "/JK"가 포함되는 행만을 골라냅니다.


-s : 빈도분석의 대상이 될 행의 오프셋입니다. 만약 조건에 일치하는 행 내부에서 빈도분석을 하려한다면 이 옵션을 생략하거나 0의 값을 주면 됩니다. 다음 행의 빈도를 분석하려면 1, 이전 행의 빈도를 분석하려면 -1의 값을 주면 됩니다. n줄 뒤의 행을 분석하려면 n의 값을 주면 되겠죠.

-f : 단어의 빈도를 분석할 필드의 번호입니다. 

*필드번호는 1번부터 시작합니다. 0이나 음수 입력하면 에러뜹니다.


문맥색인 주석코퍼스를 가지고 있다면 연어의 빈도를 분석하는데 다음과 같이 프로그램을 이용할 수 있어요!

예시1. "눈물이" 뒤에 나오는 형태소의 빈도를 분석하고자 할 경우

CounterPP -i 한국어말뭉치.txt -o 눈물이빈도.txt -c 2 ^눈물이$ -s 1 -f 3


예시2. "흘리다" 앞에 나오는 단어의 빈도를 분석하고자 할 경우

CounterPP -i 한국어말뭉치.txt -o 흘리다빈도.txt -c 3 ^흘리다 -s -1 -f 2




신고
이 댓글을 비밀 댓글로