2SD rule (2표준편차 법칙)

2SD Rule (2표준편차 법칙, To understand variability; 가변성을 이해하기?)

Super crunchers(슈퍼크런처, Ian Aires저) 라는 책에 있는 내용 중 2SD라는 용어가 나와서 궁금하던 차에 내용 일부를 정리해 둡니다. 

슈퍼크런처는 기술서적이라기 보다는 교양서적입니다. “직관보다는 데이터분석에 입각한 의사결정에 중점을 두는 것이 옳다”라는 내용인데요.  전문가의 직관에 의존한 의사결정도 좋지만 데이터에 입각한 근거있는 결정도 필요하다는 내용입니다.  데이터마이닝에 관심이 있는 사람은 한 번 읽어봐도 좋을 듯 싶습니다. 어려운 내용은 아닙니다만 생각을 좀 해야 하는 부분은 있습니다.

이 책에 통계에 대한 내용이 나옵니다.

2표준편차법칙(2SD rule)은 책의 후반부에 나오는데 잘 보지 못하던 용어라서 여기저기서 내용을 찾아서 정리해 두려는 것입니다.

정보를 찾다 보니 이미 잘 알려진 내용을 다른 방식으로 표현한 것이고 일반적으로 생활에서 어떻게 쉽게 적용이 가능한지 보여주는 일종의 단편적인 예와 같은 것입니다.

2SD는 어떤 정규분포변수가 그 평균치의 -2 표준편차와 -2표준편차내에 위치할 확률이 95%가 된다는 말입니다. 여기서 ±2SD는 2의 의미는 1.96을 반올림해서 나온 근사치값으로 보입니다. 그래서 ±3SD rule (2.54를 반올림해서 나온것이라고 생각하는데 반올림하기에는 반올림한 차이가 좀  큰 것 같아서 조금 그렇네요)일 경우에는 99% 라고 계산하는 계산식도 자료를 찾던 중 쉽게 찾아 볼 수 있었습니다.

제가 가진 통계학 책들에는 2SD, 3SD라는 용어를 사용하지 않았기 때문에 무슨 용어인가 궁금 했습니다만 생각보다 단순한 것이었습니다. 용어는 저자가 직접 만들어낸 것 같기도 한데 정확하게 저 용어를 사용해도 되는지는 모르겠습니다. 저자가 유명한 사람이고 하다보니 이런 용어 새로 만든다고 해서 뭐라고 할 사람은 별로 없을 것 같습니다. 영문 자료를 찾다 보니 책의 영향인지는 모르겠지만 같은 용어를 쓰는  분들도 더러 있었고 아닌 경우에도 대충 감을 잡을 만한 비슷한 내용을 생각보다 많이 볼 수는 있었습니다. 아래는 찾은 내용들과 책을 정리한 내용을 잊어 버릴까봐 기록해 둔 것입니다.

2SD rule: 정규분포변수가 그 평균치의 +-2표준편차 내에 존재할 확률은 95%이다.

먼저 슈퍼크런처 책에 나와 있는 내용들중 예제를 Q/A형식으로 그대로 조금 거쳐서 적은 것입니다.

책의 질답 내용

Q. 사람의 IQ는 평균이 100이고 표준편차가 15인 정규분포를 따른다. 그러면 사람들의 IQ는 대체 얼마라는 말인가?

A. 2SD 법칙에 의하면 95%의 사람들의 IQ는 70(100에서 2표준편차를 뺀값)에서 130(100에서 2표준편차를 더한 값, 즉 15×2=30) 사이에 존재한다. 2SD 법칙을 사용하면 표준편차값을 분산도에 대한직관적인 표현으로 쉽게 변환할 수 있다. 대부분의 사람들은 IQ가 70 ~ 130사이이다. IQ의 분산도가 더 적다면, 즉 표준편차가 5라면 95%의 사람들을 포함하는 IQ의 범위는 훨씬 작아진다.  다시 말해 95%의 사람들이 IQ가 90과 110사이라고 말할 수 있다.

Q. 유권자 1243명을 대상으로한 퀴니피액대학 여론조사에서, 상원의원 후보자 가운데 캘빈이 52%로 48%인 홉스보다 지지율이 높게 나왔다. 이번 조사의 오차 한계는 +-2% 포인트이다. 캘빈이 당선된다는 말인가? 아니라는 말인가?

