본문 바로가기
R

오피니언마이닝 기술 적용

by seung_nari 2022. 1. 4.

Q . 빅데이터의 처리과정은 데이터 소스 수집 저장 처리 분석 시각화의 절차로 진행됩니다. 이와 같은 절차를 기반으로 스마트폰을 구매한 소비자의 상품평 댓글을 기반으로 플랫폼에 오피니언마이닝 기술을 적용하고자 할 때 각 스텝별 구축 방법론을 제시하세요.


데이터 소스

 웹 페이지에 있는 특정 스마트폰을 구매한 소비자의 상품평 댓글이 데이터 소스에 해당 됩니다. 데이터는 방정형 데이터로 스크립트 파일 저장 형태를 가지고 있고, 활용 API로는 브라우저, 응용소프트웨어(JAVA, DBMS)가 있습니다.


수집

 웹 크롤링을 이용하여 소비자의 상품평 댓글이 적혀 있는 인터넷 상의 웹페이지에서 데이터를 수집해서 분류하고 저장합니다.

 크롤링은 데이터의 수집보다 여러 웹페이지를 돌아다닌다는 뜻이 강합니다, 데이터가 어디에 저장되어 있는지 위치에 대한 분류 작업이 크롤링의 주요 목적이라고 할 수 있습니다. 스마트폰 판매 업체는 수도 없이 많이 있고 그에 따른 다양한 웹 페이지에서 댓글을 수집해야 하는 이유로 크롤링을 선정했습니다.


저장

NoSQL은 분산 환경에서 대용량의 데이터를 빠르게 처리하기 위해서 개발되었습니다. 핵심은 수평확장(Horizontal Scalability)과 고가용성(High Availability)입니다.

 

-       거대한 Map으로서 key-value 형식을 지원

-       RDBMS가 데이터의 관계를 Foreign Key 등으로 정의하고 Join 등 관계형 연상을 하지만 NoSQL은 관계를 정의하지 않는다.

-       대용량 데이터 저장을 한다.

-       분산형 구조를 통해 여러 대의 서버에 분산하여 저장하고 상호복제하여 데이터 유실이나 서비스 중지에 대비한다.

-       Schema-less


처리

Pig

-       아파치 하둡 세부 프로젝트 중 하나로, 절차적 데이터 처리 언어 프레임워크

-       Pig는 고수준 언어로 데이터 분석을 프로그래밍 할 수 있는 방대한 양의 데이터 분석 플랫폼이며, 이를 평가할 수 있는 인프라도 함께 제공한다

-       대규모 병렬 처리에 대응할 수 있는 구조라 대규모 데이터 처리가 용이하다는 것이다

 

Pig Latin의 특징

-       데이터 흐름을 명시적으로 보여 줄 수 있는 코드 작성이 가능

-       이해하기 쉽고 유지보수가 용이(대학원생들이 많이 이용)

-       시스템이 코드 실행을 자동으로 최적화 하므로 사용자는 효율성을 생각하지 않고 프로그래밍 내용에만 집중할 수 있음

-       Pig에서 제공하는 Pig Latinint, long, double 등 기본형 외에 릴레이션, , 튜플과 같은 고수준의 구조를 제공하며, Filter, Foreach, Group, Join, Load, Store 등 관계 연산도 지원, 사용자 지정 함수도 쉽게 정의 가능

-       Pig Latin으로 작성한 데이터 처리 프로그램은 논리적인 실행 계획으로 변환되고, 이것은 최종적으로 맵리듀스 실행 계획으로 변환됨


분석

 수집된 소셜 미디어 의견 데이터는 일반적으로 텍스트 데이터로 이루어져 있다. 따라서 데이터 분석을 위해 우선적으로 분석이 가능한 형태로 수집된 데이터를 정제하는 과정이 필요합니다. 전처리 작업은 다양한 종류의 비정형 데이터를 분석할 수 있도록 해주는 처리 단계입니다. 이러한 과정을 거치지 않으면 필요한 속성이 없는 불완전 문제 및 의미가 맞지 않는 값이 존재하는 노이즈 문제 등이 나타날 수 있습니다. 이에 따라 수집한 소셜 미디어 의견 데이터에 대해 전처리 작업으로 @트윗, URL, 문장부호, 숫자, 불용어에 대한 제거를 수행합니다.

 

긍정 및 부정을 표현하는 단어 정보 추출

-       기존에 구축된 사전 등 리소스를 이용하거나 수작업으로 해당 도메인의 고빈도 긍정/부정을 표현하는 단어들을 확인할 수 있다.

-       학습 데이터에서 유용한 통계 정보를 활용하여 자동으로 어휘 정보를 얻을 수도 있다.

-       한국어로 작성한 사용자 별점이 아주 높은 리뷰에서 고빈도 단어를 긍정 표현으로, 사용자 별점이 아주 낮은 리뷰에서는 고빈도 단어를 부정 표현으로 추출할 수 있다.

 

세부 평가 요소와 그것이 가리키는 오피니언의 연결 관계를 포함한 문장 인식

-       첫 번째 단계에서 구축된 어휘 정보를 사용하여 세부 평가 요소와 긍정/부정 표현을 찾으며 긍정적인 오피니언 인지, 부정적인 오피니언 인지 문장 단위로 분류하려고 여러 방법을 적용할 수 있다.

-       대량의 레이블이 부착된 학습 데이터를 생성한 후 Naïve Bayes, ME(Maximum Entropy) 모델, SVM(Support Vector Machine)과 같은 알고리즘을 적용하여 기계 학습을 수행함.

 

다음 단계에서 문장들을 분해하여 단어 도출과 함께 단어들의 극성을 분석합니다. 텍스트 안에 포함된 단어들이 긍정적인지, 부정적인지를 도출합니다. 만약 단어에 대한 극성 점수가 도출되어 있다면 이 단계에서는 단어 추출 프로세스만 수행하게 됩니다.

 

마지막 단계에서는 단어들의 극성을 바탕으로 텍스트 극성 탐지가 이루어집니다. 일반적으로 텍스트에서 단어가 출현하는 빈도와 감성점수의 가중치 합으로 텍스트 전체의 극성을 분석하게 되는데, 예를 들어 감성점수의 경우 긍정은 1, 부정은 -1의 점수를 부여하고, 단어의 감성정도에 따라 -1에서 1사이의 값을 부여합니다.


시각화

긍정/부정 표현의 수 및 유용한 문장을 추출하여 리뷰 요약 생성

-       각 세부 평가 요소에서 긍정 표현과 부정 표현의 차이를 이용하여 사용자들의 선호도를 밑에 그림과 같이 제시 가능. 이런 오피니언 마이닝 결과를 이용하여 특정 맛집의 세부 평가 요소에서 좋아하거나 싫어하는 정도를 얻을 수 있습니다.

 

R 언어

-       통계적으로 계산하고 그래픽을 처리하는 프로그래밍 언어이자 소프트웨어 환경

-       R은 통계 소프트웨어를 개발하고 데이터를 분석하는 데 널리 사용하며, 패키지 개발이 쉬워 프로그래밍 비전공자인 통계학자 사이에서 많이 활용.

-       R은 핵심 패키지와 함께 설치되며, R의 패키지 배포 환경인 CRAN에서 다양한 패키지를 내려 받습니다.

-       데이터 분석 결과를 시각화 할 수 있으며, 수학 기호가 정확히 표시되는 출판물 수준의 고화질 그래프를 제공합니다.

댓글