본문 바로가기

프로젝트/opinion mining

A Holistic Lexicon-Based Approach to Opinion Mining

A Holistic Lexicon-Based Approach to Opinion Mining by Bing Liu

Opinion mining 이라는 분야가 요즘 간간히 귀에 들리고 있는데, 저도 관심을 두고 공부하고 있습니다. 한국어로 뭐라 번역하기도 애매하고 해서 강좌의 제목을 그대로 올렸구요..
일단, Bing Liu 라는 분이 쓴 Web data mining 이라는 책의 저자이신 분이니 좀 인지도 있으신 분인가 하는 생각이 들었습니다.

일단 동영상 강의도 들을 수 있고 물론 ppt 자료도 다운로드가 가능합니다. 간략하게 내용을 정리해 보려고 합니다.

 구구절절 내용을 보기보다는 간단히 설명해보면, 우선 'Camera에 대한 Opinion mining을 한다' 라고 하면 해당 'Camera에 대한 긍정적인 또는 부정적인 의견을 수집 및 요약하여 보여주는 것'이라 말할 수 있을 것 같습니다. 물론 아주 협소한 범위내의 표현이라 생각됩니다만, 오히려 이해하기에는 편하지 않나 하는 생각이 들었습니다.

  1. Facts and opinions
    1. 현재 세상의 정보를 찾는 방법은 사실(facts)들의 나열 즉, 수 많은 문서들을 키워드들의 연관도 순으로 정렬하는 방식이다.
    2. 의견은 이러한 키워드들의 관계만을 통해서 표현되기 어려우며, 요약되거나 통합되지 않는다면, 전달되기 힘든 개념이다.
  2. Opinion mining - the abstraction
    1. 즉, 대상물을 추상화하는 과정으로 보여집니다.
    2. Basic components
    3. Opinion holder: Opinion을 가진 Person 혹은 Organization
    4. Object: 의견이 표현된 대상이 되겠습니다.
    5. Opinion: 외관, 태도 또는 의견 (Object에 따라서 달라지겠지요 사물이면 외관, 사람이면 태도 또는 이벤트이면 의견 등등으로 말이지요)
  3. Object/entry
    1. Components, Sub-components 의 Hierachy 로 표현되고 각 Component는 attributes를 가지고 있습니다.
    2. 이러한 Component와 Attributes를 통칭하여 Features 라고 표현합니다.
  4. Model of review
    1. Opinion holder가 Positive, Negative 혹은 Neutral 한 의견을 Features 의 sub-set에 코멘팅 하는 과정을 통해서 opinion이 생성됩니다
  5. Opinion mining tasks
    1. Document level: 리뷰의 감성적인 분류를 수행
      1. Positive / Negative / Neutral
    2. Sentence level: 주관적인 것과 객관적인 분류를 수행
      1. Objective / Subjective
    3. Feature level: 리뷰어의 코멘트 등을 통해 자질을 구분
      1. Positive / Negative / Neutral
    4. 다양한 리뷰들을 통해서 의견의 요약을 수행합니다.
  6. Opinion words (Dictionary-based approarches)
    1. 긍정(Positive): beautiful, wonderful, good, amazing
    2. 부정(Negative): bad, poor, terrible, cost someone an arm and a leg
    3. Context 에 독립적인 단어 (ex_ good) 와 그렇지 못한 단어 (small, long ..) 등을 구분하여 저장할 필요가 있습니다.
    4. small, long 등의 단어는 떄로는 positive 하게 때로는 negative 하게 쓰일 수 있다는 의미입니다.
  7. Corpus-based approarches
    1. 대량의 코퍼스 내에서 구문적인 규칙을 습득 및 공기관계(co-occurrence)와 패턴 추출을 통하여 도메인 독립적인 의견을 학습할 수가 있습니다.
    2. Conjunction의 특징은 유사한 의미를 지니는 특성을 가지므로 이러한 정보도 동시에 사용할 수 있습니다. ( ex_ 이 카메라는 셔터스피드가 뛰어납니다. 그리고 가격도 쌉니다 )
    3. 정답셋을 가지고 있다면 기계학습을 통하여 해당 단어들의 가중치를 추출한다거나 정답에 미치는 영향 등을 파악하여 도메인에 독립적인지 그렇지 못한 지를 판별할 수 있겠습니다.
  8. Our approarch
    1. 한 문장내에 Conjunction을 포함하는 경우
    2. 한 문장내에 Conjunction이 포함되지 않더라도 유사한 패턴이 발견되는 경우
    3. 한 문장내가 아니더라도 연결된 문장의 경우 Conjunction Rule 을 적용
  9. Handling of many constructs
    1. "a good deal of": good이 의견에 사용되지 않은 경우
    2. "not only ...": not 이 부정에 사용되지 않은 경우
    3. "... but also": but 이 반대의견에 사용되지 않은 경우
