상세 컨텐츠

본문 제목

[토픽 모델링] 토픽에 자동으로 이름 붙이기

그냥 공부

by 적분 ∫2tdt=t²+c 2020. 3. 19. 21:45

본문

토픽 모델링을 실시하고 나면 주제별로 단어 분포가 계산되어 나옵니다. 그리고 각 문헌들에 어떤 주제가 얼만큼씩 분포하는지도 알아낼 수 있습니다. 이 때문에 대량의 문헌이 어떤 내용을 다루고 있는지 파악하기 위해서 자주 사용되지요. 근데 문제는 각 주제가 주제 번호 #1, #2 등으로 구분될 뿐, 실제 주제가 다루는 내용을 알기 위해서는 주제별 단어 분포를 확인해야 합니다. 이러면 불편하기 때문에 사람이 직접 주제별 단어 분포를 보고 주제에 이름을 붙여주는 작업을 진행하죠.

그래서 주제 개수가 너무 많으면, 주제에 일일히 이름을 붙여주기 고되기 때문에 보통 토픽 모델링의 주제 개수는 10~100 개 정도로 한정합니다. 사실 문헌 집합이 더 크면 주제 개수를 더 키워야하는데, 그러면 현실적으로 그 많은 주제들을 일일히 살펴보면서 이름을 달아주는게 불가능하기 때문에 적당히 잘라내는 것이죠.

이 고된 작업을 자동화할 수 있다면 얼마나 좋을까요? 그래서 2003년 LDA가 발표된 이후 여러 연구들이 진행되다가 처음으로 2007년, 토픽 모델링 결과에 라벨을 달아주는 체계적인 방법론이 등장했습니다. 이번 포스팅에서는 이 연구의 내용을 소개하고, 실제 토픽 모델에 적용한 결과를 공유해보고자 합니다.

Mei, Q., Shen, X., & Zhai, C. (2007, August). Automatic labeling of multinomial topic models. In Proceedings of the 13th ACM SIGKDD international conference on Knowledge discovery and data mining (pp. 490-499).

문제를 수학적으로 접근하기

토픽 모델링에서 생성하는 주제는 단어들의 확률분포로 정의됩니다. 즉, 각각의 주제에서 임의의 단어를 뽑을 수 있는데, 주제별로 높은 확률로 나오는 단어가 다른 것이죠. 예를 들어 주제1은 {피자:30%, 식사:25%, 국밥:20% ...}, 주제2는 {치마:25%, 바지:20%, 티셔츠:15%, ...} 와 같은 식으로 표현되는 것입니다. 우리가 하고 싶은것은 주제1과 2의 단어 분포를 살펴보고 이에 걸맞는 이름인 '음식'과 '옷'을 찾아내 각각 붙여주는 것입니다. 이를 어떻게 수학적으로 표현할 수 있을까요?

먼저, 사람은 어떻게 주제1에는 '음식'이라는 이름을 붙일 수 있는지 생각해 봅시다. 우리는 '음식'이라는 단어랑 관련 있는 단어들의 목록을 알고 있는데, 마침 '피자', '식사', '국밥'이라는 단어들이 그것에 속해서 주제1에 '음식'이라는 이름을 붙이려고 하는게 아닐까요? 즉, 다르게 말하면 우리가 알고 있는 '음식'이라는 주제명과 관련된 단어 분포가 실제 주제1의 단어분포와 유사하기 때문에, 주제1에 '음식'이라는 이름을 붙여줄 수 있는 겁니다. 

이를 수학 공식으로 표현하기 위해, 이 '음식'이라는 주제명 역시 그 자신만의 단어 확률 분포를 가진다고 가정해봅시다. 그럼 주제1의 단어 분포도 확률 분포이고, 주제명 '음식'의 단어 분포도 확률 분포이므로, 이 두 확률 분포를 정량적으로 비교하는게 가능해집니다. 두 확률분포를 비교하는데 쓰이는 가장 유명한 척도로 쿨백 라이블러 발산(KL Divergence)가 있습니다. 이 척도는 두 확률분포가 완전 동일할때 0이 되고, 두 확률분포의 차이가 커질수록 그 값이 커집니다. 즉, 두 확률분포가 얼마나 다른지를 보여주는 값이라고 볼 수 있겠습니다. 

