텍스트마이닝 기업 적용 사례 (다면진단 주관식 응답 분석) 2탄

작년에 대기업 그룹사 전체를 대상으로 진행했던 리더십 다면진단 주관식 응답 분석 프로젝트를 올해 한 번 더 진행했다. 한 번 더 하니 작년에 못 봤던 새로운 내용들이 많이 보였고, 느낀 점도 많아서 추가로 남겨본다.

사실 작년에 프로젝트를 하면서 또 이렇게 좋은 기회가 있을까 싶어서 올 여름에 이런 글을 남겨놨는데,

올해 또 의뢰(?)가 들어와서 한 번 더 진행하게 됐다. 감사한 일이다.


프로젝트 개요

전반적인 내용은 작년과 동일했다.

그룹 내 리더들을 대상으로 상사나 부하로부터 그 사람의 리더십에 대해 평가하도록 설문이 진행됐다. 여기에 주관식 응답도 포함해서 받았다.

총 2만 건이 넘는 주관식 응답 내용을 일일이 다 확인할 수 없으니, 대략 어떤 내용이 나왔는지 분류(classification)하는 게 목표였다. 예를 들면 “이 응답은 ‘업계 전문성’ 관련 내용이다, 이 내용은 ‘회의 문화 관련 내용’이다” 하는 식으로 자동으로 분류한 후, 집단별로(회사, 직군, 성별, 성과 등을 기준으로) 비교 분석 하는 것까지가 이 프로젝트 범위였다.

문항은 작년과 동일했다. (다른 문항도 있었는데, 어쨌든 정보 보호 차원에서 축소/각색했다.)

  1. A(평가 대상자)에게 앞으로 기대하는 점은 무엇인가요?
  2. A(평가 대상자)가 앞으로 줄여나가길 바라는 점이 있다면 무엇인가요?

다만, 올해에는 응답 방식이 좀 개선됐다. 만약 질문에 여러 내용을 응답하고 싶은 경우 최대 3개까지 나눠서 입력하도록 입력란을 설계했다. 그래서 작년에 꽤나 골치거리였던 문제, 하나의 응답에 여러 내용이 복합적으로 담기는 것을 어느정도 해결할 수 있었다. (내가 작년 보고서 작성할 때 마지막에 제언으로 담았던 내용이 반영돼서 기분 좋았다.)

분석 작전

올해 내가 세운 분석 작전(?)은 작년과 좀 달랐다.

작년엔 애초에 분류 기준이라는 게 없었기 때문에 군집화(Clustering)을 먼저 해서 비슷한 응답들을 묶어 놓고 그것들을 레이블링 하는 방식이었다. 예를 들면 “구성원과의 대화나 소통과 관련한 응답들을 모아 놓고, 이것들은 ‘구성원과의 소통’이라고 이름을 붙이자”라는 식이었다.

그러나 올해엔 이미 작년에 레이블링 해놓은 값이 있었기 때문에 이걸 학습시켜 분류기를 만들어 놓고, 올해 들어온 응답들을 분류기에 넣고 돌리는 작전이었다.

사실 작년 프로젝트 마무리 되는 시점에 미리 분류기 성능을 어느정도 확인해보았기 때문에 이게 가능할 거라는 믿음이 있었다.

그리고 실제로 잘 적용 됐다. 다행히.

올해 한 번 더 분석을 하면서 얻은 인사이트(?)라고 할 만한 것들 몇가지만 소개해봐야겠다.


분석을 통해 얻은 인사이트

1. 상사와 구성원(부하)의 관점은 완전히 다르다.

이건 사실 너무나 당연한 거지만…

상사는 그 사람이 좋은 리더인지 아닌지에 대해 관심을 두기보다는 얼마나 사업적인 성과를 낼 수 있는가에 대해 더 관심이 많았다. 반면, 부하직원(구성원)들은 당연히 그 사람이 나한테 좋은 상사인지, 나한테 잘 해주는 사람인지, 합리적으로 일을 시키는지, 나의 성장에 도움이 되는지에 대해 언급하는 내용이 많았다.

