WordCounting
e-mail: gerecter at gmail.com | 처음 | 업데이트목록 | 가나다순목록 | 지도 | 검색 |
얼마전에 "영화 평론을 평론하는 기계 http://gerecter.egloos.com/33... "라는 글에서, 영화평에서 사용되는 단어들의 빈도를 헤아려서, 자신의 글이 얼마나 어떤 평론가의 글과 비슷한지를 계산하는 것에 대해 이야기 해 본 적이 있습니다.

그렇다면, 대통령 선거 후보와 나는 얼마나 비슷한가? 하는 것도 같은 방식으로 계산해 볼 수 있지 않겠습니까. 그리하여, 다음 페이지를 만들었습니다.

링크: http://gerecter.100webspace.n...

통계상의 한계

당연히 최소한의 cross Validation 도 제대로 수행하지 않은 매우 날림으로 만든 모형으로 제작되었습니다. 따라서, 단지 재미로 보셔야 합니다. 또한, 모든 자료는 페이지 내부에 들어가 있고, 계산이 Javascript 로 클라이언트 에서 이루어집니다. 그러므로, 웹브라우저의 부담을 줄이기 위해 헤아리는 어절의 한계값이 3000 어절까지로 정해져 있습니다.

어절 중에,

- 영문으로 된 어절
- 2번째 글자 이후에 "당"이라는 말이 나오는 어절 (특정 당명의 언급은 계산에서 제외하기 위해)
- 후보 이름이 직접 나오는 어절 (후보 이름 자체의 언급을 계산에서 제외하기 위해)
- ~다 로 끝나는 어절/습니 가 들어가는 어절 (어미의 경어체/평어체 차이에 지나치게 의존하는 경우를 제외하기 위해)

등은 계산에서 제외하고 있습니다.

그렇다고는 해도 근본적인 문제는 있습니다. 단지 어절의 반복 언급만을 근거로 비슷한 정도를 헤아리기 때문에, 그 긍정/부정은 판별하지 않는다는 것입니다. 즉, 특정 후보가 "우리도 이제부터 변신합체 로봇을 실전배치해야 한다"라는 주장을 펼치는 이야기를 많이 하고, 자신은 그에 대한 반박글, 비난글을 많이 썼다면, 두 사람은 상극이 되어야 하지만, 둘 다 "변신합체" 라는 어절을 비정상적으로 많이 사용했기 때문에, 두 사람의 글은 비슷한 것으로 계산되어 버립니다.

또, 후보들의 어휘 자료간에 기본적인 직교성 문제도 있습니다. 예를 들면, 누구나 많이 쓰는 단어, 블로그에 자주 쓰일만한 단어를 주로 사용한 후보는 특별한 일치 없이도 대체로 비슷한 것으로 자주 평가되기 마련입니다. 그에 비해, 특정 논제에 집중한 후보의 경우 특정 단어를 부분적으로 많이 사용하기에 다른 단어에 비해 그 단어가 특징으로 지나치게 강조되는 문제가 있습니다. 예를 들면, 권영길 후보는 "노동자"라는 어절을 자신의 모든 말 중에서 8번째로 많이 활용하는데, 다른 후보는 사용하는 어절 100위권이내에 "노동자"라는 어절을 쓰는 사람이 아무도 없습니다. 이렇게 되면, 여러분이 "노동자"라는 말을 몇번 사용하면 권영길 후보와 매우 비슷하게 평가됩니다. 또 그 반대로 권영길 후보는 대부분의 글에 대해서는 통상적으로 매우 독특한 후보로 평가되어 왠만해서는 유사성이 낮은 점수로 나옵니다.

모든 후보들의 자료는 후보들 홈페이지의 소개글과 후보 블로그가 있는 경우 그 RSS에서 발췌하였습니다. 대부분의 후보들이 블로그를 그냥 보도자료/신문기사 쌓아두는 곳으로 활용하면서 대강 박아놓고 있을 뿐이기에, 후보 특징 보다, 블로그 운영 방식, 블로그에 쌓여 있는 신문기사의 어투가 실제 후보의 어투보다 더 많이 반영된다는 점도 참고하시기 바랍니다. 아마 정말로 후보들이 직접 자신의 이야기를 블로그에 정성스레 게제하고, 블로그를 제대로 운영해 나간다면, 이러한 어절 빈도 유사성 계산도 좀 더 의미를 가질 수 있게 되지 않겠나 생각해 봅니다.

모든 계산 방식과 관련 자료는 웹페이지 소스코드 내에 자바스크립트로 포함되어 있으며, 이것은 악의 없는 목적이라면, 누구나 마음대로, 수정, 개량, 재배포 하실 수 있습니다.

사용 계산 방식

우선 각 후보들의 웹페이지에서 수집한 어절을 헤아려 상위 50개 어절을 분석에 활용하기 위해 JavaScript 배열에 저장해 놓습니다. 또 입력된 어절은 상위 20개만 분석에 활용합니다.

이것을 입력된 어절을 헤아린 것과 비교하여, 일치하는 것이 있을 경우

1000+(51-일치된 후보 어절 순위)*(21-일치된 입력 어절 순위)

를 합산하여 순위를 헤아 립니다. 즉, 특정 후보가 1위로 많이 사용한 어절과 입력된 것 중에서 2위로 많이 사용된 것으로 헤아린 어절이 일치한다면,

1000+(51-1)*(21-2)

를 점수에 합산하는 것입니다.

이것은 최소한의 cross validation 의 결과 작성된 방정식으로 얼마는지 변형시킬 소지가 있습니다.


(마지막 변경 UNIX clock : 1193282743 / Common clock 2007.10.25, 12:25 pm )
다음글 Similarity


gerecter의 다른 웹사이트들: 영화/책 - 도시전설 - 고전전산 - 평론기계