한국어정보의전산처리강좌소개 2019. 3. 5. 박진호 ( 서울대국문과교수 )
이강좌에서익힐것들 컴퓨터에서의텍스트처리의기초이론학습 컴퓨터메모리구조, 문자코드, 정규표현 웹으로부터데이터 ( 텍스트, 이미지등 ) 수집 (crawling) command line tools (wget, curl) + shell script, Python 등 전산화된대량의텍스트데이터에서원하는정보를추출하기 기존소프트웨어이용 : 콘코던서, command line tools 코딩 / 프로그래밍 ( 스크립트작성 ): 프로그래밍언어 Python 이용 추출된정보를더유용한형태로가공, 변형하기 코드변환, 형태소분석기 command line tools, R, Python 등이용 추출된정보에대한통계적분석, 시각화 R 이용 : base R, ggplot2, tidyverse 등의패키지이용 다변량통계분석 : 다차원척도법 (MDS), 군집분석 (clustering)
인문학전공자들도이런훈련이필요한이유 역사학, 철학, 문학, 언어학등인문학의각분야는전통적으로많은양의텍스트를읽고이해하고, 어떤문제의식을바탕으로이텍스트자료로부터어떤정보를추출하여연구를해왔음. 대량의인문학텍스트자료가전산화되고컴퓨터기술이발전함에따라, 일일이꼼꼼히읽지않은대량의자료로부터컴퓨터를이용하여원하는정보를추출하여연구에이용할수있게됨. 비교적소량의자료를꼼꼼히읽는식으로는얻을수없는정보, 통찰력, 자료상의패턴을, 이러한신기술로얻고알아낼수도있음. 데이터과학, 빅데이터, 네트워크이론, 기계학습, 인공지능등의기술이발달함에따라이를인문학연구에이용할수있는전망도생김. 기업에서도이런훈련이된사람에대한수요가늘고있기때문에, 연구자가되기보다는기업에취업하려는학생들에게도유용함.
사례 1: 문자열검색 현대한국어에서부사 비록 이나타나면그절끝의연결어미로 - 어도, - 더라도, - 을지라도, - 은들 등이나타남. 중세한국어에서부사 비록 과호응하는연결어미에는어떤것들이있었을까? 정규표현 (regular expression) 을지원하는콘코던서를이용하여해당용례를쉽게추출할수있음. EmEditor, Antconc, Uniconc 등 비록 으로시작하고 도 로끝나는문자열을검색하기위한정규표현 : 비록 [^\n]+? 도
사례 2: 접미사 - 스럽 - 연구 접미사 - 스럽 - 에대해논문을쓰려고할때, - 스럽 - 을포함한단어목록을사전에서추출하고말뭉치에서빈도를추출할수있음. 표준국어대사전에서목록추출 : 961 개 $ <sdic/sdic_u8.txt grep -E "#2[^#]* 스럽 " awk F # '{print substr($2,2)} 고려대한국어대사전에서목록추출 : 864 개 $ <korea_dic.txt grep -E "^<lem>.* 스럽 awk -F > {print $2} 고려대한국어대사전은 Daum 에서서비스하는것을 web crawling 으로수집한것. 말뭉치에서 스럽 앞에오는말의빈도를추출할수있음. $ < 경향 2008 년.txt tr " " "\n" grep " 스럽 스런 스러우 스러운 스러울 스러움 " awk -F" 스 {print $1}' sort uniq -c sort -gr 신문말뭉치는한국언론재단에서서비스하는것을 web crawling 으로수집한것
사례 3: 스포츠경기전적통계 잉글랜드프리미어리그 (EPL) 홈페이지에서각시즌의모든경기의전적데이터를제공하고있음. http://www.football-data.co.uk/mmz4281/1617/e0.csv 여러분이영국축구협회직원인데, 경기가있었던날마다 위의데이터는다른직원이입력하고 여러분은이데이터를바탕으로업데이트된종합전적표를만들어야한다고치자. 프로그래밍언어 Python 으로간단한스크립트를짜서실행하면됨.
사례 4: 시험성적처리 여러분이고등학교교사이고, 어느반의담임을맡았는데 국어, 영어, 수학 3 과목의시험이있었고 3 개과목담당선생님으로부터각각성적표를받았다고치자. 여러분은담임으로서이모든과목의성적표를하나로합쳐서 학생별총점, 평균, 석차 과목별평균, 표준편차등의통계를내야한다. 특정과목과과목사이에특별한상관관계가있는지도알아보고싶다. 모든과목성적표를하나로합치는일 : command line tool 인 join 이나 csvjoin 으로할수도있고, R 에서할수도있음. 기타모든통계는 R 에서처리할수있음. 엑셀을이용할수도있으나, 데이터양이많을때는비효율적임.
사례 4: 시험성적처리 우선국어성적표와영어성적표를통합 $ csvjoin -c name kor.csv eng.csv >kor_eng.csv 국어 - 영어성적표와수학성적표를통합 $ csvjoin -c name kor_eng.csv math.csv >kor_eng_math.csv command line tool 인 awk 를이용한학생별총점, 평균계산 $ <kor_eng_math.csv awk -F, BEGIN{OFS=, }{sum=$2+$3+$4; avg=sum/3; print $0, sum, avg} >kor_eng_math_sum_avg.csv awk 를이용한과목별총점, 평균계산 $ <kor_eng_math.csv awk -F, 'BEGIN{OFS=","}{k_sum+=$2; e_sum+=$3; m_sum+=$4} END{ n=nr-1; print k_sum, e_sum, m_sum; print k_sum/n, e_sum/n, m_sum/n}' R 과 Rio 를이용한과목별총점, 평균, 표준편차등계산 총점 $ <kor.csv Rio -e 'sum(df$kor) ( 영어, 수학도마찬가지 ) 평균 $ <kor.csv Rio -e 'mean(df$kor) 표준편차 $ <kor.csv Rio -e 'sd(df$kor) 기초통계요약 $ <kor.csv Rio -e 'summary(df$kor)'
사례 4: 시험성적통계처리및시각화 과목간상관관계 : cor(score$kor, score$math) (R console 에서의명령 ) 또는 with(score, cor(kor,math)) $ <kor_eng_math.csv csvcut -c kor,math Rio -f cor (command line 명령 ) 국어 - 수학 : 0.311 국어 - 영어 : 0.478 영어 - 수학 0.582 boxplot 그리기 : boxplot(score$kor, score$eng, score$math) 또는 with(score, boxplot(kor,eng,math)) scatterplot 그리기 : ggplot(score, aes(kor,math)) + geom_point()
사례 5: wordcloud 분석 일정한말뭉치에서각단어 / 형태의빈도를추출한뒤 R 의 wordcloud 패키지를이용하여빈도에따라단어 / 형태의크기를크게보여주는시각화를할수있음. 경향신문 2000 년말뭉치를형태소분석기로분석한뒤 울산대에서개발한 UTagger 사용 각형태의빈도추출 $ < 경향 2000 년.txt.tag tr " " "\n" tr "+" "\n" sort uniq -c > 경향 2000.txt.tag.freq 빈도형태 포맷의파일을 형태, 빈도 포맷으로변형 $ < 경향 2000.txt.tag.freq awk -F"/ {print $1}' awk -F" {print $1}' awk -F" BEGIN{OFS=","}{print $2,$1}' > 경향 2000.txt.tag.freq.csv wordcloud(words=c$form, freq=c$freq, min.freq=1000) 1000 회이상출현한단어들의 wordcloud 표시 wordcloud2(data=c) : 컬러, html5 포맷 (interactive)
사례 6: 계량적문체분석 작가들의문체에대해전통적으로인상적인 2 분법적분류가흔히행해져왔음. 간결체대만연체, 강건체대우유체, 서사적문체대묘사적문체등 문체특성을계량적으로측정하여문체연구를객관화할필요가있음. 누구의문체와누구의문체가더가까운지 ( 비슷한지 ) 를측정하는것도객관적지표가필요함. 통계기법 ( 주로다변량통계기법 ) 을이용하면기존연구에서엄두를내지못했던것도탐색할수있음. 106 개의한국근현대소설에대해다차원척도법 (MDS), 군집분석 (clustering) 등을해본결과 : 다음페이지.
사례 7: 성리학의키워드에따른문집분류 사상사연구자들이성리학에서중요시하는 30 여개의키워드를대상으로조선시대학자들이이키워드를어떻게사용했는지연구해왔음. " 經權 ", " 恭敬 ", " 鬼神 ", " 禮樂 ", " 佛老 ", " 義利 ", " 一貫 ", " 中庸 ", " 中和 ", " 忠恕 ", " 忠信 ", " 太極 ", " 通書 ", " 皇極 ", " 敬 ", " 德 ", " 道 ", " 禮 ", " 理 ", " 命 ", " 性 ", " 誠 ", " 信 ", " 心 ", " 意 ", " 義 ", " 仁 ", " 才 ", " 情 ", " 志 ", " 智 " 수백여개의문집텍스트 ( 역사정보통합시스템에서 crawling 한것 ) 에서이들키워드의사용빈도를조사하여 다변량통계분석을해보았음. 이연구나문체분석에서분류를위한새로운지표를더개발하고 통계적분류결과가질적분석결과나연구자의직관과부합하는지검증할필요가있음.
통계기법을이용한기타연구사례 영어수여동사를 3 형식으로쓸지 4 형식으로쓸지에영향을미치는요인에대한 Log-linear model 분석 ( 스탠포드대 Bresnan, 이대최혜원 ) 종속변수는 2 분변수, 독립변수는여럿임 ( 연속형변수, 범주형변수가능 ) 독립변수 : R 과 T 의한정성, 유정성, 길이 ( 음절수 ) 등 단형부정문을쓸지장형부정문을쓸지에영향을미치는요인에대한 Log-linear model 분석 ( 고려대강범모 ) 독립변수 : 동사 / 형용사, 고유어 / 한자어, 본용언길이 ( 음절수 ) 등 여러언어적변수를바탕으로한텍스트타입분류 Biber, 숭실대김용진, 고려대강범모 / 김흥규 / 허명회 인자분석 ( 또는요인분석, factor analysis) 이용 문예지별비평가들의문체분석 ( 카이스트 / 성대대학원생김병준 ) 주성분분석 (PCA) 이용
이강좌의강조점 1: command line tools 윈도우用 GUI 를가진프로그램도일부사용하기는하지만 콘코던서, 형태소분석기, 엑셀등 command line tool 에초점을맞춤. command line tool 의장점 각각의 tool 은한가지일을잘함. (Unix 철학을반영 ) 대개 free 이고또한 open source 임. 70 년대이후오래도록쓰이면서유용성이검증되었음. 복잡한과제를수행하고자할때에는, pipe 로여러 tool 을연결해서쓰면됨. 자기스스로만든스크립트 (shell 스크립트, Python 스크립트등 ) 와도연결해서쓸수있음. 매우많은수의파일을일괄처리할때유용함. (shell script 이용 ) 초보자는대개 GUI 를선호하나, 컴퓨터를다루는수준이높아질수록 command line tool 을선호하는경향이있음. cml tool 은윈도우운영체제에서도쓸수있으나 (Cygwin), 리눅스운영체제를이용하는것이더좋음. Python 라이브러리사용, 기계학습, 딥러닝으로나아가려면더더욱그러함.
이강좌의강조점 2: 코딩하여스스로만들기 남이만들어놓은 tool 이라도사용법을잘익혀서유용하게잘쓰면좋기는하나 자신의필요 / 요구에딱들어맞지않을때가많음. 남이만든 tool 들을여러개연결해서당면과제를수행할수있기는하나처리속도가너무느릴때가있음. 자기필요에딱맞게당면과제를신속히수행할수있는프로그램을스스로만들수있으면매우유용함. 프로그래밍언어를배우는것은그리어렵지않음. 프로그래밍언어의다양화, 진화에따라 low level 의궂은일 ( 하드웨어, 메모리등의리소스제어 ) 은컴퓨터 / 언어가알아서처리하고, 프로그래머는 high level 의과제에집중할수있게되었음. 직관적이고, 자연언어에상당히가까운프로그래밍언어들이속속출현
이강좌의강조점 3: Python 배우기쉽고널리쓰이는스크립트언어로 Python 과 Ruby 가있음. data science, 기계학습을 library 가잘되어있고산업계에서수요가압도적으로많기때문에 Python 을선택함. Python > Ruby Python 사용자폭이넓음. 다양한라이브러리가나와있음. 스크립트언어치고속도가빠른편임. 수학, 과학관련라이브러리가강점. 최근 data science 에서 R 과더불어각광을받고있음. Ruby 사용자폭이상대적으로좁음. 라이브러리가상대적으로적음. 속도가상대적으로느림. 수학, 과학관련라이브러리가단점. data science 에서상대적으로덜쓰임. Ruby > Python 상대적으로자연언어에서멂. Syntax 의일관성이떨어짐. Object-oriented 한성질에서벗어날때가있음. 직관적이고자연언어에매우가까움. Syntax 가매우일관적임. 철저하게 object-oriented 함. 웹관련라이브러리 : Ruby-on-Rails
이강좌의강조점 4: 통계분석 사회과학은일찍부터통계가널리쓰여온데반해 인문학에서는통계가상대적으로덜중요시되어왔음. 인문학도들에게통계를체계적으로교육하고훈련시키는시스템이제대로안되어있음. 이에따라인문학자들의연구에서통계에대한무지로인한어처구니없는오류가자주발생함. 사례 1: 김영랑의시에서공명음 ( ㅁ, ㄴ, ㅇ, ㄹ ) 의빈도와비율을세어보았더니매우높게나왔다. 결론 : 김영랑은공명음을즐겨쓴다. 사례 2: A 의작품의평균문장길이는 10.4 어절, B 의작품의평균문장길이는 11.0 어절로나타났음. 결론 : A 보다 B 가만연체문장을쓴다. 통계는그리어렵지않음. 수학적기반까지확고하게다지려면어려울수있으나 기본개념을이해하고다양한기법을어떤때에쓰면좋은지잘알아두는정도는인문학도들도쉽게할수있음.
수강생유의사항 매시간학습한내용을반드시복습해야함. 수업시간에다룬데이터외에자기스스로데이터를만들거나웹등에서입수하여, 학습한분석방법을새데이터에적용해보는연습을스스로많이해야함. ( 복습 / 연습한것을숙제로제출 ) 머리로아는것과실제로타이핑해가며실습하는것은엄청난차이가있음. ( 머리로만아는것은별로쓸모가없음 ) 동일한 task 를여러방법으로해결해보는연습필요. 학생스스로다양한 task 를생각해내어스스로해결을시도해보고, 잘안되면웹등에서검색을통해해결하고, 그래도잘안되면교수자에게요청할것.
Ubuntu 운영체제설치 cml tool 과 Python 코딩을위해가장좋은환경은리눅스운영체제이고, Ubuntu 는리눅스중에서가장쉬움. Ubuntu 운영체제설치옵션 1. 자기컴퓨터의운영체제를아예 Ubuntu 로바꿈 2. 윈도우운영체제와 Ubuntu 둘다설치해서 dual booting 으로함. 3. 윈도우호스트운영체제에 Virtualbox 를통해 Ubuntu 게스트운영체제를설치. 강의실의실습컴퓨터에는이미윈도우운영체제가설치되어있고, 이를함부로삭제할수없으므로, 3 번선택. 매킨토시운영체제의최신버전은리눅스커널을기반으로하고있기때문에, cml tool 과 Python 프로그래밍을하는데아무문제없음. 단, 장차 GPGPU 를이용한딥러닝을하는데에는매킨토시가한계가있음. 이번학기수업을진행하는데는매킨토시를써도되나, 장기적으로는 Ubuntu 사용을권장함.