KL Divergence를 사용하면 두 확률분포의 거리를 잴 수 있으므로, 특정 주제에 대해 주제명으로 쓸만한 후보가 여럿이 있다면, 어떤 후보가 제일 좋은 주제명인지를 찾을 수 있습니다. 즉, 어떤 주제에 대해 그 단어의 확률분포가 θ라고 하고, 각 주제명 후보들의 확률분포가 l1~li라고 하면, 문제는 다음과 같이 접근할 수 있습니다.

 (여기서 D는 KL Divergence를 가리킵니다.)

위 Score를 최대로하는 li가 제일 좋은 주제명이 될 겁니다. 일단 대충 방향은 잡았습니다. 그런데 넘어야 할 산이 2개가 있네요. 1) 주제명으로 쓸만한 후보들은 어떻게 구할것이며, 2) 주제명이 가지는 단어에 대한 확률 분포는 어떻게 구할지를 해결해야 위의 공식을 사용할 수 있겠죠. 위 두 가지 문제를 저자들이 어떻게 풀었는지 각각 살펴보도록 합시다.

주제명 후보를 추출하기

후보로 쓸만한 일반적인 주제명들을 미리 정갈하게 잘 준비해놓고 있다가 꺼내서 쓰는 방법도 있겠습니다만, 이를 위해서는 인력이 많이 필요할 겁니다. 또한 일반적인 주제를 벗어나는 문헌들을 사용해 토픽 모델링을 돌릴 경우, 실제 결과에 적합한 주제명 후보들을 제안하지도 못할 거구요. 따라서 제일 좋은 것은 토픽 모델링에 쓰인 문헌들에서 주제명 후보를 추출해내는 것일 겁니다. 주제명은 말 그대로 이름이므로 주로 명사로 구성되겠죠? 따라서 입력 문헌 내에서 자주 쓰이는 명사를 뽑아내면, 주제명 후보로 적당하겠습니다.

단어 1개는 종종 주제의 의미를 담아내기에는 너무 포괄적이거나 추상적이므로('음식'보다는 '한국 음식'이라는 주제명이 좋을겁니다), 여러 단어로 이뤄진 후보를 찾아내는게 좋을겁니다. 후보를 찾는 일에는 다음 기법을 사용할 수 있습니다.

  1. 품사 태깅 이후 (얕은) 구문 분석: 입력 문헌의 언어에 대해 잘 알고 있고, 언어 분석 도구들이 개발되어 있는 경우 사용할 수 있습니다. 명사구를 찾아내야 하므로 명사 + 명사 혹은 형용사 + 명사로 이어지는 단어들을 찾아야 합니다. 이를 위해 품사 태깅을 실시하고, 서로 연결된 단어들이 무엇인지 확인하기 위해 구문 분석을 실시하는 방법입니다.

  2. n-gram 테스트: 여러 개의 단어가 연속할 확률을 수학적으로 계산하고, 실제로 해당 단어열이 등장한 횟수를 계산해 비교합니다. 특정 단어열이 예상 확률보다 더 많이 등장한다면 이는 해당 단어열이 자주 쓰인다는 뜻이므로 그 단어열은 의미 있는 단어열로 생각할 수 있습니다.
    예로 A가 등장할 확률은 10%, B가 등장할 확률은 20%라면, A-B가 연속해서 등장할 예상 확률은 10% * 20% = 2%가 됩니다. 그런데 문헌 내에서 A-B가 등장한 횟수를 따져보니, 5%가 나왔다면 A-B는 예상보다 자주 등장하는 단어쌍이 되므로, 후보에 넣습니다.

주제명 후보의 단어 확률 분포를 추정하기

