#9기임팩트 #AI임팩트
안녕하세요 AI 임팩트에서 데이터 분석 파트 글 작성하는 샘호트만 입니다.
일단 바로 시작해보겠습니다.
Intro
이전 글에서는 텍스트를 정형화하여 테이블로 만드는 작업까지 했습니다.
이제 이 데이터들이 어떤 내용들과 혜안을 안겨다줄지 고민을 해보는 시점입니다.
하지만 ADA 위에서 이 텍스트들을 분석을 하려면 기본적으로 전통적인 형태소 분석기를 사용해야하는데, 다음과 같은 문제점이 있습니다. (형태소 분석기 비교 글 참고)
Mecab이 일반적으로 가장 빠르고 품질도 괜찮은 형태소 분석기이지만 설치하기 상당히 까다롭고 60초 이내에 절대 설치할 수 없다.
konlpy 라이브러리는 외부 웹 접속을 해서 종속성이 있는 라이브러리를 설치해야하는데, 자체적으로 막혀있다.
konlpy를 ADA 위에서 설치하면 다음과 같은 에러가 나타납니다. Jpype1도 따로 설치하고 했지만 비슷한 이유로 안되었습니다. dependency가 많이 걸린 라이브러리 입니다.
데이터 준비
그래서 저는 따로 다른 환경에서 데이터를 따로 준비했습니다.
colab에서 mecab을 설치
명사 추출(1글자 명사 제외)
데이터 export 한 다음 분석을 시작했습니다.
그 작업이 되어있는 데이터는 다음과 같습니다.
이제 이렇게 뽑힌 명사 데이터들을 바탕으로 어떤 텍스트마이닝을 할지는 제 약간의 경험과 의식의 흐름대로 진행했습니다.
분석 시작
우선 데이터를 잘 이해했는지 물어봤습니다.
만만한 것은 일단 분석 방향을 물어보거나 간단한 빈도분석이라서, 고빈도 단어를 먼저 물어봤습니다. 너무 많이 나타난 단어들은 확실히 거품이고 눈에 거슬렸습니다.
상위 단어 rough하게 지우고 워드클라우드 요구했습니다.
워드클라우드 함수에서 font_path를 따로 argument로 받길래, 따로 폰트를 따로 전달했습니다. 폰트 압축파일을 전달하면 알아서 연결해주는 편리함이 있습니다.
LLM 나오기 이전에서 자연어처리에서는 통계방식(TF-IDF와 같이 bag of words)/동시출현방식(word2vec 과 같은 방식)/Transformer 방식으로 크게 3가지 방향으로 접근을 했었는데요.
단어 “빈도” 말고 대표적인 통계 방식은 TF-IDF을 사용해보도록 하였습니다.
TF-IDF 값이 높은 단어들 제시해달라고 했습니다. 하지만 부연 설명이 제가 원하는 수준의 답변이 아니였습니다.
상위 단어가 점수가 너무 높은 것이 TF(단어 빈도) 값이 높다고 생각해서 TF 부분에 로그스케일을 요구 했습니다. ‘후기’라는 점수가 올라갔다고 하지만 이 또한 제가 원하는 수준의 답변은 아니였습니다.
빈도가 높은 단어들과 상위 TF-IDF 단어들에 대해 비교를 표 형태로 부탁했습니다. 그리고 인사이트를 요구했습니다.
비교를 하고 해석하라고 하니 나름 재미있는 결과가 나왔습니다.
이제 하나의 단어(uni-gram)보다는 bi-gram(두개의 단어로 이뤄진 phrase) 단어를 요구하였습니다.
나름 새로운 통찰을 얻었다고 좋아하는 것 같습니다.
TF-IDF 또한 워드클라우드 부탁했습니다.
저는 여기서 키워드를 뽑고 싶었는데, 감이 아닌 다른 기법으로 논리적으로 뽑고 싶은 것을 원했습니다. 저는 점수가 급격히 떨어지는 부분을 최초로 생각했고 워딩이 생각이 안나서 elbow point를 이야기했습니다.
근데 그 맥락으로 elbow point를 요구한 것이 아닌데, kmeans에서 적합한 k값을 찾는 elbow point로 받아들여서 분석을 수행했습니다. 당연히 1분이 넘어가서 에러가 나타났습니다.
급격하게 변하는 지점을 요구했고, 방법에 대해서 자세히 설명해보라고 요구했습니다.
ADA는 변화율을 계산하는 관점으로 문제를 해석했는데, 제 마음에는 들지 않았습니다. 최상위 단어들 점수가 상당히 높은 편이라서 변화율로 문제를 풀면 변동성이 무조건 크기 때문에 잘못된 방식이라 생각했습니다.
뭔가 분석에 대한 방법론을 추천받으면 좋은데, ADA 위에서 대화가 길어지는 것을 선호하지 않아서 (앞에 내용을 까먹으니까) 그냥 과거에 TF-IDF에서 Feature Selection 할 때 Kneedle 포인트를 찾는 방법이 생각나서 이 방법을 적용하고자 하였습니다. (과거에 Dacon에서 스팸문자 detect하는 대회에서 1등 했었는데 이 방식을 잠시 실험했던 것이 생각났습니다.)
여기서 라이브러리를 전달하고 point를 찾아달라고 했습니다.
코드 또한 잘 들어가 있습니다.
저는 77번째 TFIDF 단어 주변에 어떤 단어들이 있는지 궁금했습니다.
주변 단어를 뽑았는데 직관적으로 봤을 때는 잘 와닿지 않았습니다.
이렇게 물어보니 제 머리에 강력한 도파민을 전달할 수 있는 수준의 답변은 얻지 못했습니다. 저는 분석 중단을 하기로 마음을 먹었습니다.
마무리할 때에는 그래도 추가적인 분석 방식에 대해서 추천을 받았습니다. 개인적으로 3, 4번 내용은 전혀 생각지도 못했는데, 얻어갈 수 있는 내용이 있다고 생각했습니다.
위에서 시간에 따른 변화 분석이야기를 했기 때문에 저는 3일동안 가르친 내용들이 제 의도에 맞게 사람들이 후기를 작성했는데, 나름대로 제 설계에 맞게 후기를 작성한 것 같습니다. (3일차는 실용적이면서도 울림을 전달하려고 했습니다 ㅎㅎ)
위에서 네트워크 분석 이야기 나오길래 한번 테스트 해봤는데 한글이 깨졌습니다. 한글 깨진 것을 해결한다고 해도 해석하기 어려워 보이는 구조라서 분석 중단 했습니다.
Conclusion
(아쉬운 점) 제한된 환경에서 해볼 수 있는 것들이 너무 적다. 간단한 워드클라우드와 키워드 추출 정도가 한계다(토픽모델링, kmeans, 네트워크 분석 등 불가능). 여기에 대해서 추가적으로 시도해볼법 한 내용을 추천해주시면 감사하겠습니다.
팀계정을 사용하지 않고 Plus 계정을 사용한다면 오래 분석하는 것이 상당히 어렵기 때문에 대화하면서 인사이트를 얻는 방식보다 초기에 내가 어떻게 분석할 지 대략적인 전략과 outline이 그려져 있어야한다.
(긍정적인 점) 그래도 놀라웠던 부분은 텍스트 데이터끼리 정성적인 분석을 통해 차이점을 알려준다는 점과 제가 생각지도 못한 정성적인 방법론에 대해서 가이드를 줘서 좋았다. 정형화된 데이터의 feature들이 다소 빈약한데, 추가적인 정보가 있으면 더 재미있는 분석을 했을 수 있겠다 는 기대를 가졌습니다.
분석 후반부에 분석 방법에 대해서, 시간에 따른 변화 분석이나 참여자 프로파일링 (+ 개인마케팅) 방식은 생각을 해보지는 못했는데, deep-dive 해볼만한 소재인 듯 하다.
글을 마무리하자면, 한글 텍스트 데이터로 어디까지 분석할 수 있을까?를 기획하면서 써본 글이지만 ADA 위에서 할 수 있는 내용이 간단한 내용 밖에 없어 개인적으로 아쉬웠습니다.
추가적으로 “이런 것 해봤으면 어땠을까요?” 하는 분석이 있다면 댓글 달아주시면 감사하겠습니다!!(제가 이 분석을 하고 글을 쓰는 지금 상태가 뇌에너지를 다 쓴 탓에 아이디어가 잘 안떠오르네요. 하하하…)
다음 글은 시각화 (또는 마무리) 생각 중입니다만 임팩트 숙제 자고 일어나서 마무리해야하기 때문에 연재는 시간날 때 마무리해보겠습니다.
긴 글 읽어주셔서 감사합니다.