실제로 구성원(부하)들과 상사들의 응답에서 많이 등장한 내용이나 차별적인 어휘를 살펴보면 아래와 같았다.

문항 1. 앞으로 기대하는 점

문항 2. 앞으로 줄여나가길 바라는 점

역시 구성원들은 회의와 야근을 싫어한다. 비효율적인 업무 방식도 너무 싫지. (공감)

2. 구성원들은 리더의 긍정적 행동보다는 부정적 행동에 더 민감하게 반응한다.

부하 직원들은 리더가 뭐 잘 한다고 그렇게 막 좋아하거나 그러진 않는 것 같은데, 차라리 하지 말아야 할 행동을 하는 리더들은 정말 명백하게 싫어하는 것처럼 보인다.

이건 사실 객관식 진단 결과와 함께 비교해서 얻을 수 있는 발견이었다. 객관식 문항에서 높은 점수를 받은 리더들과 낮은 점수를 받은 리더들을 나눠서 구성원들의 응답만 비교해보니, ‘1. 앞으로 기대하는 점’ 문항에서는 크게 차이가 나지 않았는데, ‘2. 앞으로 줄여나가길 바라는 점’ 문항에서는 큰 차이가 나타났다.

객관식 문항에서 점수를 낮게 받은 리더들은 존중과 배려하지 않는, 독선적이고 독단적인, 명확하지 않다는 평(?)을 구성원들로부터 많이 받았다.

실제로 구성원들의 응답을 리더십 점수를 높게 받은 리더들에 대한 응답과 리더십 점수를 낮게 받은 리더들에 대한 응답으로 나누어서 살펴보면 많이 등장한 내용이나 차별적인 어휘들이 아래와 같았다.

문항 2. 앞으로 줄여나가길 바라는 점

리더십 점수 높게 받은 리더들한테는 “술, 담배 좀 줄이세요. 일 좀 적당히 하세요.”와 같은 내용이 꽤 많이 나온다.

3. 리더에 대한 구성원들의 기대는 위계적으로 나타난다.

객관식 문항을 통해 리더와 얼마나 많이 소통하는지, 리더가 얼마나 긍정적인 피드백(격려, 칭찬 등)을 제공하는지에 대한 응답을 수집했는데, 그걸 바탕으로 그룹을 나눠서 살펴보니 좀 신기한 현상이 나타났다.

‘1. 앞으로 기대하는 점’이라는 문항에 대한 구성원들의 응답을 보면…

전반적으로 구성원들은 리더와 원활하게 소통하길 기대한다는 걸 알 수 있다. 그런데 이런 소통이 충분히 이루어진다고 생각하는 구성원들의 응답에서는 격려와 칭찬 등 인정 받고자 하는 내용이 더 많이 등장하기 시작한다. 그리고 충분히 인정 받고 있는다고 생각하는 구성원들은 자신들을 코칭/멘토링 해주기를, 육성 및 개발 해주기를 기대하는 내용을 많이 언급하기 시작한다.

대략 이런 위계적 구조가 나타나는 것처럼 보여서 이런 개념도를 그려봤다.

리더에 대한 구성원들의 기대 (위계적 구조)

무슨 매슬로우 욕구 이론 같다는 생각도 들고…


그 외에 회사, 직군, 성별 등 다양한 기준으로 집단을 나눠서 응답 분포를 비교해보기도 했는데, 구체적인 내용은 여기에 다 제시할 수 없을 것 같다. (고객사 정보 보호 차원)


분석 과정에서 느낀 점

작년에 이어 올해에도 프로젝트를 진행하니 몇가지 느낀 게 있다.

1. 실제 분석보다 결과 정리하는 데 시간이 더 오래 걸린다.

분류기는 처음에 튜닝만 좀 해놓으면 (사실 텍스트는 어떻게 보면 전처리에 걸리는 시간이 거의 무한에 가깝기 때문에 끝이 없긴 하지만, 프로젝트 기한 내에 결과물을 내야 하기 때문에 타협하면 된다.) 결국 분석 결과를 정리해서 그 내용을 해석하고 인사이트를 도출하는 과정이 오래 걸린다.