A. 오차한계는 2SD에 해당한다. 오차한계가 2%포인트라고 나왔다면 이것은 1표준편차(1SD)가 1% 포인트라는 뜻이다. 우선 캘빈의 표준 지지율 52%에서 오차한계(즉 2SD)를 더하고 빼면 특정한 범위가 나온다. 즉 52 ±2% 이다. 2SD rule에 의하여 캘빈을 지지하는 유권자가 50% ~ 54% 사이일 확률이 95%라는 말이다. 캘빈의 지지율이 50% ~ 54%일 확률이 95%이므로 그의 실제 지지율이 종형곡선(정규분포, Normal distribution의 그래프)의 양쪽 가장자리에 속할 확률, 즉 54%이상 50%이하일 확률은 5%가 된다. 그리고 종형곡선의 양쪽 가장자리 부분은 면적이 동일하므로(정규분포 곡선은 아시다시피 좌우 대칭입니다), 캘빈의 지지율이 50%이하가 될 확률은 2.5%이다. 이는 캘빈이 앞서고 있을 확률이 97.5%라는 뜻이다.

Q. 레이번이 셜리를 51% 대 49%, 오차한계 2%로 앞서고 있는 경우, 신문은 이 경합을 두고 ‘통계적으로 볼 때 막상막하’라고 보도할 것이다. (맞는 말인가?)

A. (하지만) 이건 헛소리다. 레이번의 여론조사 결과는 50%에서 1표준편차만큼 높다(오차한계는 2표준편차이므로 1표준편차는 1%). 따라서 레이번이 앞서고 있을 확률이 84%라는 것을 알게 된다. 별다른 변수가 없다면 레이번의 당선이 유력한 것이다. 누구를 지지할지 결정 못한 사람들과 제3의 후보들이 있기 때문에, 많은 여론조사에서 경합을 벌이는 두 후보의 지지율은 합해도 100%가 되지 않는다. 그러나 지지율 우세 확률은 우리에게 예상 당선자를 말해준다.

※ 그럼 이제 책에 나와 있는 몇가지 정의를 다시 적어 둡니다.

통계적의 유의하다. 통계학자들이 어떠한 결과를 두고 ‘통계적으로 유의하다’ 라고 말하는 경우, 어떤 예측값이 다른 값과 2표준편차 이상 차이가 난다는 것을 뜻한다.

2SD의 또다른 측면 임의변수가 예상 평균값에서 2표준편차 이상 떨어져 있을 확률은 5%가 채 되지 않는다. (2SD rule에 의하면 95%가 평균으로부터의 2SD내에 있으므로 나머지는 5%가 됩니다)

오차범위 오차범위는 신뢰구간이 95%라면 그 95% 바깥쪽 넓이를 말하는 것이 아닙니다. 95%신뢰구간이라고 하면 이 신뢰 구간 안에 포함될 (표본이 아닌 실제값이) 확률이 95%인 것입니다.

다시 말해서 신뢰구간은 ‘확률±오차범위’ 에 포함될 확률이 95% 임을 말합니다. 물론 2SD를 따른다고 하는 경우에 그렇습니다. 아래는 무한모집단에서 표본허용오차 공식 ±1.96sqrt(p(1-p)/n) 또는 Z crit * stdev / sqrt(n) 표본수가 매우 큰 경우 즉, 무한모집단이면 보통 모집단은 정규분포(Normal Distribution, Gaussian Distribution)를 따르는 것으로 가정합니다.  자연계에서 아주 자연스러운 데이터의 확률 분포는 정규분포를 보편적으로 따릅니다. 그리고 샘플링의 경우 중심극한원리 (Central Limit Theorem)에 의해서 표본(Sample)의 양이 충분하다면 정규분포를 따르게 됩니다 여기서 표본 오차를 구하려면 표본집단에서의 표준편차나 모집단의 편차가 필요합니다.

모집단의 표준편차가 없는 경우 표본집단의 표준편차를 이용하게 되는데 보통의 경우 모집단의  표준편차(또는 분산)을 구할 수(알 수) 없는 경우가 대부분입니다. 아래는 여기저기서 긁어 모은 오차범위를 구하는 것에 대한 예제풀이입니다.

(워낙 마구잡이로 긁어오다 보니 출처가 엉망이 되었고 내용을 제가 많이 편집해서 출처는 따로 기재하지 못했습니다. 혹시 문제가 된다면 알려주시면 바로 지우도록 하겠습니다.)

예제

n(표본수) = 1000명 일 경우

보통 여론조사에서 1000명 많이 한다고 합니다. 그러고보니 뉴스에서 1000을 대상으로 했다고 하는 것을 많이 들은 것도 같지요. 하지만 1000명으로 고정되어 있는 것은 아닙니다.