어찌어찌하여 주제명 후보를 잘 뽑았다고 칩니다. 그럼 이제 각 주제명 후보들이 가지는 단어에 대한 확률 분포를 알아내야 합니다. 예를 들어 '음식'이라는 주제명 후보가 있다면, 이 후보는 {햄버거, 치킨, 쌀국수, 덮밥, ...}을 확률 분포로 가진다는 것을 추정해야 한다는 것이죠. (그래야 앞서 했던 것처럼 주제별 단어분포와 비교하여 특정 주제에 대해 이 주제명 후보가 적합한지 아닌지를 알 수 있습니다.) 잘 생각해보면, 특정 후보의 단어 분포는 결국 그 주제명과 유사한 의미의 단어들로 구성된다는 깨달을 수 있습니다. 그럼 주제명과 유사한 의미의 단어들을 어떻게 찾아낼 수 있을까요? 

2010년대 이후라면 단어 임베딩(e.g. word2vec 등)과 같은 따끈따끈한 최신 기술을 이용해 유사어를 찾아내려 했겠지만, 저자들이 해당 연구를 진행한 2000년대에는 아직 그런 기술은 없었습니다. 그래서 좀더 고전적이지만 근본적인 방법을 사용했습니다. 바로 '동시 출현'이지요. 유사한 단어들끼리는 같은 맥락에서 동시에 자주 출현하는 경향이 있습니다. 따라서 이 동시 출현 빈도를 세면 해당 단어 쌍이 서로 얼마나 유사한 의미를 가지는지 추정할 수 있습니다.

그리고 동시 출현 빈도를 계산하는 맥락(context)은 위와 마찬가지로 토픽 모델링의 입력 문헌을 사용하기로 했습니다. 즉, 특정 주제명 후보의 단어 확률 분포는, 그 주제명 후보가 등장하는 문헌들을 전부 찾아서, 거기에 등장하는 단어들의 비율을 계산하여 추정하였습니다. 이는 입력 문헌이 충분히 많다면 괜찮은 추정 방법으로 보입니다. 단, 입력 문헌이 적거나, 크게 편향되어 있는 경우 주제명 후보의 단어 분포가 우리가 예상하는 값과 크게 틀어질 수 있다는 점 숙지해두셔야겠습니다.

그래서 실제 계산 방법은?

저자들은 처음에 제시한 식을 장황하게 전개하였는데요, 결론적으로는 마지막 부분의 첫번째 항만 보시면 됩니다. 두번째 항 D(θ||C)와 세번째 항 Bias(l, C)는 상수로 취급하여 무시할 수 있거든요. 즉, 주어진 문맥 C에 대해서 주제명 후보 l과 모든 단어 w에 대해 PMI를 계산하여, 이를 주제 θ에 대한 단어 분포를 가중치로 하는 가중 평균을 계산하면 이 주제명 후보가 특정 주제에 대해 얼마나 적합한지를 알 수 있는 것입니다. 저자들은 이 값을 주제에 대한 라벨의 1차 관련성(First-order Relevance)라고 이름 붙였습니다.

PMI(w, l | C)는 다음과 같이 계산할 수 있습니다.

이때 N(w)는 단어 w가 등장한 문헌의 개수, N(l)는 주제명 후보 l이 등장한 문헌의 개수, N(w, l)은 단어 w와 후보 l이 동시에 등장한 문헌의 개수입니다. D는 전체 문헌의 개수이구요. PMI값은 동시 출현 빈도가 0이 아닌 경우에만 정의됩니다. (동시 출현 빈도가 0이라면 PMI는 log 0이 되어 그 값을 계산할 수 없게 되니깐요) 문제는 N(w, l)이 0이 되는 경우가 생각보다 많다는 것입니다. 이를 해결하기 위해서는 N(w, l)에 작은 값을 더해 0이 되는 것을 방지해주어야 합니다. 이를 Laplace smoothing이라고 부릅니다. 위 식에서는 ε가 Laplace smoothing을 해주는 상수가 되겠지요.

추가로 PMI(w, l | C)값은 주제와 상관없이 일정하다는 것에 주목하세요. 즉, 이 값을 미리 계산해두면 각 주제별로 p(w|θ) 만 바꾸어 가면서 가중 평균을 구하면 전체 스코어를 구할 수 있습니다. 컴퓨터로 구현하기에는 나쁘지 않네요!

몇 가지 개선