이렇게 정리하고 보니 대략 어떠한 과정을 거치면 가능하겠다는 생각이 조금씩 들기 시작합니다. 만일 이러한 시스템을 특정 도메인에 한정하여 구현해본다면 어떨까 생각해 봅니다.

예를들어 'DC인사이드 카메라 게시판에서 특정 카메라 선택되었을 때에 해당 카메라의 평가를 표현하는 시스템을 구현하라'라고 한다면 어떨까요?
  • 해당 토픽을 포함하는 모든 글의 수집 (가장 중요하며, 학습을 하기에 충분히 클 것)
  • 해당 코퍼스 내에서 긍정/부정/중립 의미를 지니는 단어 및 시소러스 사전 빌딩
  • 한국어 형태소분석기를 통한 모든 글의 벡터화 (필요에 따라서 POS정보도 사용)
  • 기계학습을 위한 긍정/부정/중립 평가가 내려진 리뷰글 수집 또는 빌딩
  • 학습집합을 통하여 Opinion Word 들의 가중치 계산 혹은 독립성 판단
  • 다양한 자질의 추출을 통한 기계학습 기법 수행
  • 휴리스틱 적용을 위한 콘텐츠 분석을 통하여 규칙 추출
  • 부여된 단어의 가중치 및 감성의 정보를 통해서 문서의 분류 수행
  • 분류된 문서에서 Conjunction을 이용하여 주요 문장을 추출하고 요약한다
  • 생성된 요약정보와 계산된 가중치 정보를 통하여 결과와 평가를 출력한다
우선 Document level 의 분류를 위한 자질을 다시 정리해보면...
  • 긍정/부정/중립 의미를 지니는 단어(유사어)들이 코퍼스 내에서 출현할 확률
    • 긍정: 좋은 (0.8), 훌륭한 (0.9)
    • 부정: 별로 (0.7)
  • 이러한 확률정보와 학습셋에서 정답에 사용되는 정보를 이용한 단어의 가중치
그리고 Sentenc level 의 분류를 위한 자질은...
  • 한 문장 내에서 발견되는 Conjunction의 종류 및 출현할 확률
    • Conjunction: 그리고 (0.7), 또한 (0.6)
    • Contrary: 그러나 (0.8)
  • Conjunction이 발견되었을 때에 해당 Conjunction의 정답 기여도 (가중치)
  • 한 문장 내에서 발견되는 Pseudo Conjunction 패턴의 종류 및 출현할 확률
    • Punctuation : 구두점 정도일까요?
  • Pseudo Conjunction의 정답 기여도
  • 연결된 문장에서 Inter-Pseudo Conjunction의 패턴의 종류 및 출현할 확률
  • Inter-Pseudo Conjunction의 정답기여도
  • Heuristic 을 위한 Rule 추출
Pseudo Conjunction의 경우 조금 애매하긴 한데요, 콤마 내지는 느낌표 등의 구두점이 될지도 모르겠다는 생각도 해보았습니다. " 이 카메라의 야간 촬영의 성능은 정말 발군입니다!! 배터리 수명도 굉장하구요... " 와 같이 말이지요..

마지막으로 Feature-based opinion summary 작업은...
  • 위에서 추출된 Conjunction Rule 에 의해서 추출된 문장들을 Summary로 작성
Part-Of-Speech (POS) : 품사
단어를 그 문법적 기능에 따라서 분류한 것의 가장 큰 단위.

이러한 시스템이 구현되더라도 평가는 어떻게 할 수 있을까요?
아마도 사람이 평가한 점수와 시스템이 평가한 점수를 비교하는 방법이 있지 않을까 싶은데요, 해당 논문을 아직 읽어보지 못한 관계로 섣부른 제 생각을 말하는 것은 좀 무리겠죠?