(±)1.96 * sqrt(0.25/1000) = 0.0309. 여기에 100을 곱하면 3.09 1000명일 경우는 표본오차가 대략 (±)3.1% n(표본수) = 600이라면 같은 방식으로 계산해서 (±)4.0%

0.50.5를 하는 이유 여기서 0.50.5는 최대허용오차(중요)로 0.50.5=0.25로 보다 큰 숫자를 가지는 경우는 없습니다. 생각해 보니 진짜 그러네요. 0.1 * 0.9, 0.2 * .08, 0.3 * 0.7, … 모두 0.25보다는 작습니다)

예를 들어 0.4 * 0.6 = 0.24로 0.25보다 작으므로 0.50.5를 두고 최대허용오차라고 합니다. 언론에서 말하는 (±)3.0, (±)4.0 등도 모두 최대허용오차입니다.

1.96을 곱하는 이유 정규분포의 특성에 따르면, 신뢰구간 95%일 경우는 1.96을 곱하고, 99%일 경우는 2.54를 곱합니다. (위에서 말씀드렸지만 2SD(1.96)는 95%이고 3SD(2.54)는 99%입니다) 즉, 확률을 높일 경우 정규분포에서 보는 신뢰구간이라고 정의하는 영역이 넓어지게 됩니다.

위의 예(n = 1000)에서 1.96(95% 신뢰구간) 대신에 2.54(99% 신뢰구간)를 곱하면, 99%의 신뢰구간에서 (+-)4.0%가 됩니다.

추가 설명

보통 지지율이나 여론 조사 등에서 이 오차범위는 1.96*0.25/sqrt(n) 으로 구하는데, 당연히 n이 클수록 이 값이 작게 나오며 표본을 많이 뽑을 수록 오차범위가 줄어들어 좋습니다. 예를 들어보면, A후보가 49% B후보가 46% 지지율을 얻고 오차범위가 ±1.0%라고하면 A후보는 48%~50%의 지지율을 얻고, B후보가 45%~47%의 지지율을 얻을 확률이 95%라는 것이죠.

위의 책에서의 예제와 같은 것입니다. 확률이 두 번 겹쳐서 나오니까 헷갈리지만 그리 어렵지 않습니다. 어쨌든 여기서는 95%신뢰구간 하에서는 A후보가 B후보를 이기고 당선될 것이라고 생각할 수 있죠. A후보의 지지율 중 낮은 영역에 있는 48%가 B후보의 지지율 중 높은 영역에 있는 47%보다 크기 때문에 95%확률로 A후보가 당선된다는 얘기입니다. 물론 5%의 오차가 있기 때문에 아닐 수도 있겠지만 가능성이 적겠지요.

100%신뢰구간은 가능한가?

100% 신뢰구간은 -무한대에서 +무한대가 되어야 해서 현실에서는 성립이 안됩니다.

사용할 수가 없고 구간을 정할 수도 없는 것이지요. 보편적으로 신뢰구간을 정해야 하는 경우 대부분 95%신뢰구간을 사용하고 특별히 더 정확하게 알고 싶은 경우나 투표의 경합지역 같이 민감한 경우는 좀더 신뢰성을 높이기 위해서  99%를 사용하기도 한다고 합니다.

실제로 정규분포를 R이나 Prism, Excel등의 툴들을 이용해서 그래프를 그려 놓고 보시면 이해가 빠르니 시간날 때 한 번 그려보세요

포맷이 깨져서 다시 수정하다보니 틀린 내용이 있어서 일부 교정을 했습니다. 역시 전 멍청한가봐요.

웹페이지 골든 트라이앵글 – Golden triangle on web page