그런데 위의 방법대로 First-order Relevance를 계산해도 생각보다 깔끔하게 주제명을 골라낼 수는 없습니다. 종종 너무 지엽적인 주제명을 고르거나, 모든 주제에 대해서 높은 점수를 보이는 주제명이 발생하기도 하거든요. 저자들은 이를 극복하기 위해 high coverage(포괄성)와 discriminative(변별성)를 따졌습니다. 먼저 변별성을 부여하기 위해 다음과 같이 Score계산법을 변경했습니다.

주제명 l의 주제 k에 대한 점수에서 주제명 l의 k가 아닌 나머지 주제들에 대한 점수의 평균을 뺀 것입니다. μ는 변별성을 얼마나 반영할지를 조절하는 계수입니다. 0이면 변별성이 전혀 반영이 되지 않는 것이고, 1이면 최대로 반영이 되는 것이겠죠. 만약 주제명 l의 점수가 모든 주제들에서 동일하게 등장한다고 하면 변별성 점수는 낮아지게 됩니다. 반면 다른 주제들에서는 점수가 낮고, 특정 주제 k에서만 높게 나타나면 변별성 점수가 올라가구요.

포괄성은 한 주제를 나타내는데 여러 주제명을 사용하는 경우에 사용할 수 있습니다. 이 때 서로 겹치지 않으면서 실제 주제를 잘 포괄하도록 하는 주제명들을 선택하는 것이죠. 예를 들어 미술과 과학에 관련된 주제가 있다고 할때 주제명 후보로 {회화, 과학, 미술, 물리학}가 뽑혔다고 하면, 이 중 '미술'과 '과학'을 고르는 게 좋습니다. 왜냐하면 회화는 미술에 포함되고, 물리학도 과학에 포함될테니 굳이 겹치게 넣을 필요가 없지요. 이는 Maximal Marginal Relevance라는 방법을 통해 구현되는데요, 여기까지 설명하기엔 내용이 너무 산으로 가는 관계로 자세한 내용은 생략하도록 하겠습니다.

실험을 해봅시다

과연 First-order Relevance가 한국어와 영어에 대해 잘 작동하는지 확인해보기 위해 한국어 위키백과 15만 문서와 영어 위키백과 1만 문서를 가져와 LDA 토픽 모델링을 실시하고 자동으로 주제명을 붙여보기로 했습니다.

First-order Relevance를 계산하기에 앞서 주제명 후보들을 추출해야하는데요, 앞서 설명했다시피 구문 분석 등의 언어 분석 도구를 활용하는 방법과 n-gram 테스트 등의 통계를 이용하는 방법이 있습니다. 저는 개인적으로 구문 분석을 사용하는 것보다는 n-gram 테스트를 사용하는 걸 선호합니다. n-gram 테스트는 언어에 상관없이 적용할 수 있고, 규칙보다는 데이터에 의해 통계적으로 결과를 도출한다는 점이 딱 제 스타일이거든요. (한국어에서 쓸만한 고성능의 구문 분석기가 없다는 것도 한 몫합니다.) 그래서 저는 연어(collocation)를 추출할때 자주 사용하는 PMI를 이용해 n-gram을 추출하는 기법을 사용하기로 했습니다. 이에 대해서는 예전 포스팅을 참조해주세요.

논문에서 저자들은 bigram만 사용했지만, 사실 저자들의 기법이 bigram에 한정되는게 아니기 때문에 저는 최대 5-gram까지 추출하였고, unigram 단어들도 후보로 넣어 First-order Relevance를 모두 계산했습니다.

n-gram PMI
민족문제연구소/NNP, 친일인명사전/NNP, 수록/NNG, 예정자/NNG, 명단/NNG 35.18108
연/NNG, 평균/NNG, 기온/NNG, 연평균/NNG, 강수량/NNG 34.01953
유/NNP, 스티/NNP, 니아/NNP, 누스/NNP 25.2318
한일/NNP, 병합/NNG, 조약/NNG, 체결/NNG 24.24149
율리/NNP, 우스/NNP, 카이사르/NNP 17.41273
축구/NNG, 국가/NNG, 대표/NNG, 팀/NNG 17.35472
마누/NNP, 엘/NNG 8.76309
병조/NNG, 판서/NNG 8.746732
굵/VA, 글씨/NNG 8.743112
원자력/NNG, 발전소/NNG 8.740743

