본문 바로가기

프로젝트/opinion mining

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

대충 책에 대한 요약도 끝난 것 같습니다. 처음 책을 읽을 때에는 잘 몰랐는데, 정리를 하면서 저자가 첫번째 방식에 무게를 두고 책을 쓴 것 같기도 하고요, 어쨌거나 두 번째, 세 번째 방법의 경우는 일반적으로 알려진 방식으로 접근 하는 것이니 저도 첫번째 방법을 선택하여 진행하기로 했습니다. 우선 관련논문을 읽은 후, 어떻게 구현해야할 지를 조금 고민해 보았습니다.

Thesis survey and summarization
별도의 논문을 찾아본 것은 아니고, 원 논문을 쓰윽 훑어 보고, 책에 '잘 요약되어 있네' 하는 정도 이구요, 한 가지 확인했던 사항은 왜 그 많은 단어 중에서 'excellent' 와 'poor' 였을까 하는 것인데요, 일반적인 리뷰 사이트에서 점수를 매길 때에 1~5단계 정도로 구분을 하는데 가장 높은 점수가 'excellent' 가장 낮은 점수가 'poor'여서 그렇다고 합니다. 그리고 해당 논문에서는 Epinions.com을 통해서 학습을 했다고 되어있습니다.

Selection methodology
아무래도 Sentiment Phrase를 추출하여 작업하는 첫 번째 접근방법을 선택했습니다. 우선, 어떤 리뷰사이트를 선택할 지가 가장 큰 문제일 것 같습니다. 일단 크롤이 용이해야하고, 내용도어느정도 충실해야 하니까요, 또한 한글의 경우에 POS정보를 얻기 위한 형태소분석기가 필요하다는 점과 Altavista adv. 엔진을 사용한 점이 고민되는 점이라면 고민이라고 해야하겠습니다.

Corpus candidates survey
  • 손쉽게 크롤링이 가능해야 한다
  • 이용자가 매긴 등급정보가 파싱가능해야 한다
  • 리뷰정보가 충분히 길어야 한다
  • 해당 리뷰의 분류가 명확해야 한다
  • 되도록이면 가비지 정보가 적거나 필터가능해야 한다
이런 저런 사항을 다 고려해본 결과, 세티즌사이트가 가장 적절한 듯 보였으며, '사용자 리뷰' - '베스트' 섹션이 296건으로 비교적 작고 정제된 것으로 판단되었습니다.

How to implement
  1. Crawl classified reviews
  2. Vectorizing documents with korean morphological analyzer
  3. Extracts rules from document using adverb and adjectives
  4. Extracts pattern rules manually
  5. STEP-1: Extracts pattern-matched phrases
  6. STEP-2: Calculate SO using Google API
  7. STEP-3: Get average SO for each document

Issues
  1. Korean Morphological Analyzer
    1. 현재 공개된 라이브러리도 많으니 그 중에 하나를 선택하면 될 것 같습니다.
    2. 강승식 교수님의 HAM 라이브러리
    3. 락끄님께서 공개한 한국어 형태소분석기
  2. Proximity Searching
    1. Altavista adv. 섹션의 것을 사용해도 되지만, API를 노출시키지 않고 있으며, 또한 현재 검색품질 면에서도 Google 쪽이 좀 더 나은 것 같습니다.
    2. Google의 경우는 약간의 절차만 통하면 (물론 제약이 있지만) 검색 API를 사용할 수 있습니다.

Google proximity searching
구글의 경우 근접어 검색을 현재 직접적으로 지원은 하지 않는 것처럼 보이지만, 대충 비슷하게는 가능할 것 같습니다. 이 기사를 통해서 정보를 얻었습니다. 생각보다 간단합니다. 애스태리스크 (*) 기호를 통해서 검색이 가능합니다. 알타비스타의 경우 기본 근접어 검색의 범위는 10개 입니다.

'good camera'이라는 키워드를 검색할 때에 'good camera'와 'excellent' 라는 키워드가 10단어 정도 떨어져 있어도 괜찮다라는 조건으로 검색하려고 한다면?