Golden triangle in web page (골든 트라이 앵글) 지난번 포스트에 ATF(Above the fold line; 이하 줄임) 얘기를 할 때 언급하지 못한 것 같아서 추가해서 포스트를 올려 봅니다. ATF를 얘기할 때는 보통 eye-tracking(기계장치로 사람의 눈동자를 추적해서 동선을 파악하는 테스트)의 결과에서 나온 Golden-triangle에 대해서 언급하는 경우도 많습니다. Golden-triangle은, 검색페이지나 웹페이지에서 사용자에게 노출되면서 시선이 집중되는 영역을 적외선감지기에서 보여지는 온도처럼 표기한 그림을 그리고, 거기서 시선이 가장 많이 집중(focusing)되는 역삼각형모양의 가장 중요한 영역을 말합니다. wpid-google-eye-scan-2010-10-20-03-442.jpg 위와 같은 그림입니다 (인터넷에서 줏어왔습니다. 저희 회사것은 공개불가 ‘o’) 위 그림은 유명한 구글의 검색결과에 대한 eye-tracking한 결과입니다. 대부분의 검색결과 사이트들은 위와 위사한 역삼각형 모양의 hot-spot(hot-focusing) 영역을 가지게 됩니다. (적어도 좌철방식을 쓰는 나라에서는 그렇습니다. 우철방식의 아랍권은 어찌되는지 모르겠네요. 궁금할 따름입니다) eye-tracking (eye-scan)은 특별한 장치를 설치하고 선정된 사용자에게 임무을 부여하거나 또는 무작정 서핑(검색)을 시켜서 눈동자의 동선과 머무 시간, 마우스의 위치와 클릭등을 추적하는 user test를 말합니다. 장치가 비교적 고가이고 사용자를 선정해서 테스트 하는 것도 만만치 않기 때문에 환경이 마련되어 있지 않은 곳에서는 쉽게 하기는 힘든 테스트입니다. 또 운영하는데 경험과 지식도 필요합니다. 아무튼 테스트 결과는 저런식으로 많이 display해서 보여주게 되는데 색깔이 빨갛게 집중된 곳일 수록 사용자의 시선이 많이 머문곳입니다. 즉 더 중요하게 관리되어야 하는 영역이라는 뜻도 됩니다. 보편적으로는 위 그림과 같은 성향을 띕니다만 성향일 뿐이고 실제로 eye-tracking을 해보면 모든 사이트의 결과가 천편일률적으로 저렇게 나오지는 않습니다. 즉, 다른 페이지의 결과를 가지고 대충 유추해서 참고하는 것은 괜찮지만 정확하지 않을 수 있으므로 환경이 마련될 수 있다면 자기가 운영하는 웹페이지의 시선이 집중되는 곳을 확인하기 위해서는 eye-tracking을 직접 해봐야 합니다. 굉장히 재미있는 결과를 볼 수도 있습니다. 차이점이 나오는 대표적인 요인이 UI나 layout의 배열같은 visual의 차이에도 많이 있고, 브랜드에 대한 성향을 미리 파악하고 있다거나 습관 또는 뭔가 부수적인 영향에 의한 것들에도 사용자가 당연히 interaction(반응)을 합기 때문입니다. 구글이 저렇기 때문에 내 웹사이트도 저럴 것이다라고 보편일반화 하는 분들이 있는데 저는 오류라고 주장하고 싶습니다. 가장 일반적으로 쉡게 범하는 오류는 내 사이트를 golden triangle에 잘 부합시키도록 design과 UI를 크게 바꾸었는데 결과가 다소 다르게 나온다고 말하는 경우입니다. 당연히 다릅니다. 그래서 새로 바뀌는 UI에 대해서도 미리 eye tracking이 되어야 합니다. 또는 bucket test등을 통해서 미리 살펴보아야 합니다. 그래서 UI같은 것도 한꺼번에 바꾸는 것이 아니라 서서히 바꾸는 것이고 큰 틀을 벗어나는 모험을 할 것인지 안할 것인지를 결정하는 것도 중요합니다. User의 반응은 우리가 생각하는 것보다 매우 상대적이고 유연하고 학습이 잘되어 있고 나름대로 타당성을 가지고 있게 마련입니다. 가장 재미있는 오류라고 생각하는 것이 golden triangle에 붉은색 영역에 비싼 광고를 배치하면 잘 되겠네 라고 생각하는 것입니다. 반드시 그렇지 않을 수도 있습니다.

Above The Fold line

