본문 바로가기

프로젝트/opinion mining

Opinion Mining을 활용한 미니 프로젝트 (2)

지난번 포스팅에서 얘기한 대로, 교재의 요약을 먼저 해보았습니다. 이렇게 그냥 정리만 하는 데에도 시간이 제법 걸리네요... 한글로 번역은 되도록이면 줄이고, 원어를 그대로 사용하려고 하지만, 영 의미가 전달이 쉽지 않는 것에 대해서만 괄호로 묶어서 정리했습니다.

Sentiment Classification (감성분류)
해당 문서에서 특정 객체에 대한 전반적인 의견 또는 개인적인 주관이 어떠한가에 대한 판단 또는 분류를 하는 것으로, 크게 아래의 세 가지의 접근방법이 소개되고 있습니다. 설명에 앞서 일반적으로 문서분류하면 생각나는 것이 토픽분류인데 아래와 같이 다른 점들이 있습니다.

Topic Classfication vs. Sentiment Classification
토픽 관련 단어 위주의 명사 <-> 감성단어 위주의 형용사나 부사
정해진 토픽을 클래스로 매칭 <-> 긍정, 부정 또는 중립의 클래스로 매칭

Sentiment based on sentiment phrase
감성적인 구나 절을 기반한 분류방법으로 evaluative text에 포함되어 있는 긍정 또는 부정적인 단어 또는 구 들에 근거하여 classification을 수행합니다.

Part-of-Speech of a word?
linguistic category that is defined by its syntactic or morphological behavior
단어의 형태소를 의미하며, 언어상의 또는 형태소상의 행태를 정의하는 범주를 말합니다.
  1. 문서로부터 형용사 또는 부사를 포함한 구를 추출
    1. 주관이나 의견을 포함할 수 있는 척도
    2. 두개의 연속된 단어들만 추출. (하나의 단어는 모호성이 큰 것들이 많더라)
    3. 여러가지 패턴에 규칙한 단어를 추출한다. (형용사 + 명사 등등)
  2. PMI(pointwise mutual information)척도를 통한 SO(semantic orientation)을 예측.
    1. PMI의 의미는 term과 term간의 상호 공기관계(co-occurrence relation)정보를 통하여 얼마나 종속적인지 비종속적인 관계인지를 판단.
    2. PMI = log2(Pr(term1 and term2) / Pr(term1) * Pr(term2))
      1. term들 간의 상호 independancy
    3. SO(phrase) = PMI(ph, "excellent") - PMI(ph, "poor")
      1. Step 1에서 추출된 phrase와 "excellent"와의 score와 "poor"와의 score의 차이를 SO(Semantic Orientaion, 의미적인 지향점 또는 방향)이라고 한다면 다시 정리하면,
    4. SO(phrase) = log2(hits(ph NEAR"excellent")hits("poor")/
                           hits(ph NEAR"poor")hits("excellent"))
      1. hits(ph NEAR"excellent"): phrase로 검색한 결과와 "excellent"와 near 검색한 hit수
  3. 1단계 에서 추출된 모든 phrase에 대한 평균 SO값을 계산하고 양수이면 positive 음수이면, negative로 간주하여 문서를 분류
참고링크:
The Penn Treebank Project
[521] P. Turney. Thumbs Up or Tumbs Down? Semantic Orientation Applied to Unsupervised Classification of Reviews.
[472] B. Santorini. Part-of-Speech Tagging Guidelines for the Penn Treebank Project.

Classification using text classification methods
토픽 기반의 text classification 문제로 판단하여 unigram(a bag of individual words)을 사용하였으며, NB, SVM 등의 기법을 통하여 각 700개 씩의 positive, negative 학습집합을 분류학습 하였습니다.
Accuracy: 81~82.9%
Evaluation: 3-fold cross validation
Etc: no stemming, no stopword removal

Classification using a score function
Review Sentiment Classificaiton을 위한 Score Function을 고안하여 적용한 방법
  1. Score(t) = Pr(t|C) - Pr(t|C^) / Pr(t|C) + Pr(t|C^)
    1. Pr(t|C) term t가 class C에 포함될 확률
    2. Pr(t|C^) term t가 class C가 아닌 class에 포함될 확률
    3. 전체 class에서 포함될 확률과 그렇지 않을 확률의 차이를 척도로 판단.
  2. Class(d) = C, eval(d) > 0 and C^, otherwise
    1. eval(d) = sigma(score(t))
  3. 일반적인 명칭에 대한 치환
    1. ("_productname"), ("_unique"), ("_producttypeword") or NUMBER 등
Accuracy: 84.6~88.3%
Etc: no stemming, no stopword removal

참고링크:
[122] K. Dave, S. Lawrence, and D. Pennock. Mining the Peanut Gallery: Opinion Extraction and Semantic Classification of Product Reviews

Conclusion
문서 범위의 감성분류는 다음과 한계점을 포함한다.
  • 사람들의 기호까지 인식할 만큼 상세한 수준의 분류가 아니다. (true/false)
  • 리뷰의 영역이 아니면, 분류해내기 힘들다. (review domain으로 한정)
    • 웹 문서 도메인에서 해당 evaluative 문서를 뽑아내는 것은 또 다른 숙제이다