한국어 위키백과에서 등장 빈도를 바탕으로 PMI를 계산하여 내림차순으로 정렬해본 결과입니다. (이렇게 여러 단어를 구로 묶어서 분석하면 형태소 분석 결과에서 제대로 분석하지 못해 발생한 오류들도 잡아낼 수 있습니다. '유스티니아누스'처럼요). 이렇게 추출된 n-gram 상위 15000개를 대상으로 First-order Relevance를 계산하여 주제명을 자동으로 붙이는 작업을 해보았습니다.

주제-어휘 분포 상위 5개추출된 주제명
12345
대학, 대학교, 학생, 캠퍼스, 학교전문대학원
(2.98)
학점
(2.93)
단과대학
(2.87)
종합대학
(2.84)
등록금
(2.84)
영화, 감독, 제작, 작품, 개봉영화가 개봉
(2.69)
코미디 영화
(2.61)
상 후보에 올
(2.59)
출연한 영화
(2.59)
상 후보
(2.58)
고려, 조선, 태조, 시조, 왕개경
(3.05)
조선 건국
(2.97)
문하시중
(2.93)
정도전
(2.93)
사대부
(2.88)
미사일, 개발, 미국, 전투기, 공군스텔스
(2.88)
정찰기
(2.78)
대공 미사일
(2.78)
레이다
(2.73)
전투기
(2.70)
시스템, 정보, 컴퓨터, 기술, 데이터암호화
(2.26)
데이터베이스
(2.25)
취약점
(2.22)
모니터링
(2.21)
원격
(2.20)
영국, 식민지, 지역, 아프리카, 미국국내총생산
(2.58)
노예제
(2.54)
이민자
(2.50)
노예 제도
(2.47)
정착지
(2.44)
행성, 별, 항성, 질량, 지구행성계
(3.15)
중심핵
(3.12)
관측 결과
(3.08)
우주 망원경
(3.06)
항성계
(3.04)

위 표는 laplace smoothing 상수는 0.01, 변별성 계수는 0.0으로 설정했을 때의 결과입니다. 왼쪽이 주제별 단어분포를 보여주고, 오른쪽에 본 기법을 사용해서 뽑은 5개의 주제명 후보가 있습니다. 보시면 일단 주제에 맞게 이름들을 골라내긴 했는데, 종종 너무 지엽적인 경우가 보입니다. (대표적으로 스텔스나 암호화, 데이터베이스 같은 경우). 변별성 계수 μ를 0.25로 올리면 결과가 다음과 같이 바뀝니다.

주제-어휘 분포 상위 5개추출된 주제명
12345
대학, 대학교, 학생, 캠퍼스, 학교전문대학원
(2.88)
대학 순위
(2.77)
단과대학
(2.73)
세계 대학
(2.72)
학점
(2.66)
영화, 감독, 제작, 작품, 개봉코미디 영화
(2.57)
영화가 개봉
(2.57)
상 후보에 올
(2.55)
주연상
(2.53)
주연상을 수상
(2.51)
고려, 조선, 태조, 시조, 왕문하시중
(3.14)
개경
(2.90)
고려사
(2.86)
한국의 성씨
(2.86)
정몽주
(2.85)
미사일, 개발, 미국, 전투기, 공군대공 미사일
(2.91)
실전배치
(2.76)
스텔스
(2.72)
추력
(2.68)
록히드
(2.63)
시스템, 정보, 컴퓨터, 기술, 데이터컴퓨팅
(2.40)
응용 프로그램
(2.38)
프로토콜
(2.37)
프로그램을 실행
(2.35)
아키텍처
(2.34)
영국, 식민지, 지역, 아프리카, 미국노예제
(2.24)
노예 제도
(2.22)
영국의 식민지
(2.21)
국내총생산
(2.20)
정착지
(2.19)
행성, 별, 항성, 질량, 지구질량은 태양
(3.39)
주계열성
(3.33)
적색 왜성
(3.32)
항성계
(3.32)
파섹
(3.30)