접선 위 영역 (Above The Fold Line) 줄여서 ATF 혹은 ATFL 이라고 많이 부릅니다.
특별한 행동을 취하거나 노력을 들이지 않고 어떤 출판물에서 보여지는 영역을 의미합니다. 즉 순간적으로 시선이 닿았을 때 노출되는 hot spot 영역을의미합니다. 웹검색이나 웹서비스, 웹포탈에서는 일반화된 용어입니다만 관련분야외에서는 이 용어를 잘 모르더군요. 행동과학등이나 마케팅 측면에서도 상당히 중요한 용어입니다. 수정하면서 스크린샷을 한 번 넣어봤습니다. ATFL라는 용어의 어원은 신문(News paper)등을 가판대에서 판매 할 때 반으로 접어서 판매하는데 접혔을 때 보통 헤드라인이 보이게 되고, 그 페이지에 중요한 뉴스(아마도 헤드라인)가 보이게 되서 관심이 있는 사람은 신문을 구매 하게 되는데요. 거기에서 시작된 용어라고 합니다. 웹페이지에서 ATF는 처음 사이트에 접속했을 때 또는 검색서비스에서 검색어를 입력하고 난 결과페이지에서 웹 브라우저에서 스크롤바를 내리지 않고 눈으로 볼 수 있는 페이지영역을 말합니다.
일반적인 디자인이나 출판에서 말하는 것과는 다소 차이가 있습니다. 웹브라우저는 종이처럼 접히는 것은 아니니까요. 스크린샷에서는 아래쪽 빨간 가로선 까지의 영역을 말합니다. 오른쪽에 보시면 스크롤을 더 내려야 볼 수 있는 영역이 많이 있음을 알 수 있습니다. 참고로, 이 때의 웹 브라우저의 창의 크기는 전체화면을 다 차지하고 있는 전체 크기(full size)의 상태인 것으로 간주합니다. 이렇게 간주하는 것은 사용자들 마다 창 크기가 다르긴 하지만 보통의 사용자는 웹 브라우저를 거의 최대에 가까운 사이즈로 놓고 사용하기 때문입니다. 해상도는 그 당시에 가장 많이 보유되어 있는 모니터사이즈와 그래픽카드의 성능에 따라 달라지는데 현재는 1280*1024 정도로 봅니다. 해상도는 계속해서 모니터링해서 주 대상이 되는 사용자들의 주 해상도를 인지하는 것도 중요합니다. 사용자들의 모니터가 고성능이 되면 이 기준도 달라지겠지요. ATF를 따로 용어로 만들어서 말하고 언급하는 가장 중요한 이유는 하나입니다. 사용자의 클릭의 대부분을 받는 영역이기 때문에 잘 이 영역에 뭔가를 잘 배치해야 좋은 결과 즉, 금전적 이익이나 서비스의 기능을 제대로 보여줄 수 있습니다. 즉, 이 영역을 어떻게 활용하는 가에 따라서 서비스의 흥망이 결정될 수도 있습니다.
* 사용자의 시선을 받는 가장 첫번째 영역(첫번째 인상을 줄 수 있는 영역)
* 이 영역밖의 페이지, 그러니까 스크롤바(scroll bar)를 내려서 봐야 하는 영역은 사용자의 행동과 노력을 요구합니다. 그런 것을 잘 하지 않는 사용자들도 상당히 많습니다
* ATF밑의 페이지에 있는 정보를 보기 위해서는 스크롤바를 – 마우스나 단축키를 이용해서 – 내려야 하는데 ATF밖의 1차적으로 사용자의 첫번째 시선에서 박탈당하기 때문에 노출될 기회마저 박탈당할 확률이 매우 높아서 이 쪽에 위치한 링크들은 클릭비율이 높지 않습니다. ATF 밖의 영역에 대해서 말하자면 이 부분의 문제는 사용자가 이 부분의 정보를 확인하기 위해서는 노력이 든다는 것입니다. 즉, ATF안에 원하는 정보가 없을 경우 사용자는 다음과 갈은 행동 패턴 중에 하나를 취하게 됩니다.

  • 스크롤바를 눌러서 결과를 확인하거나
  • 다른 곳(다른 사이트)으로 이탈하거나
  • 또는 ATF안에 있는 링크 중 가장 그럴듯한 것을 클릭 정해진 순위는 없고 웹사이트의 성향이나 property(웹사이트 안에서의 단위 서비스)에 따라 사용자가 많이 취하는 행동들의 우선순위가 달라집니다. 앞서 말씀드렸듯이 보통 사용자들은 스크롤이 긴 경우에는 스크롤바를 끝까지 내리려 하지 않습니다. 사용자들은 매우 성급하고 힘들게 뭔가를 찾는 행위를 싫어합니다. (행동과학의 연구 결과가 그렇다고 합니다) 이 것은 아이트래킹 테스트 (eye tracking test; 사용자의 눈동자를 추적해서 행동패턴을 추적하는 테스트)의 결과에도 빈번히 나오는 것인데 이제는 정말 흔한 리포트입니다. 그리고 스크롤바를 내리면 내릴 수록 더 중요하지 않을 것이라는 사용자 나름대로의 판단을 하기 때문에 동일한 정보가 노출되도 사람들 마음속에서는 어떤 링크나 정보가 페이지의 하단부에 있을 수록 weighting해서 중요도 점수를 스스로의 마음속에서 자연스럽게 감점해 버립니다.

