[논문] A new topic modeling based approach for aspect extraction in aspect based sentiment anlysis: SS-LDA
정리한 논문:
https://www.sciencedirect.com/science/article/abs/pii/S0957417420309519
지난 번 작성한 논문의 주제가 흥미로워서 이용수도 많이 나오니 뿌듯하다.
학회에 제출한 연구는 LDA topic modeling으로 각 리뷰를 토픽 기준으로 나누고
Logistic regression을 통해 (감성 사전을 활용해 회귀계수 값을 바탕으로) 긍부정으로 분류하였다.
나는 리뷰 하나를 한 document로 활용했는데,
LDA가 짧은 텍스트에서는 두 가지 문제가 존재한다.
리뷰들을 토픽으로 묶기 위해서는 동시발생 빈도가 높은 단어들끼지 묶어주어야하는데,
문서 길이가 비교적 짧은 '리뷰' 특성 상
동시 발생 패턴(co-occurence)이 부족하고 data sparcity 문제가 발생한다.
그래서 연구과정에서도 전처리 방법을 다양하게 바꾸어보아도
토픽들의 coherence값을 높이는데 큰 차이를 내기 어려웠었다.
논문 핵심
본 논문은 두 가지 방법으로 이 문제를 해결한다.
1. sentence segmentation
먼저, 기존 LDA에서는 문장에서 aspect terms를 찾아
이를 가지고 동시 발생 빈도를 활용해 토픽 분류를 진행하는데,
SS-LDA는 문장에서 단어들을 추출하는 것이 아닌, 먼저 문장을 세분화한다.
single aspec를 가지도록 문장을 자르는 것이다.
ex. '카메라의 포토샷이 좋고, 타이머의 시간 설정이 자유롭다'
기존 LDA는 [ 카메라, 포토샷, 타이머, 시간, 설정 ] 과 같이 추출을 하는데,
SS-LDA는 먼저 [ 카메라의 포토샷이 좋고 / 타이머의 시간 설정이 자유롭다]는 식으로
문장을 single aspect를 가지도록 분리한다.
기존 LDA는 BOW 모델을 활용하기에 저렇게 추출하는 것인데,
저렇게 되면 카메라와 포토샷이 유사한 의미를 지니는 토픽을 분류되어야 하지만,
토픽 할당이 독립적이기에 다른 토픽에 분류될 수 있다.
즉, aspect-related 단어들의 관계가 고려되지 못하는 것이다.
2. Grouping- sentence segment LDA ( SS-LDA )
sentence segmentation을 거치고 분리된 문장 세그먼트들을 그룹화하는 과정이다.
기존 LDA는 BOW 모델을 활용된다.
SS-LDA는 문장 세그먼트(SS)가 토픽에 할당되면 문장 세그먼트에 포함된 모든 단어가 그 토픽에 할당된다.
LDA공식 정리
▶ ‘문서 D의 단어 W에 대한 토픽을 지정하는 과정에서 단어 W에 대한 토픽 Z를 선택할 확률’
▶ 각 깁스 샘플링에서 아래와 같은 방법으로 반복한다
공식의 논리: 문서의 단어에 대한 새로운 토픽 Z를 선택할 때 다음과 같은 두 문제를 고려한다.
1. (곱셈 왼쪽 공식) 이 문서에서 토픽 Z는 얼마나 일반적인가
이 문서(리뷰)에서 토픽 Z가 일반적인 경우, 이 단어가 항목 Z에 할당될 확률 증가
2. (오른쪽 공식) 다른 문서에서 주제 Z는 얼마나 자주 등장하는가
단어 W가 모든 문서에서 토픽 Z에 자주 할당되는 경우, 이 W가 토픽 Z에 할당될 확률 증가
SS-LDA 공식 정리
▶ LDA에서와 같이 ‘단어’가 아닌, 문장 세그먼트를 통과하고 각 ‘문장 세그먼트’에 새로운 토픽을 할당함
▶ LDA에서 수정 사항
기존 LDA에서 수정 1 (곱셈 왼쪽 수식)
▶ (LDA) 이 문서에서 토픽 Z가 얼마나 일반적인지
→ (SS-LDA) 모든 리뷰에서 토픽 Z가 얼마나 일반적(general)인지로 전환
▶ 짧은 문서 내에서는 prodect aspect(=토픽)가 한 번만 나타나는 경우도 많기에
기존 LDA기준은 무의미해지기 때문에 ‘모든 리뷰 내’로 수정
기존 LDA에서 수정 2 (곱셈 오른쪽 수식)
▶ (LDA) 토픽 Z 외 다른 토픽 내에서 단어 W가 얼마나 자주 나타나는지
→ (SS-LDA) ‘문장 세그먼트 내 각 단어’에 대해 토픽 Z 외 다른 토픽 내에서 단어 W가 얼마나 자주 나타나는지
▶ 문장 세그먼트는 한 단어가 아니라 몇 개의 단어로 구성되어있기 때문
→ 따라서 문장 세그먼트 내 각 단어마다 ‘토픽 Z 외 다른 토픽 내에서 단어 W가 얼마나 자주 나타나는지(기존 LDA 방식)’을계산한 후 값들을 곱함
정리
토픽을 단일 단어가 아닌 문장 세그먼트에 할당하면 그룹화 성능이 크게 향상됨
전통적 LDA에서는 단어 간의 연관 관계나 단어의 coexistence 패턴이 고려되지 않기 때문
반면, SS-LDA는 단어의 공존 패턴과 그들 사이의 연관 관계를 고려함
< 예시 >
‘카메라’와 ‘촬영’이라는 단어가 있다고 가정
‘카메라’와 ‘촬영’이라는 단어는 종종 함께 존재하기에 이 두 단어는 동일한 문장 세그먼트로 나뉘게 됨
이에 따라 동일한 문장 세그먼트에 있으니, 동일한 토픽으로 할당됨
그리고 ‘촬영’이라는 단어가 ‘카메라’없이 어딘가에 존재할 때, SS-LDA가 ‘카메라’와 같은 문장 부분에 있는 ‘촬영’단어들이 모두 해당 토픽에 할당되었기에 ‘카메라’와 같은 주제에 할당할 확률이 커짐