여기서 일종의 한계를 느꼈다. 데이터 분석 프로젝트는 그 맥락이나 내용을 가장 잘 이해하고 있는 현업 입장에서 해석해야 종결이 되기 때문에 단순히 분석가로서 외주(?) 업무로 참여하다보면 확실히 해석에 제약이 있다. 그래서 분석가는 고객이 그 결과를 잘 해석할 수 있도록 결과를 표나 차트로 만들어서 전달해야 하는데 이게 너무 소모적인 작업이다.

나도 어쩌면 무식하게 피벗 테이블만 100번 이상 돌려서 나열한 셈이다. 차라리 Tableau, Power BI, 구글 데이터 스튜디오 같은 시각화 도구를 사용해서 대시보드로 만들어서 전달하는 게 낫지 않았을까 싶기도 하다. (구글 데이터 스튜디오는 생각보다 사용이 번거롭긴 하던데 다음번에 기회가 되면 제대로 써봐야겠다.)

아무튼 표만 잔뜩 만들어서 전달하는 건 답이 아니다. 너무 소모적이다. 이런 방식은 싫다.

2. 문서 분류는 나이브 베이즈가 짱이다.

문서 분류를 위해 doc2vec과 같은 다른 알고리즘(?)을 사용해봤는데, 결국 나이브베이즈가 짱이더라.

3. 차별어 분석이 의외로 쏠쏠하다.

‘차별어 분석’은 흔히 말하는 일종의 감성 분석이라고도 볼 수 있다. 문서 집단에 따라 발견될 확률이 높은(차별적인) 형태소를 추려내는 분석이다. 본 프로젝트에서는 KL 발산(Kullback-Leibler divergence)이라는 방법을 활용했다.

예를 들면 네이버 영화 리뷰에서 긍정 리뷰와 부정 리뷰를 나눠 놓고 차별어 분석을 수행하면 아래와 같은 결과가 나온다.

2개 집단 간의 어휘 패턴을 비교할 때 꽤 직관적인 결과가 나오는데, 어쨌든 올해 프로젝트에서 처음 적용해봤는데 꽤 결과가 괜찮았다. 앞으로 자주 써먹을만한 방법인 것 같다.

4. 요즘 텍스트 분석을 쉽게 할 수 있다는 건 다 거짓말이다.

사실 본 포스팅의 결론은 이거다.

요즘 텍스트 분석 누구나 할 수 있다는 얘기가 많은 것 같다. 그런데 이게 정말 쉬울진 모르겠다. 왜냐하면…

  • 한국어는 애초에 형태소 분석 과정부터 정확할 수가 없다. 띄어쓰기나 오탈자에 많은 영향을 받기도 하는 언어이고, 불규칙 용언의 활용이나 중의성 같은 걸 고려하면 오차(오류)는 무조건 존재한다.
  • 지금까지 공개된 형태소 분석기마다 성능, 특장점이 다르다. 난 주로 Komoran을 사용하는데, 이게 속도가 좀 느리더라도 체언, 명사를 잘 판별해주기 때문이다. 어쨌든 어떤 걸 활용할지도 분석가가 보고 판단해서 결정해야 하는 영역이다.
  • 텍스트의 속성과 분석의 목적에 따라 특정 품사만 잘 선택해서 분석에 활용해야 한다. 예를 들어 소설이나 시와 같은 문학 작품을 분석할 때와 회사에서 진행한 설문조사 응답을 분석하는 건 전혀 다를 수 있다는 얘기다. 왜냐하면 현재는 Bag-of-Words 모델을 바탕으로 접근하는 게 가장 현실적이고, 이 때 형태소/품사 단위에서 어떤 것들을 활용할지가 중요하기 때문이다. 결국 해당 언어와 그 문법에 대한 이해가 필수적이다.
  • 해당 도메인에 대한 지식과 이해가 필요하다. 위 내용과 결국 같은 맥락인데, 회사에서 작성하는 이메일과 친구에게 보내는 카톡 메시지는 전혀 다른 언어 사용 패턴이 나타날 거다. 이걸 같은 프레임에서 분석하면 엉뚱한 해석으로 흐를 수도 있다. 특정 용어 사용 빈도나 어휘 간의 관계를 살펴보기 위해서는 해당 도메인에 대해 잘 알고 있어야 한다.