사용자들도 하단부에 위치한 것들은 랭킹에 밀렸거나 많이 중요한것이 아니라는 것을 알고 있다는 것인데 이미 사용자들도 웹페이지의 노출방식에 훈련이 되어 있기 때문입니다. 사용자들은 이미 역으로 웹서비스의 천편일율적인 노출방식에 대해 습관 또는 학습된 행동으로 이러한 reaction을 취하는 것이고 이제 는 이에 역행하는 노출방식이나 디스플레이 방식은 스스로 거부하려합니다. 다만 리스팅형(나열해서 뭔가를 보여주는 형태)이 아닌 Front door page(포탈사이트의 맨 처음 페이지)의 경우에는 패턴이 다른 것으로 알고 있습니다만 이쪽은 제 관심밖이라 아는 것이 많지 않습니다. ATF에 관한 세부적인 것이나 가장 중요한 hot spot(자주 노출되거나 클릭하는 영역), click rate(링크 클릭 비율), behavior pattern(원하는 것을 찾아가는 행동 패턴)은 UI(User interface)나 여러가지 세부적인 요소에 따라 다소 차이가 있을 수 있습니다만 기본적으로는 거의 모든 웹사이트가 유사한 것으로 알고 있습니다. 보통, 어떤 검색포탈사이트의 검색결과에서 두 번째로 시선을 받는 중요한 위치는 보통 광고가 차지합니다. 검색 포탈이라면 키워드광고가 나오는 곳입니다.
구글, 네이버, 야후 다 똑같습니다. 구글은 이스트레일(east rail; 검색결과 페이지에서 오른쪽 컬럼)에 나오지 않느냐? 라고 물으시는 분이 있는데 찾아 보시면 중앙 부분에 광고가 노출 되는 것들이 있습니다. 첫번째의 시선받는 곳은 메뉴나 주요기능이 차지합니다. 검색포탈이라면 검색입력상자(Search bar)나 그런것들이지요. 여기에 광고를 싫지는 않습니다만 최근에는 검색입력상자에 키워드등을 광고형태로 노출해서 검색을 유도하는 것도 보실 수 있습니다. 보통의 포탈사이트에서 왜 광고나 각종정보를 첫페이지의 상단부에 덕지덕지 붙이고 가능한 중요한 단어들만 나열해서 백화점식으로 나열하는지에 대한 첫번째 이유중 하나와도 ATF는 관련이 있습니다.
저렇게 하지 않으면 안될까라는 생각을 많이하고 천편일률적인 나열방식을 거의 모든 포탈이 채택하고 있어 차별화가 안된다는 것을 알고 있지만 바꾸려고 해도 이미 많은 사용자의 행동패턴이 저런 방식에 익숙해져 있어서 그렇게 하지 못하는 것입니다.

형태소분석기와 워드세그멘터

형태소 분석기 정보 모음 (Information POS tagger, word segmenter)

검색과 관련된 업무(정보처리기술과 관련된 직종 또는 관련 업무)를 하게되면 뭔가를 구현하거나 어떤 데이터를 처리해야 할 때 모든 것에 기본적으로 부딪히는 문제의 첫번째가 형태소분석기입니다. 한국어의 특성상 형태소분석기가 없으면 자연어처리가 매우어렵습니다. (반면에 미국 친구들은 정말 쉽게 막가더군요. -ㅁ-)
형태소분석기는 품사를 태깅해주는(무슨 품사인지 마킹해주는)는 라이브러리라고 생각하면 편합니다.
영어로는 POS(Part of Speech) tagger라고 하고 Morphology Analyzer라고도 부릅니다. (의미상으로도 영어는 POS tagger가 맞고 한국어는 Morphology Analyzer가 맞는것 같습니다)

형태소 분석기에서 기본적으로 제공하는 기능은 품사태깅과 자동띄어쓰기입니다. (띄어써야 할 곳에 여백을 만들어주고 동사, 명사, 형용사등의 사자 돌림의 것들이 뭔지 구별해주는..)
품사를 태깅하기 위해서는 띄어쓰기와 기본형 변환등의 문제를 해결해야 하는데 필연적으로 자동띄어쓰기를 지원하게 됩니다. (물론 구현체에 따라 아닌 것도 있습니다.)
워드세그멘터는 품사의 태깅없이 자동띄어쓰기만을 해주는 것을 말하는데 검색의 인덱서에 주로 사용됩니다. (인덱서는 띄어쓰기를 문법에 맞지 않게 과하게 하는 경우가 많습니다만 이게 처리할 때 유리한 점이 많이 있습니다)
보통은 형태소분석기에 품사태깅 도구와 자동띄어쓰기가 함께 포함되어 있습니다.