변별성 계수의 효과는 영어 위키피디아 결과에서 좀더 극적으로 확인할 수 있습니다. 영어 실험의 경우 1만 문헌을 대상으로 하여 상대적으로 한국어에 비해 데이터셋이 작습니다. 데이터셋이 작을수록 이도저도 아닌 주제명들이 laplace smoothing에 의해 높은 점수를 부여받는 경향이 있는데, 이를 변별성 계수가 제법 해결해줍니다.

주제-어휘 분포 상위 5개추출된 주제명
12345
greek, god, name, bc, ancientGreek religion
(1.58)
Greek myth
(1.49)
Theogony
(1.46)
Homer's Iliad
(1.45)
Hades
(1.44)
number, function, valu, comput, measurmethod for computing
(1.19)
Taylor series
(1.12)
prime factors
(1.11)
solving the equation
(1.11)
trigonometric
(1.11)
network, internet, servic, user, communicIP network
(1.43)
Internet Protocol
(1.38)
TCP
(1.34)
IP address
(1.32)
instant messaging
(1.31)
music, instrument, guitar, play, bassvibrato
(1.9)
instrument played
(1.87)
timbre
(1.84)
bass line
(1.83)
rhythm section
(1.82)
god, book, jesus, bibl, christianSeptuagint
(1.55)
Pharisees
(1.5)
Gospel of Matthew
(1.5)
Lord God
(1.49)
Gospel of John
(1.47)
energi, particl, field, forc, physicfermions
(1.48)
speed of light
(1.48)
Maxwell's equation
(1.47)
gravitational field
(1.46)
classical physics
(1.46)

위 결과는 영어 위키백과에 대해서 주제명을 자동으로 붙인 것입니다. Laplace smoothing은 마찬가지로 0.01, 변별성 계수는 0입니다. 변별성 계수를 0.25로 높이면 다음과 같이 결과가 바뀝니다.

주제-어휘 분포 상위 5개추출된 주제명
12345
greek, god, name, bc, ancientTheogony
(1.74)
Greek religion
(1.7)
Pausanias
(1.59)
Heracles
(1.58)
Greek myth
(1.58)
number, function, valu, comput, measurequation has a solution
(1.52)
polynomials of degree
(1.49)
linear combination
(1.49)
polynomial
(1.49)
prime factors
(1.49)
network, internet, servic, user, communicIP network
(1.83)
TCP
(1.63)
link layer
(1.62)
IETF
(1.6)
IP address
(1.58)
music, instrument, guitar, play, bassinstrument played
(2.03)
vibrato
(1.99)
bass line
(1.91)
semi tone
(1.9)
rhythm section
(1.9)
god, book, jesus, bibl, christianZechariah
(1.71)
Septuagint
(1.68)
Masoretic Text
(1.66)
Masoretic
(1.64)
Pharisees
(1.63)
energi, particl, field, forc, physicPlanck constant
(1.75)
Maxwell's equations
(1.74)
wavefunction
(1.73)
fermions
(1.72)
angular momentum
(1.72)

표에서 확인가능하듯 일반적인 주제명은 상대적으로 순위가 내려가고 좀더 세부적이거나 특이한 주제명이 상위로 올라온 걸 볼 수 있습니다. 종종 주제-어휘 분포와는 조금 거리가 먼 주제명이 뽑힐 때도 있습니다. 이는 주제명과 어휘 사이의 PMI를 계산할 때 둘이 같은 문헌에 등장하는지 아닌지만 고려했기 때문입니다. 즉, 문헌이 굉장히 길어서 앞부분과 뒷부분의 내용이 크게 다른 경우, 의미적으로 전혀 연관없는 주제명-어휘 쌍이 관련 있는 것으로 카운트될 수도 있다는 거죠. 긴 문헌을 단락 단위로 잘라서 사용한다던가, window size를 고려하면 좀 더 좋은 주제명을 뽑을 수 있을 것 같네요.

그리고 n-gram PMI로 주제명 후보를 뽑았더니 종종 이상한 어구들이 뽑히는 걸 볼 수 있습니다. 이런 걸 필터링해줄 수 있으면 훨씬 깔끔한 결과가 나오겠죠?