아무튼 텍스트 분석이 겉으로는 다 비슷하고 쉬워보이지만 이런 사소한 선택과 의사결정은 모두 분석가의 역량에 의존하고 있는 거다.

형태소 빈도 카운트해서 워드 클라우드 그리는 것 정도야 쉬울지 모르지만, 그 방대한 텍스트를 실제로 의미 있는 형태로 가공해서 분석하는 건 생각보다 어려운 작업이다.

물론 요즘 예를 들면 KoALA와 같은 사이트에서는 나름 쉽게 텍스트 분석을 할 수 있도록 웹 서비스를 제공하고 있다. 아마 직접 코딩하지 않고도 분석할 수 있다는 게 이 서비스의 셀링 포인트가 아닐까 싶다.

그러나 이런 방식으로 분석을 하면 반드시 성에 차지 않을 수밖에 없다. NLP, 자연어처리는 여전히 완벽한 분석의 대상이 아니다.

그리고 텍스트 분석이 쉽다는 것과 코딩 없이 기초적인 분석을 할 수 있다는 건 엄연히 다른 얘기니까.


글이 길어졌는데 이쯤에서 마무리해야지.

아무튼 쉽지 않았던 프로젝트였는데 올해도 무사히 잘 마무리 되어서 다행이다.

다음엔 더 잘하고 싶다.

저에게 일을 맡겨주세요.

추천 글