물론 모든 텍스트 데이터 처리나 텍스트 마이닝이라고 해서 반드시 형태소분석기가 필요한 것은 아닙니다만, 사실상 텍스트 마이닝이나 자연어처리와 관련있는 작업을 하게 되면 대부분의 경우 필요하다고 봐야 합니다.
쉽게 예를들어 오픈소스 검색엔진인 Lucene을 설치해서 뭔가 개인프로젝트나 학생인 경우에 졸업과제 같은 것을 하려고 해도 우선 걸리는 것이 형태소분석기이고, 그 외에도 조금 전문적인일으로 스팸 필터링(Spam filtering), 질의어 분류(Query categorization), 문서 중복 제거(Document Deduplication) 등은 대부분의 경우에 형태소분석기가 없으면 작업이 힘들거나 좋은 성능이나 결과를 포기해야 합니다. 더나가서는 Language Parser라 불리는 구문분석기가 필요해질 때가 있습니다. (보통 NLP에서 영어로 parser라고 하면 구문분석기를 말합니다).
형태소분석기가 없을때 대안으로 하는 것이 N-gram으로 글자(character)를 unit의 기본으로 잡고 처리하거나 하는 원초적인 방법인데 작업도 힘들고 결과물도 대게 좋지 않습니다. 설령 그와 같이 작업이 쉽게 가능하고 비슷한 품질이 나왔다고 해서 향 후에 발생할 모든 잠재적인 문제들에 대해서 미리 대비하는 해결책은 아니라서 섣불리 접근하기 힘듭니다.

보통의 정보처리회사(보통 인터넷기업이나 검색회사 또는 데이터마이닝 회사겠지요)에서는 몇 개의 형태소분석기가 이미 자체적으로 구비되어 있으므로 회사내에서의 업무라면 그냥 가져다 쓰면 되겠지만 개인적으로 하고 싶은 일에는 보통 회사자산을 가져다 쓰면 안되도록 금지 되어 있어, 개인 프로젝트를 할 때 저작권이나 사용료 지불없이 쓸만한 것이 있는지 간단하게 정보를 수집해 봤습니다. (어..논문같은 것을 쓴다거나 할때요)

꼬꼬마 형태소 분석기

세종계획 결과물을 이용해서 제작한 형태소 분석기입니다. 소스코드를 입수할 수 있고 결과물도 나쁘지 않습니다. 소스코드는 별도로 요청을 하셔야 합니다. Java로 만들어져 있습니다. 갱신이 된지 좀 오래되었습니다.

한나눔 형태소 분석기

카이스트에서 만든 형태소분석기입니다. 최근에는 연구용이나 개인용으로는 꼬꼬마 아니면 한나눔을 주로 사용하는 것 같습니다. 한나눔도 Java로 만들어져 있습니다. 최근 업데이트가 거의 없습니다.

KISTI 검색엔진 및 형태소 분석기

실제로 사용해보지는 않았습니다만 괜찮다고 들었습니다.

  • www.kristalinfo.com
  • http://www.kristalinfo.com/K-Lab/idx/
    http://www.kristalinfo.com/K-Lab/ma/

락끄님의 형태소분석기 데모

역시 사용해 보지 않았습니다.

  • http://ids.snu.ac.kr/wiki/Morpheme_Analyzer_Demo

HAM – 강승식 교수님의 Hangul Analysis Module

국내에서는 워낙 유명한 것이라 따로 설명이 필요 없지요. 라이센스비용을 받으시는 걸로 알고 있습니다. 많이는 아니지만 사용해 봤었는데 좋았었습니다. 지금은 사용을 하지 않으므로…

  • http://nlp.kookmin.ac.kr/
  • http://nlp.kookmin.ac.kr/data/han-dic.html – 그밖에 다양한 text문서 자료/프로그램
  • http://nlp.kookmin.ac.kr/down/data/KorStems.zip – 조사/어미 자료

모란소프트 – 조영환 박사님의 형태소분석기 MORAN

안써봐서 잘 모르겠습니다만 나쁘지 않다고 들었습니다.

  • 링크: http://www.moransoft.co.kr/

검색엔진 및 형태소분석기 – PHP형태소 분석기

PHP의 extension인지 native인지 잘 모르겠습니다. PHP전용이라면 쪼끔 그렇습니다. 여러 시스템에 유연하게 연동하는데 불편해서 활용도가 떨어질 가능성이 있습니다. 품질은 잘 모르겠습니다.

  • 링크: http://lab.zagia.com/

이상호님의 KTS

