텍스트 대이터 기반의 문서 데이터에서 핵심 주제(Topic)를 찾는 데이터 분석 방법론
확률 기반의 모델링 기법을 통해 방대한 양의 문서 데이터를 분석함으로써 문서 내에 어떤 토픽이, 어떤 비율로 구성되어 있는지 분석
토픽별로 어떤 키워드가 구성되었는지 정보를 제공하기 때문에, 키워드 조합을 통해 인사이트를 도출하는 데 효과적인 장점
구분 | 내용 |
---|---|
리뷰1 | 여긴 삼겹살이랑 냉면 맛집으로 추천 |
리뷰2 | 이집 미남 사장님 친절하시고 최고 |
리뷰3 | 사장님 친절하시고 삼겹살이랑 된장찌개 맛집이라 추천 |
토픽의 개수는 사용자가 직접 지정해야 하는 하이퍼파라미터
LDA 토픽 모델링의 결과는 크게 2가지를 얻을 수 있다.
구분 | 내용 |
---|---|
리뷰1 | 토픽 A 100% |
리뷰2 | 토픽 B 100% |
리뷰3 | 토픽 A 60% / 토픽 B 40% |
어떤 단어들이 구성되어 있는지는 알려주지만, 해당 토픽의 제목은 알려주지 않는다.
즉, 직접 토픽별로 구성된 단어의 조합을 보고 토픽의 제목을 정해야 한다.
데이터가 많아질 수록 토픽 분포를 과학적으로 파악하기 위해서는 반드시 LDA가 필요하다.
구분 | 내용 |
---|---|
토픽 A (음식) | 삼겹살 25% / 냉면 12.5% / 맛집 25% / 추천 25% / 된장찌개 12.5% / 미남 0% / 사장님 0% / 친절 0% / 최고 0% |
토픽 B (사장님) | 삼겹살 0% / 냉면 0% / 맛집 0% / 추천 0% / 된장찌개 0% / 미남 16.5% / 사장님 33% / 친절 33% / 최고 16.5% |
모든 데이터의 모든 단어는 2개의 토픽에 위와 같은 비율로 할당된다.
총 9개의 단어가 등장하였으며, 각 토픽 내 단어들이 등장한 비율을 단어 마다 출현 횟수를 고려해 계산을 할 수 있다.
문서에 사용할 단어의 개수 N을 설정
Ex) N개의 단어 선정
문서에 사용할 토픽의 혼합을 확률 분포에 기반하여 결정
Ex) 토픽이 2개라고 가정할 시, 음식 토픽을 60%, 사장님 토픽을 40%와 같이 선택 가능
문서에 사용할 각 단어를 선정
3-1. 토픽 분포에서 토픽 T를 확률적으로 선정
3-2. 선택한 토픽 T에서 단어의 출현 확률 분포에 기반해 문서에 사용할 단어를 선정
M개의 모든 문서 내 모든 단어는 k개의 토픽 중 하나로 임의로 할당하는 작업을 수행
위 작업을 마치면 모든 문서는 토픽을 갖게 되며 각 토픽은 단어 분포를 갖는다.
모든 단어를 각각 임의의 토픽에 할당하였기 때문에 토픽 내 단어 분포의 결과는 틀린 상태
모든 단어에 대해 토픽을 재할당 하기 위해 모든 할당이 완료될 때 까지 아래 과정(3-1, 3-2)을 반복 수행
문서 1
단어 | 배 | 사과 | 배 | 비행기 | 자동차 |
---|---|---|---|---|---|
토픽 | B | B | ?? | A | A |
문서 2
단어 | 맛 | 바나나 | 귤 | 배 | 배 |
---|---|---|---|---|---|
토픽 | B | B | B | B | B |
문서 1에서 3번째 단어인 '배'의 토픽을 할당하려고 할 경우
첫 번째 조건은 단어가 속한 문서의 단어들은 어떤 토픽에 할당되는지 확인하는 것
문서 1 내 모든 단어들은 토픽 A와 토픽 B에 5대5 비율로 할당되어 있기 때문에 '배'라는 단어는 토픽 A와 B 어디에도 할당이 될 수 있다.
해당 조건으로는 단어를 올바르게 재할당하기 어렵기 때문
에 3-2로 넘어간다.
두 번째 기준은 재할당 하려는 단어 '배'가 다른 문서까지 포함한 전체 문서에서 어떤 토픽에 할당 되었는지 확인 하는 것
문서 1과 문서 2에 '배'라는 단어는 모두 토픽 B에 할당되어 있기 때문에 '배'라는 단어는 토픽 B에 재할당될 가능성이 높다
파이썬을 이용해서 LDA코드를 작성했는데, 매번 실행할때마다 결과가 다른데 이게 맞는걸까요?! ㅜㅜ