정리

지금까지 First-order Relevance를 바탕으로 한 토픽에 이름을 자동으로 붙이는 방법에 대해 살펴보았습니다. 사실 어떻게 보면, 주제-어휘 분포에서 상위 단어를 추출해 주던것에서, 주제명 후보에서 상위 후보를 추출해주는 것으로 그 대상만 바뀐거라, 경우에 따라서는 무용지물인 기법일 수도 있습니다. 그러나 주제-어휘 분포의 단어들은 모두 unigram이기에 단어 하나만 보고 구체적인 의미를 파악하기 어려운 반면, 주제명은 n-gram이기 때문에 좀더 세부적인 의미를 보여줄 수 있습니다. 사람이 주제명을 붙이는 작업을 완전 대체하지는 못하겠지만, 주제명을 붙일 때 감을 잡아주는 보조 도구 정도로는 충분히 유용한 듯합니다. 

그리고 이 연구를 바탕으로 더욱 개선된 기법들이 최근 10년 이래 많이 등장했기 때문에 그 연구들을 태동시켰다는 점에서 이 연구가 가지는 의미는 크다고 할 수 있겠습니다.

실험해보고자 구현했던 코드들은 멀티스레딩 부분 최적화를 진행하여 tomotopy 차기 버전(0.6)에 포함될 예정입니다. 직접 돌려보시고 싶은 분들은 조금만 기다려 주세요~

관련 링크

https://medium.com/datadriveninvestor/automatic-topic-labeling-in-2018-history-and-trends-29c128cec17

https://github.com/xiaohan2012/chowmein


관련글 더보기

댓글 영역

  • 프로필 사진
    2020.03.26 16:53 신고
    와 오랜만에 방문한 블로그인데, 역시 유용한 포스팅이 딱 있네여. 잠시 머리식히러들어온거라 휘리릭 읽었지만 조만간 다시 정독하고 질문도 하러오겠습니다 :) 항상 부지런한 연구와 포스팅 감사합니다!
  • 프로필 사진
    2020.03.30 16:18
    비밀댓글입니다
  • 프로필 사진
    2020.04.02 01:40
    전 토픽 모델링 문외한이라 잘 모르겠지만~^^ 첫 단락에서 말씀하셨듯이 토픽 모델링으로 추출한 주제별 단어들을 토대로 라벨링을 진행하는 걸로 알고 있는데요~ㅎ 사실 라벨링하다보면 주제별 단어 중 핵심 주제를 대표하는 단어(=지엽적이지 않은 단어)가 꽤 많이 보이지 않을까 싶습니다~^^ 그렇다면 이런 단어들을 보다 더 특별하게 다루는 건... 좀 그럴려나요...^^.. 그리고 한글 데이터는 왜 영어 데이터보다 주제명 후보를 (사람이 보기에) 잘 추출하지 못하는 걸까요~? 단순히 전처리의 문제인가요? 그리고 위키백과 문헌들을 이용하여 결과를 냈었는데, 해당 문헌의 제목에 해당하는 단어에 더 가중치를 주는 식으로 재분석을 한다면 본 게시글의 결과보다 더 유의미한 결과가 나올까요? 물론 문헌보다 단락(or 문장)으로 범위를 줄여 score를 내는 게 가장 효과적이라고 생각하긴 합니다~^^
    • 프로필 사진
      2020.04.03 00:34 신고
      사실 영어쪽도 한국어만큼이나 잘 안되는거 같아요. 한국어가 모국어다보니깐 더 많이 들어오는게 아닐까 싶습니다.
      말씀하신것처럼 해당 주제 내에서 제일 자주 등장하는 단어는 주제-어휘 분포에서 상위에 등장하는 단어이긴 해서 이걸 잘 반영할 수 있는 개선 모형이 있으면 훨씬 좋아질거 같아요. 제안하신것처럼 제목이나 초록 등 문헌의 구조적인 특징을 활용하는 것도 좋은 대안이라고 생각이 됩니다. 관련 연구에 어떤게 있는지는 모르겠네요.