오래전에 작업을 중단하신 걸로 알고 있습니다.

  • http://kldp.net/projects/kts
  • http://chem.skku.ac.kr/~kle/main/KTS

포항공대 NLP연구실

  • http://nlp.postech.ac.kr
    • http://nlp.postech.ac.kr/~project/DownLoad/index.html – binary를 다운로드 받을 수 있습니다
    • http://nlp.postech.ac.kr/DownLoad/cgi-bin/POSTAG/SKOPE99a_demo.tar.gz

이 외에도 찾아 보면 의외로 많이 있습니다.

기타 한글 및 한국어 처리에 도움이 될만한 것들

선택할 때 고려사항

개인적으로 한국어 형태소분석기를 볼 때 응용개발자의 입장에서 중요하게 생각하는 것은 우선 아래 3가지를 먼저 생각하는데요.

물론 형태소분석기 자체를 개발하거나 연구하는 분들의 생각과는 많이 다를 수도 있을 것 같습니다

일관성

결과물이 일관성있게 잘 나와야 합니다. 조그만 차이에도 단어 띄어쓰기나 품사태깅이 들쭉날쭉하거나 예외에 따른 변화가 너무 많거나 후처리로 제어 해야 할 것들이 너무 많으면 후속 작업을 하기가 매우 힘듭니다. 일관성이 영 아닌 것들도 많이 있으므로 쓰기전에 테스트가 필요합니다. 기분석 사전이 얼마나 잘 생성되어 있는지에 따라 달라지는데 본인이 생성한 것이 아니면 테스트 해보기전에 알지 못하는 것이 많습니다. 보통은 알고리즘이나 구현체 문제라기 보다는 학습데이터의 부족과 사전의 부족이 아닌가 싶습니다.

속도

실행속도가 가능한 빠른것이 유리합니다. 형태소분석기의 속도가 왜 빨라야 하는지 잘 이해하지 못하겠다고 말씀하시는 분들이 있는데, 경우에 따라 다 다르겠지만 검색엔진에서 searcher, indexer로 쓰이는 것 외에도 텍스트 처리와 관련해서 서비스 형태(대몬 형태)로 응용구현체가 구동이 되는 경우가 많이 있습니다. 서비스형태의 응용구현체는 형태소분석기가 소모하는 시간이 길면 연산자원이 많이 소요되므로 그 자체로 부담이고 손해입니다. 형태소 분석기 자체가 자원소모가 꽤 많은 편이라 서비스나 운영시스템에 전개하는 것 까지 고려해야할 필요가 있습니다. 최근에는 하드웨어들이 좋아졌기 때문에 형태소분석기의 라이브러리 성능도 심하게 따지지는 않는 것 같습니다만 그럼에도 불구하고 가능하다면 최대한 빠른 것이 좋습니다. 이런 이유의 한가지로 외국산 고성능 형태소 분석기들은 여전히 C/C++로 작성되고 있는 것을 볼 수 있습니다. (다 이유가 있다는…)

유연성

유연성이란 잘못된 것 또는 변화된 상황에 빨리 대처할 수 있게 유연한 장치들을 가지고 있어야 하고 빠르게 대처할 수 있어야 한다는 것입니다. 예외사항이나 특이한 문제가 발생했을 때 사전을 수정하거나 예외 처리를 할 수 있는 각종 장치가 다 마련되어 있어야 합니다. 형태소 분석기를 사용하다보면 도메인(domain)별로 사전을 따로 관리해야 할 수 있습니다. 특히 복합명사나 도메인별로 주로 쓰는 단어에 대한 태깅이 달라지는 문제가 발생할 수 있는데 이럴때마다 형태소 분석기의 기분석 사전을 업데이트하는 것은 위험합니다. 후처리로 해결을 해야 하는데 이런 지원 기능이 내장되어 있거나 추가 구현을 쉽게 할 수 있게 되어 있어야 합니다. 보통은 후처리사전(사용자 사전)과 언어처리를 위한 유틸리티 라이브러리로 후처리를 합니다.
유연성의 또다른 측면으로 여러 응용구현체에서 가져다 쓸 수 있어야 합니다. 형태소 분석기들이 주로 C/C++로 작성되는 또 하나의 이유는 여러 랭귀지들의 패키지로 제공하기 쉽다는데 있습니다. perl, php, python, java 등입니다. 서비스나 응용 구현체를 어떤 것으로 만들지는 알 수 없으므로 가능하다면 많은 시스템에서 적용이 가능한 형태로 되어 있는 것을 쓰는 것이 나중을 대비해서 유리합니다.

Data Science, Analytics and Big data