“텍스트마이닝 기업 적용 사례 (다면진단 주관식 응답 분석) 2탄”의 9개의 댓글

  1. HR analytics에 관심있었는데 다면진단 응답분석 리뷰 잘 봤습니다.

    저 역시 비슷한 분석을 했었는데, 고민하신 부분이 많이 겹쳐서 흥미롭게 읽었습니다.

    분석을 진행하면서 궁금한게 있었는데,

    주관식의 경우 한사람이 여러개의 의견을 내는 경우가 있었습니다. 이부분은 어떻게 처리하셨는지가 궁금합니다. 사람별로 labeling을 하게되면 여러의견의 경우 충돌이 생길것 같아서요..(저같은 경우 A 의견이 “몇 명이다”가 아니라 “몇 건이다”로 처리하고 해석했습니다.)

    그리고 저같은 경우 N-gram language model을 이용해 network graph로 시각화를 했었는데 그 부분도 한번 생각해 보면 좋을것 같습니다.

    1. 흥미롭게 읽으셨다니 뿌듯하네요!

      한 주관식 응답이 여러 내용을 담고 있을 때 레이블링 방식으로 처리하면 한계가 있는 것 같아요. 그래서 아예 응답을 수집하는 과정에서 응답을 분리하는 접근을 했습니다…!

      그리고 저도 ngram이나 코사인 유사도, word2vec 등으로 네트워크를 그려보긴 했는데 개수를 조금만 추리면 너무 뻔한 연결만 나오고, 개수를 좀 늘리면 그림이 너무 복잡해져서 해석이 난해해지더라고요ㅜㅜ 그 그림을 저 스스로에게 설명하기도 어려워서 아예 클라이언트에게 전달하는 보고서에 포함시키질 못했습니다.

      괜찮은 결과를 얻어내실 수 있었다면 노하우를 공유해주세요 🙂

  2. 기업적용 사례 관련 두 개의글 모두 정독했고, 재밌게 읽었습니다.
    글솜씨가 좋으셔서 어려운 내용도 잘 파악할수 있었습니다^^

    저는 기업에서 고객 대상 추천의향점수(NPS)를 묻고, 그에 대한 사유를 주관식으로 받아, 군집화 및 의미 부여를 통해 인사이트를 얻는 프로젝트를 5월부터 진행 예정에 있습니다.

    모바일을 통해 의견을 주시다 보니, 고객들이 맞춤법을 많이 틀리게 작성해주고 계시더라구요.
    혹시 맞춤법 treatment 관련해서 활용한 방식이 있으시면 간략하게 공유 부탁드려도 될까요?

    포스팅 덕에 프로젝트 개괄 작성 시 많은 도움을 얻었습니다 감사합니다 🙂

    1. 댓글 감사합니다!

      이 분야에 대한 제 지식은 정말 미천한(?) 수준이라…
      맞춤법 관련해서도 솔직히 잘 모르겠어요.
      제가 분석한 텍스트는 맞춤법 오류가 적었고 등장하는 어휘의 양도 적은 편이라
      지금 생각해보니 상대적으로 쉬운 프로젝트였다는 생각도 드네요.

      정말 어쩔 수 없이 교정을 해야 한다면
      (텍스트에 있는 더 의미 있는 속성들을 해치는 게 아니라면)
      맞춤법 검사기를 돌려보시는 것도 좋을 거 같아요.
      현재 API 형태로 편리하게 제공하는 곳이 있는지는 모르겠습니다.
      예전에 카카오에서 한 번 서비스했다가 이슈가 있어 종료한 걸로 알고 있어요.
      웹브라우저 자동화라도 해서 교정된 문장을 받아오든지
      아래와 같은 라이브러리를 활용해서라도 어떻게든 시도는 가능할 거 같아요.
      https://github.com/ssut/py-hanspell

      제가 분석할 때는 맞춤법보다는
      오히려 형태소 분석기가 처리하지 못하는 미등록단어가 문제였는데요.
      저는 사용자 사전을 꽤 적극적으로 추가해서 사용했습니다.

      그리고 예전에 파이콘에서 화장품 리뷰 분석 사례를 본 적이 있는데,
      이 경우에는 아예 집단별로 나눠서 코퍼스를 구축했다고 합니다.
      그만큼 리뷰 데이터가 풍부하고, 등장 어휘들이 꽤 독특해서 가능했던 게 아닐까 합니다.
      https://youtu.be/F4sIkIlGG78

      그리고 이 분은 텍스트 분석 쪽의 고수이신 것 같은데
      비지도학습을 통해 처리하는 법을 소개하시더라고요.
      https://github.com/lovit

      다른 고수님들께도 한 번 의견을 구해보시고,
      프로젝트 잘 끝나시면 후기도 한 번 공유해주세요 🙂

  3. 빠른 피드백 감사드립니다 🙂

    프로젝트 중간중간 또는 마무리 후에 유용한 노하우 또는 후기가 생기면 공유드리겠습니다~
    (오는게 있으면 가는게 있어야 인지상정이겠죠 ? ㅎㅎ)

  4. 안녕하세요. 좋은 글 항상 잘 보고 배우고 있습니다.
    현재 리더십평가의 정성의견을 분석해보고 있습니다.

    말씀하신 집단간의 차별어 분석부분을 꼭 해보고 싶습니다.
    궁금한 것이 있는데요, 말씀하시는 차별어 분석이 감성분석(신경망 모형으로 1, 0 을 학습한 결과)후에 나오는 키워드(cv.get_feature_names)의 weights 정보를 말씀하시는건가요?

    아니면 차별어 분석이라는 것이 별도로 있나요?
    혹시 그렇다면 참고할만한 사이트가 있을까요? 말씀해주신 KL 발산으로 찾지를 못했습니다.
    (제가 아직은 많이 부족합니다.)

    제가 해보고싶은 것은 리더십 우수자와 하위자 그룹간 강점에서 나타나는
    차별적인 특성이 있을 것이라고 보고 이를 분석해보고 싶었거든요.

    머리싸매고 하다가 여기에 이렇게 남겨봅니다.

    고맙습니다.
    좋은 하루되세요.

댓글 남기기