이하, 첨부 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다. 그러나, 다음에 예시하는 본 발명의 실시예는 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 다음에 상술하는 실시예에 한정되는 것은 아니다. 본 발명의 실시예는 당업계에서 통상의 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공되어지는 것이다.
도 1은 본 발명의 일 실시예에 따른 웹 문서에서의 의견 추출 장치를 설명하기 위한 전체적인 블록 구성도이고, 도 2는 본 발명의 일 실시예에 적용된 도메인 분류모듈을 포함한 웹 문서에서의 의견 추출 장치를 설명하기 위한 개략적인 블록 구성도이며, 도 3은 도 2의 도메인 분류모듈을 구체적으로 설명하기 위한 블록 구성도이다.
도 1 내지 도 3을 참조하면, 본 발명의 일 실시예에 따른 웹 문서에서의 의견 추출 장치(100)는, 크게 문서수집모듈(110), 언어처리모듈(120), 의견학습모 듈(130) 및 의견추출모듈(140) 등을 포함하여 이루어진다.
여기서, 문서수집모듈(110)은 인터넷(Internet) 상에 존재하는 의견 문장을 포함하는 특정의 웹 문서(10a 내지 10n) 데이터를 수집하는 기능을 수행한다. 즉, 문서수집모듈(110)은 인터넷 상에 존재하는 특정한 웹사이트(Web Site)들의 HTML(Hyper Text Markup Language) 정보를 실시간으로 다운로드(Download) 받게 된다. 이때, 웹 문서(10a 내지 10n)는 후술하는 특정의 의견학습모델을 생성하기 위하여 임의로 선별된 의견 문장을 포함하는 특정의 웹 문서 데이터를 의미한다.
이러한 문서수집모듈(110)은 하기의 표 1과 같이, 의견정보 데이터(즉, 일반 문장/문서 데이터와 이에 대한 긍정/부정 평가가 매겨진 정보 데이터)를 포함하는 웹 문서 데이터들을 선별하여 수집함이 바람직하다.
이때, 상기 의견정보 데이터를 포함하는 웹 문서 데이터들만을 선별적으로 수집하기 위한 방법으로는, 의견정보 데이터를 포함하는 특정의 웹 문서 데이터를 선별하고, 후술하는 기계학습 알고리즘(예컨대, SVM, K-NN, Bayseian 등)을 사용하여 웹 문서 선별 모델을 생성한 후, 상기 생성된 웹 문서 선별 모델을 사용하여 전체 인터넷 웹 페이지에서 의견정보 데이터가 포함된 웹 문서 데이터들만을 선별적으로 수집할 수 있다.
최근 들어서 사용자들의 자신이 본 영화나 구매한 상품 및 유명인, 국가 정책 등에 대한 평가/의견 글들을 인터넷에 올리는 양이 급증하고 있다. 하기의 표 1에 나타난 데이터도 우리가 흔히 볼 수 있는 영화에 대한 평가 글들이다.
이처럼 현재의 웹(Web)에서는 (문장/문서, 긍정/부정 점수) 쌍으로 되어 있 는 가용데이터가 크게 증가하고 있다. 이러한 웹 문서 데이터의 증가는 자동적인 의견 어휘 사전 구축 및 의견 추출 시스템 개발에 있어서 큰 기여를 하게 된다.
표현 |
점수 |
의견내용 |
★★★★★ |
10 |
재미있어 신고 |
★★★★★ |
10 |
'똑똑한' 사람들이 살아가는 이야기 신고 |
★★★★★ |
8 |
현명한 사람들의 일상 뜯어고치기! 신고 |
★★★★★ |
9 |
삼촌의 매력에 흠뻑... 신고 |
★★★★★ |
8 |
스마트한 사람들의 이야기가 아닌 평범한 사람들의 이야기 신고 |
★★★★★ |
10 |
연기도 좋고 내용도 잼있고 가슴 훈훈해지는 사랑이야기. 삼촌 너무 매력적이야∼???? 신고 |
★★★★★ |
10 |
정말 감동할만한 이야기이었어요. 신고 |
★★★★★ |
10 |
별 기대 안하고 봤는데, 보는 내내 가슴 따뜻해지는 영화였습니다. 재미도 있고요 신고 |
★★★★ |
6 |
훈훈하고 코믹하고.. 영화 넘 짧은거 같은데.. 근데 진짜 삼촌없음 어쩔뻔???? 신고 |
★★★ |
5 |
돌고돌고돌아 결국은 뻔한 이야기. 신고 |
즉, 문서수집모듈(110)을 통해 수집되는 대상 데이터는 상기의 표 1에 나타난 바와 같이, 의견정보 데이터 즉, 일반 문장/문서 데이터와 이에 대한 긍정/부정 평가가 매겨진 정보 데이터들이다.
이때, 상기 긍정/부정 평가는 일정 범위내의 점수로 표현되어지거나, 별표(★)나 기타 기호들을 이용하여 다양하게 평가될 수 있다. 본 발명에서는 이렇게 다양한 방식으로 표현되는 긍정/부정 평가는 모두 동일한 점수 범위로 재 계산되어서 사용된다.
이를 구체적으로 설명하면, 본 발명의 일 실시예에서 사용하는 점수 범위가 a∼b 라고 하였을 때에 수집한 데이터의 점수범위가 c∼d 라고 한다면, 해당 수집 점수 x는 하기의 수학식 1과 같이 변화된다.
예를 들어, 본 발명은 1∼10점 사이의 점수를 사용하고(10점에 가까울수록 긍정), 수집한 데이터는 1∼5점 사이의 점수를 사용하는 경우에, 수집한 데이터가 2점이라고 한다면, 하기의 수학식 2와 같이 계산되어 진다.
다른 경우로, 본 발명에서는 1∼10점 사이의 점수를 사용하고, 수집한 데이터가 1∼20점 사이의 점수를 사용한다고 하면, 하기의 수학식 3과 같이 계산되어 진다.
상기와 같이 수집한 데이터는 해당 데이터 문장/문서와 본 발명에서 사용하는 점수로 변환된 의견 점수 집합{(데이터, 점수), (데이터, 점수), (데이터, 점수), (데이터, 점수)}이 된다.
한편, 인터넷(Internet)은 TCP/IP 프로토콜 및 그 상위계층에 존재하는 여러 서비스, 즉 HTTP(Hyper Text Transfer Protocol), Telnet, FTP(File Transfer Protocol), DNS(Domain Name System), SMTP(Simple Mail Transfer Protocol), SNMP(Simple Network Management Protocol), NFS(Network File Service), NIS(Network Information Service) 등을 제공하는 전 세계적인 개방형 컴퓨터 네트워크 구조를 의미한다. 이러한 인터넷은 유선 또는 무선 인터넷일 수도 있고, 이외에도 유선 공중망, 무선 이동 통신망, 또는 휴대 인터넷 등과 통합된 코어망 일 수도 있다.
그리고, 언어처리모듈(120)은 문서수집모듈(110)로부터 수집된 특정의 웹 문서 데이터에 대해 문장 단위로 분리하고, 분리된 각 문장에 대해 언어처리를 수행하여 언어적인 자질(Feature)들을 추출하는 기능을 수행한다.
즉, 문서수집모듈(110)을 통해 의견으로 이루어진 데이터 집합과 사실 정보로만 이루어진 데이터 집합을 수집한다. 이후에, 언어처리모듈(120)을 통해 언어처리 예컨대, 형태소 분석(Morpheme Analyze)이나 띄어쓰기(Segmentation) 등을 수행하여 적절한 언어적인 자질(Feature)을 추출한다.
여기서, 상기 띄어쓰기(Segmentation)라 함은 입력 문장을 의미를 가지는 단위로 나누는 과정이다. 예를 들면, 입력 문장이 "나는 영화를 재밌게 봤다"라고 한다면, 결과 문장은 "나 는 영화 를 재밌 게 보 았 다"로 변환된다.
그리고, 상기 형태소 분석(Morpheme Analyze)이라 함은 상기 각 나뉘어진 단위에 대하여 어떤 품사(Part Of Speech) 정보를 지니고 있는지 찾아주는 작업이다. 예를 들면, 입력 문장이 "나는 영화를 재밌게 봤다"라고 한다면, 결과 문장은 " 나(CTP1 1인칭 대명사) + 는(fjb 보조사) 영화(CMCN 비서술 보통명사) + 를(fjco 목적격조사) 재밌(YBDO 일반동사) + 게(fmoca 보조 연결어미) 보(YBDO 일반동사) + 았(fmbtp 과거시제 선어말어미) + 다(fmofd 평서형 종결어미)"로 변환된다.
한편, 상기 언어처리는 예컨대, 형태소 분석(Morpheme Analyze) 또는 띄어쓰기(Segmentation) 처리로 수행됨이 바람직하지만, 이외에도 자질(또는 색인어) 추출을 위한 조사 처리, 한국어 굴절 처리, 또는 원형 복귀 처리 등을 수행할 수도 있다.
그리고, 의견학습모듈(130)은 언어처리모듈(120)로부터 추출된 각 문장의 언어적인 자질들에 대해 기계학습 알고리즘(예컨대, Naive Baysian, SVM, K-NN 등)을 수행하여 특정의 의견추출모델을 생성하는 기능을 수행한다.
이러한 의견학습모듈(130)은 상술한 통상의 기계학습 알고리즘을 이용하여 용이하게 구현될 수 있다. 즉, 언어처리모듈(120)로부터 추출된 언어적인 자질(Feature)을 이용하여 통상의 기계학습 알고리즘인 예컨대, Naive Baysian, SVM, K-NN 이나 기타 모델을 선택하여 학습을 수행한다. 이렇게 학습이 끝나고, 임의의 문장이나 문서가 입력이 되면, 해당 데이터가 의견 데이터인지 사실 데이터인지 구분할 수 있는 의견추출모델을 생성한다.
한편, 언어처리모듈(120)로부터 추출된 문장들은 의견이 있는 문장들도 있고, 의견이 존재하지 않은 일반 문장도 있다. 이러한 문장들은 의견학습모듈(130)을 통해 생성된 특정의 의견추출모델을 이용하여 의견이 존재하는 문장과 의견이 존재하지 않은 문장으로 구분할 수 있게 된다.
그리고, 의견추출모듈(140)은 의견학습모듈(130)로부터 생성된 의견추출모델을 이용하여 입력되는 웹 문서(20a 내지 20n) 데이터에 대해 확률적으로 의견 문장을 추출하는 기능을 수행한다. 이러한 의견추출모듈(140)은 후술하는 도메인 분류모듈(150)을 통해 분류된 각 도메인별 웹 문서 데이터들에 대해 각각 하나씩 구비되어 구현될 수도 있다. 이때, 웹 문서(20a 내지 20n)는 인터넷 상에 존재하는 모든 웹 문서 데이터를 의미한다.
추가적으로, 도 2 및 도 3에 도시된 바와 같이, 의견추출모듈(140)로부터 입력되는 웹 문서(20a 내지 20n) 데이터를 기 설정된 도메인별로 분류하여 각 의견추출모듈(140a 내지 140n)로 전달하기 위한 도메인 분류모듈(150)이 더 포함될 수 있다.
이러한 도메인 분류모듈(150)은, 기 설정된 도메인별로 해당 도메인과 관련된 웹 문서(25a 내지 25n) 데이터를 수집하는 적어도 하나의 문서수집부(151a 내지 151n)와, 각 문서수집부(151a 내지 151n)로부터 수집된 각 도메인별 웹 문서 데이터에 대해 언어처리를 수행하여 의미적으로 분리 가능한 자질들을 추출하는 적어도 하나의 언어처리부(152a 내지 152n)와, 각 언어처리부(152a 내지 152n)로부터 추출된 각 도메인별 자질들에 대해 기계학습 알고리즘을 이용하여 확률적으로 학습한 후 특정의 도메인 분류모델을 생성하는 도메인 분류학습부(153)와, 도메인 분류학습부(153)로부터 생성된 도메인 분류모델을 이용하여 입력되는 웹 문서(20a 내지 20b) 데이터에 대해 상기 기 설정된 도메인별로 확률적인 분류를 수행하는 도메인 분류부(154)를 포함함이 바람직하다. 이때, 웹 문서(25a 내지 25n)는 후술하는 특정의 도메인 분류모델을 생성하기 위하여 임의로 선별된 각 도메인별 웹 문서 데이터를 의미한다.
이를 구체적으로 설명하면, 먼저, 각 문서수집부(151a 내지 151n)를 통해 분류하기로 결정한 각 도메인별(예컨대, 영화, 책, 전자제품, 화장품, 의류, 인물, 기타 등등)로 해당 도메인과 관련된 데이터를 수집하여 도메인별로 데이터를 확보한다.
이때, 수집하는 각 도메인별 데이터는 해당 도메인에 대한 의견(Review) 데이터와 사실 데이터의 조합으로 이루어져 있다. 각 도메인별로 수집한 데이터의 의견 데이터와 사실 데이터의 비율은 모두 같거나 비슷한 비율을 유지하도록 하여, 데이터가 순수하게 도메인에 따라서 분류되도록 한다.
다음으로, 이렇게 수집한 도메인들에서는 각 도메인에서 적절한 자질(Feature)을 추출하기 위해서 각 언어처리부(152a 내지 152n)를 통해 언어처리를 수행하게 된다. 이때, 상기 언어처리는 예컨대, 형태소 분석(Morpheme Analyze)이나 띄어쓰기(Segmentation) 등을 통해서 의미적으로 분리 가능한 언어 단위로 나누게 된다.
한편, 후술하는 기계학습 알고리즘 모델에 입력되는 각 도메인의 자질(Feature)은 다음과 같다.
예를 들어, 도서관련 도메인에서 입력(Input) 데이터가 "저자는 도서 A에서 흥미진진하게 글을 구성하였다."일 경우, 상기 띄어쓰기(Segmentation)를 수행하면, "저자 는 도서 A 에서 흥미진진 하 게 글 을 구성하 였다."로 변환되고, 상기 형태소 분석을 수행하면, "저자(CTP3 3인칭 대명사) + 는(fjb 보조사) 도서(CMCN 비서술 보통명사) A(F 외국문자) 에(UM 체언 추정) + 에서(fjcao 일반 부사격조사) 흥미진진(CMCPA 동작성 서술 보통명사) + 하(fph 형용사파생접사) + 게(fmoca 보조 연결어미) 글(CMCN 비서술 보통명사) + 을(fjco 목적격조사) 구성하(CMCN 비서술 보통명사) + 이(fpd 동사파생접사) + 었(fmbtp 과거시제 선어말어미) + 다(fmofd 평서형 종결어미) + .(g 기호)"로 변환된다.
이때, 상기 띄어쓰기(Segmentation)를 수행한 데이터만 사용하는 경우, 해당 도메인의 자질은 다음과 같다.
① 유니그램(Unigram) : 저자, 는, 도서, A, 에서, 흥미진진, 하, 게, 글, 을, 구성하, 였다,.
=> a b c d e -> a, b, c, d, e
② 바이그램(Bigram) : 저자 는, 는 도서, 도서 A, A 에서, 에서 흥미진진, 흥미진진 하, 하 게, 게 글, 글 을, 을 구성하, 구성하 였다, 였다 .
=> a b c d e -> a b, b c, c d, d e
③ 트라이그램(Trigram) : 저자 는 도서, 는 도서 A, 도서 A 에서, A 에서 흥미진진, 에서 흥미진진 하, 흥미진진 하 게, 하 게 글, 게 글 을, 글 을 구성하, 을 구성하 였다,.
=> a b c d e -> a b c, b c d, c d e
한편, 상기 형태소 분석을 수행한 데이터를 사용하는 경우, 해당 도메인의 자질은 다음과 같다. 즉, 형태소 분석 결과 특별한 의미를 가지지 않는 조사나 접사, 선 어말 어미, 종결 어미 등을 제거한 후, 상기의 띄어쓰기와 같이 유니그램(Unigram), 바이그램(Bigram), 트라이그램(Trigram) 형태의 자질을 사용할 수 있다.
① 유니그램(Unigram) : 저자, 도서, A, 흥미진진, 글, 구성하
② 바이그램(Bigram) : 저자 도서, 도서 A, A 흥미진진, 흥미진진 글, 글 구성하
③ 트라이그램(Trigram) : 저자 도서 A,도서 A 흥미진진, A 흥미진진 글, 흥미진진 글 구성하
전술한 바와 같이, 유니그램(Unigram), 바이그램(Bigram), 트라이그램(Trigram) 형태의 자질을 모두 사용하거나, 일부분만 선택적으로 사용할 수 있으며, 이는 평가 데이터를 이용한 평가를 통해 가장 높은 성능을 보이는 경우의 조합을 선택하게 된다.
이후에, 각 도메인별 자질(Feature)들은 도메인 분류학습부(153)를 통해 예컨대, Naive Baysian, SVM 또는 K-NN, 기타 일반적인 기계학습 알고리즘(Machine Learning Classifier Algorithm)을 이용하여 확률적으로 학습을 하게 된다.
예를 들면, 선형 분류기(Linear Classifier)는 하기의 수학식 4와 같이 표현될 수 있다.
여기서,
는 입력 데이터 벡터로서 본 발명의 일 실시예에서는 선택한 유니그램(Unigram), 바이그램(Bigram), 트라이그램(Trigram) 입력 데이터들이 이에 해당된다.
는 해당 각 자질(Feature)의 개수(Frequency)나, 존재 유무 등의 정보를 이용하여 벡터를 만들게 된다.
상기 벡터의 크기는 전체 자질(Feature) 수이며, 해당 문서에서 등장하지 않은 자질(Feature)은 "0" 값들 가지며, 해당 문서에서 등장한 자질(Feature)들은 그것의 개수(Frequency)나 "1" 값을 가지게 된다.
그래서,
는 예컨대, [0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1,….]과 같이 자질 벡터(Feature Vector)로 표현된다.
그리고,
는 가중치 벡터(Weight Vector)로서 각 클래스(Class)별로 각 자질(Feature)에 가중치(Weight)를 부여하는 벡터(Vector)로서 매트릭스(Matrix) 크기는 자질(Feature)의 종류 수 × 클래스(class) 개수이다.
이와 같이 학습을 하게 되면
의 값을 예측할 수 있게 된다.
의 값을 알게 되면, 임의의
가 입력되었을 때에
와 매트릭스 연산을 수행하여 어느 클래스(Class)에서 가장 높은 값을 가지는지 알 수 있게 된다.
또한, 기계학습 알고리즘에는 상기와 같은 방식으로 데이터를 사용할 수 있 게 된다. 구체적으로 Naive Baysian을 예로 들어서 설명하면, 하기의 수학식 5와 같이 표현될 수 있다.
여기서, 상기 C는 클래스(Class)를 의미하며 예컨대, 영화, 도서, 상품 등과 같은 도메인이 이에 해당된다. 상기 Fi는 각각의 자질(Feature)을 의미하며 예컨대, 유니그램(Unigram)(저자), 바이그램(Bigram)(저자 도서), 트라이그램(Trigram)(저자 도서 A) 등이 이에 해당된다.
그리고, 상기 P(C)는 클래스 C가 나올 확률이다. 예컨대, 영화 데이터가 5개, 도서 데이터가 12개, 상품 데이터가 8개라고 한다면, P(영화)는 "5/(5+12+8)" 확률이 된다.
그리고, 상기 P(F1,...,Fn)는 각각의 Fi가 동시에 나올 확률인데, 모든 클래스에 대해서 동일하게 적용되기 때문에 생략도 가능하다(모든 클래스에 동일하게 분모로 적용됨). 그리고, 상기 P(F1,...,Fn|C)는 클래스 C가 주어졌을 때, F1,...,Fn 가 생성될 확률이다.
상기의 수학식 5에서 실제 클래스 확률을 결정하는 분자들의 계산은 각각의 자질(Feature)들이 서로 조건적으로 독립적(Conditionally Independent)이라고 가정하고 구체적으로 하기의 수학식 6과 같이 계산한다.
여기서, 상기 p(F
i|C)는 임의의 C가 주어졌을 때, 상기 F
i의 확률로서,
와 같이 계산할 수 있으며, 상기 Freq(F
j|C)는 임의의 클래스 C 안에서의 자질(Feature) F
j의 개수(Frequency)를 나타낸다. 전체 자질(Feature)의 개수는 N개이다.
상기와 같이, Naive Baysian 이외에도 기타 기계학습 알고리즘에 상기 자질(Feature)들을 입력으로 받아서 임의의 입력 데이터들에 대하여 클래스 C를 결정해주는 모델을 생성 가능하게 된다.
마지막으로, 전술한 바와 같이 학습을 마치면, 하나의 도메인 분류모델이 생성되며, 도메인 분류부(154)를 통해 상기와 같이 생성된 도메인 분류모델을 이용하여 임의의 문장이나 문서가 입력으로 들어오게 되면, 해당 데이터가 어떤 도메인에 포함되는지 확률적으로 결정하게 된다.
한편, 실제로 도메인 분류모델을 사용할 때, 임의의 문장이나 문서가 입력되면, 상기의 예에서 자질(Feature)을 선택하였듯이, 해당 입력 데이터에 대해서 자질을 같은 방식으로 선택한다.
그런 다음, 해당 입력 데이터의 자질들을 도메인 분류모델에 입력하게 되면, 도메인 분류모델은 해당 자질들에 대해서 가장 높은 생성 확률을 보이는 클래스 C를 출력하게 된다.
전술한 바와 같이, 본 발명의 일 실시예에서 도메인 분류모듈(150)을 사용할 경우, 의견 추출 시 자동화된 방식으로 사전을 구축할 수 있으며, 본 발명의 일 실시예에 따른 의견 분석 장치(200)에서 의견 표현을 구분하기 위한 학습 모델도 자동적으로 생성할 수 있다.
이에 따라, 각 도메인별로 데이터를 분류하여 학습 모델을 구축하게 되면, 도메인에 최적화된 성능을 내는 의견 추출을 위한 모델을 자동적으로 생성할 수 있는 효과가 있다.
이하에는 본 발명의 일 실시예에 따른 웹 문서에서의 의견 추출 방법에 대하여 상세하게 설명하기로 한다.
도 4는 본 발명의 일 실시예에 따른 웹 문서에서의 의견 추출 방법을 설명하기 위한 전체적인 흐름도이다.
도 1 내지 도 4를 참조하면, 본 발명의 일 실시예에 따른 웹 문서에서의 의견 추출 방법은, 먼저, 문서수집모듈(110)을 통해 의견 문장을 포함한 특정의 웹 문서 데이터를 수집한 후(S100), 언어처리모듈(120)을 통해 상기 단계S100에서 수집된 특정의 웹 문서 데이터에 대해 문장 단위로 분리하고, 분리된 각 문장에 대해 언어처리(예컨대, 형태소 분석 또는 띄어쓰기 등)를 수행하여 언어적인 자 질(Feature)들을 추출한다(S110).
다음으로, 의견학습모듈(130)을 통해 상기 단계S110에서 추출된 각 문장의 언어적인 자질들에 대해 기계학습 알고리즘을 수행하여 특정의 의견추출모델을 생성한 후(S120), 의견추출모듈(140)을 통해 상기 단계S120에서 생성된 의견추출모델을 이용하여 입력되는 웹 문서(20a 내지 20n) 데이터에 대해 확률적으로 의견 문장을 추출한다(S130).
추가적으로, 상기 단계S130에서 입력되는 웹 문서(20a 내지 20n) 데이터에 대해 도메인 분류모듈(150)을 통해 기 설정된 도메인별로 확률적인 분류를 수행하는 단계를 더 포함할 수 있다.
이때, 상기 기 설정된 도메인별로 확률적인 분류를 수행하는 단계는, 상기 기 설정된 도메인별로 해당 도메인과 관련된 웹 문서 데이터를 수집하는 제1 과정과, 상기 수집된 각 도메인별 웹 문서 데이터에 대해 언어처리(예컨대, 형태소 분석 또는 띄어쓰기 등)를 수행하여 의미적으로 분리 가능한 자질들을 추출하는 제2 과정과, 상기 추출된 각 도메인별 자질들에 대해 기계학습 알고리즘을 이용하여 확률적으로 학습한 후 특정의 도메인 분류모델을 생성하는 제3 과정과, 상기 생성된 도메인 분류모델을 이용하여 입력되는 웹 문서 데이터에 대해 상기 기 설정된 도메인별로 확률적인 분류를 수행하는 제4 과정을 포함할 수 있다.
도 5는 본 발명의 일 실시예에 따른 웹 문서에서의 의견 분석 장치를 설명하기 위한 전체적인 블록 구성도이고, 도 6은 본 발명의 일 실시예에 적용된 도메인 분류모듈을 포함한 웹 문서에서의 의견 분석 장치를 설명하기 위한 개략적인 블록 구성도이다.
도 5 및 도 6을 참조하면, 본 발명의 일 실시예에 따른 웹 문서에서의 의견 분석 장치(200)는, 크게 언어처리모듈(210), 의견표현 연산모듈(220), 의견표현 표시모듈(230), 의견표현 학습모듈(240) 및 의견표현 구분모듈(250) 등을 포함하여 이루어진다.
여기서, 언어처리모듈(210)은 특정의 웹 문서(30a 내지 30n) 데이터에 존재하는 평가 결과를 갖는 의견 문장에 대해 언어처리(예컨대, 형태소 분석 또는 띄어쓰기 등)를 수행하여 의미적인 언어 단위들로 분리하는 기능을 수행한다. 이때, 웹 문서(30a 내지 30n)는 후술하는 특정의 의견표현모델을 생성하기 위하여 임의로 선별된 특정의 웹 문서 데이터를 의미한다.
이를 구체적으로 설명하면, 인터넷 상에는 영화 리뷰(Review), 상품평, 책 서평 등 각종 리뷰가 존재한다. 이러한 리뷰(Review)들은 보통 평가 문장들과 함께 평가 결과도 함께 게시되어 있다.
예를 들어,?quot;이 영화는 최고의 걸작이다."하고 10점을 주거나, "이거는 완전히 쓰레기 영화다."하고 1점을 주는 방식이다. 이러한 의견 데이터를 기반으로 하여 본 발명에서는 후술하는 의견표현 연산모듈(220)을 통해 각 의미 단위들이 가지는 긍정 점수와 부정 점수를 확률적으로 계산하여 자동적으로 별도의 의견어휘 저장모듈(260)에 저장하게 된다.
만약, 입력 문장이 「"이 영화는 정말 재밌었다" - 10점, "이번에 본거는 꽤 재밌었다" - 9점, "내 생애 최고로 재밌었던 영화" - 9점」이라고 한다면,
상기 언어처리를 수행할 경우, 「"이(SGR 지시 관형사) 영화(CMCN 비서술 보통명사) + 는(fjb 보조사) 정말(SBO 일반 부사) 재밌(YBDO 일반동사) + 었(fmbtp 과거시제 선어말어미) + 다(fmofd 평서형 종결어미)" - 10점, "이번(CMCN 비서술 보통명사) + 에(fjcao 일반 부사격조사) 본거(CMCN 비서술 보통명사) + 는(fjb 보조사) 꽤(SBO 일반 부사) 재밌(YBDO 일반동사) + 었(fmbtp 과거시제 선어말어미) + 다(fmofd 평서형 종결어미)" - 9점, "나(CTP1 1인칭 대명사) + 에(fjcao 일반 부사격조사) 생애(CMCN 비서술 보통명사) 최고(CMCN 비서술 보통명사) + 로(fjcao 일반 부사격조사) 재밌(YBDO 일반동사) + 었(fmbtp 과거시제 선어말어미) + 던(fmotgp 과거시제 관형형 전성어미) 영화(CMCN 비서술 보통명사)" - 9점」과 같이 언어 단위별로 분리된다.
의견표현 연산모듈(220)은 언어처리모듈(210)로부터 분리된 각 언어 단위별로 긍정적/부정적 표현으로 될 확률값을 정규화(Normalization)하여 계산하는 기능을 수행한다.
이를 구체적으로 예를 들어 설명하면, 입력 데이터는 아래와 같이, 긍정 정도를 나타내는 점수와 해당 점수에 속하는 문장/문서들로 이루어져 있다. 이 의견 데이터들은 상술한 바와 같이 일반 웹에서 사용자가 긍정/부정 점수와 의견을 같이 올리는 리뷰 사이트들을 통해서 수집하게 된다.
「① 1점 - ["A를 봤는데 지루했다", "B는 최악이다",…],
② 2점 - ["C를 봤는데 실망이었다", "D는 졸작이다",…],
③ 9점 - ["E를 봤는데 흥미진진 했다", "F는 수작이다",…],
④ 10점 - ["G는 최고의 영화이다", "H는 세계 최고의 영화이다",…].」
이러한 데이터들은 전술한 바와 같이, 띄어쓰기(Segmentation)와 언어별로 형태소 분석(Morpheme Analyze)을 수행하게 된다(다른 언어에서도 동일하게 적용 가능하다). 그러면, 아래와 같이 의견 데이터가 변환된다.
「① A(F 외국문자) + 를(fjco 목적격조사) + 보(YBDO 일반동사) + 았(fmbtp 과거시제 선어말어미) + 는데(fmocs 종속 연결어미) + 지루(CMCPA 동작성 서술 보통명사) + 하(fph 형용사파생접사) + 였(fmbtp 과거시제 선어말어미) + 다(fmofd 평서형 종결어미), B(F 외국문자) + 는(fjb 보조사) + 최악(CMCPS 상태성 서술 보통명사) + 이(fpd 동사파생접사) + 다(fmofd 평서형 종결어미),
② C(F 외국문자) + 를(fjco 목적격조사) + 보(YBDO 일반동사) + 았(fmbtp 과거시제 선어말어미) + 는데(fmocs 종속 연결어미) + 실망(CMCPA 동작성 서술 보통명사) + 이(fpd 동사파생접사) + 었(fmbtp 과거시제 선어말어미) + 다(fmofd 평서형 종결어미), D(F 외국문자) + 는(fjb 보조사) + 졸작(CMCN 비서술 보통명사) + 이(fpd 동사파생접사) + 다(fmofd 평서형 종결어미),
③ E(F 외국문자) + 를(fjco 목적격조사) + 보(YBDO 일반동사) + 았(fmbtp 과거시제 선어말어미) + 는데(fmocs 종속 연결어미) + 흥미진진(CMCN 비서술 보통명사) + 하(YBDO 일반동사) + 였(fmbtp 과거시제 선어말어미) + 다(fmofd 평서형 종결어미), F(F 외국문자) + 는(fjb 보조사) + 수작(CMCPA 동작성 서술 보통명사) + 이(fpd 동사파생접사) + 다(fmofd 평서형 종결어미),
④ G(F 외국문자) + 는(fjb 보조사) + 최고(CMCN 비서술 보통명사) + 의(fjcg 관형격조사) + 영화(CMCN 비서술 보통명사) + 이(fpd 동사파생접사) + 다(fmofd 평서형 종결어미), H(F 외국문자) + 는(fjb 보조사) + 세계(CMCN 비서술 보통명사) + 최고(CMCN 비서술 보통명사) + 의(fjcg 관형격조사) + 영화(CMCN 비서술 보통명사) + 이(fpd 동사파생접사) + 다(fmofd 평서형 종결어미)」
다음으로, 의견표현 연산모듈(220)을 통해 이렇게 언어처리가 수행된 의견 데이터를 이용하여, 각 언어 단위가 가지는 긍정/부정 수치를 얻어내는 것이다.
예를 들어, "최고(CMCN 비서술 보통명사)"가 얼마 정도의 긍정/부정을 나타내는지 "최고(CMCN 비서술 보통명사)"라는 단어가 각 점수대별(1∼10)에 어떻게 분포하는지를 확률적으로 하기의 수학식 7과 같은 수식을 거쳐서 계산하게 된다.
아래에서 나타내는 wj는 "최고(CMCN 비서술 보통명사)"이며, 이와 같이 단어와 태그정보(POS - Part Of Speech)의 조합을 나타내거나, "최고" 태그정보를 제외한 하나의 단어를 나타낼 수 있다.
즉, 모든 1∼10점의 점수대에 모두 같은 개수의 데이터가 존재한다면 하기의 수학식 7과 같이 구할 수 있게 된다.
여기서, 상기 S는 모든 점수 집합을 의미한다. 예를 들어, 영화 평가문이 1 ∼10점이 있다면, 1∼10점으로 점수가 매겨진 문장 집합을 의미한다. 상기 Score(si)는 해당 점수 집합의 실제 점수를 의미한다. 즉, 10점 점수 집합의 Score(si)는 10이 된다.
그리고, 상기 Score(w
i)는 w
i의 긍정/부정 점수를 나타낸다. 상기 Freq(w
j,s
i)는 단어 w
j가 점수 집합 s
i에서 나타나는 횟수를 나타낸다.
는 결국 모든 점수 집합에서 단어 w
j가 나타난 횟수를 더한 값으로서, 결국 전체 데이터에서 w
j가 나타난 횟수를 의미한다.
상기의 수학식 7과 같은 간단한 평균으로 구할 수 있으며, 예를 들어, "재밌"이란 10점 문장 2개, 9점 문장 2개만이 존재한다고 가정하면, 하기의 수학식 8과 같이 구할 수 있다.
여기서, 의미 단위는 "재밌"을 형태소인 "YBDO"와 함께 묶어서 하나의 의미 단위로 구성할 수도 있으며, "재밌"이라는 단어 하나만을 가지고 의미 단위로 구성할 수도 있다.
한편, 현실 상황에서는 모든 점수대에서 같은 개수의 문장이 존재하는 경우는 드물다. 이런 환경에서 상기와 같은 단순히 평균을 적용하게 된다면, 10점대의 데이터가 10만개, 1점대의 데이터가 1만개가 있는 환경에서 "영화"와 같이 모든 점수대에서 자주 등장하는 단어는 단순히 평균이 되어 버리기 때문에, 10점대의 데이터가 많다는 이유 하나만으로 10점에 가까운 상당히 긍정적인 단어로 판단되는 문제점이 존재한다.
예를 들어, "영화"라는 키워드가 10만개 10점대 문장에서 5만번 등장하고, 1만개 1점대 문장에서 5000번 등장했다고 가정하면, 하기의 수학식 9와 같이 계산되어 진다.
상기와 같이 "영화"라는 키워드는 10점대와, 1점대에서 등장하는 비율이 똑같아서, 상식적으로 보면 5점대에 가까워야 맞지만, 각 점수대의 데이터 개수가 다르면 상기와 같은 문제가 발생한다. 그래서, 각 점수대의 데이터의 개수를 고려하여 하기의 수학식 10이 필요하다.
여기서, 상기 P(w
j|s
i)는 w
j가 s
i 점수 집합에서 나타날 확률 값이다. 그래서, 상기 w
j의 s
i에서의 빈도수를 s
i 안의 전체 단어 수
로 나눈 것이다.
상기의 수학식 10으로 위에서 예제로 든 문제상황 "영화"라는 키워드가 10만개 10점 문서에서 50000번 나타나고, 1만개 1점 문서에서 5000번 나타나는 상황을 다시 계산해 보면 하기의 수학식 11과 같이 나타낼 수 있다.
전술한 바와 같이, 단어가 각 점수대에서 나타나는 확률값을 이용하여 정규화(Normalization)를 수행하여 점수대의 크기에 따라 점수가 치우치는(Biased) 문제를 해결하게 된다.
다음으로, 상기와 같이 각 의미 단위들의 긍정적/부정적인 점수를 계산하여 별도의 의견어휘 저장모듈(260)에 저장하게 된다.
그리고, 의견표현 표시모듈(230)은 의견표현 연산모듈(220)로부터 계산되거나 의견어휘 저장모듈(260)에 저장된 각 언어 단위별 확률값과 기 설정된 의견표현 기준값을 비교하여, 각 언어 단위별 확률값이 상기 기 설정된 의견표현 기준값보다 클 경우 긍정 의견표현으로 표시하고, 각 언어 단위별 확률값이 상기 기 설정된 의견표현 기준값보다 작을 경우 부정 의견표현으로 표시(Marking)하는 기능을 수행한다.
이를 구체적으로 예를 들어 설명하면, 입력 문장이 「① 이(SGR 지시 관형사) 영화(CMCN 비서술 보통명사) + 는(fjb 보조사) 정말(SBO 일반 부사) 재밌(YBDO 일반동사) + 었(fmbtp 과거시제 선어말어미) + 다(fmofd 평서형 종결어미) - 10점,
② 이번(CMCN 비서술 보통명사) + 에(fjcao 일반 부사격조사) 본거(CMCN 비서술 보통명사) + 는(fjb 보조사) 꽤(SBO 일반 부사) 재밌(YBDO 일반동사) + 었(fmbtp 과거시제 선어말어미) + 다(fmofd 평서형 종결어미) - 9점,
③ 나(CTP1 1인칭 대명사) + 에(fjcao 일반 부사격조사) 생애(CMCN 비서술 보통명사) 최고(CMCN 비서술 보통명사) + 로(fjcao 일반 부사격조사) 재밌(YBDO 일 반동사) + 었(fmbtp 과거시제 선어말어미) + 던(fmotgp 과거시제 관형형 전성어미) 영화(CMCN 비서술 보통명사) - 9 점,
④ 이(SGR 지시 관형사) 영화(CMCN 비서술 보통명사) + 는(fjb 보조사) 재밌(YBDO 일반동사) + 지(fmoca 보조 연결어미) 않(YA 보조용언) + 았(fmbtp 과거시제 선어말어미) + 다(fmofd 평서형 종결어미) + .(g 기호) - 1점」이라고 한다면,
상기 긍정/부정 의견표현으로 표시된 문장은 다음과 같다.
「① 이(SGR 지시 관형사)/NEUTRAL 영화(CMCN 비서술 보통명사) /NEUTRAL + 는(fjb 보조사) /NEUTRAL 정말(SBO 일반 부사) /NEUTRAL 재밌(YBDO 일반동사)/POSITIVE + 었(fmbtp 과거시제 선어말어미) /NEUTRAL + 다(fmofd 평서형 종결어미) /NEUTRAL - 10점,
② 이번(CMCN 비서술 보통명사) /NEUTRAL + 에(fjcao 일반 부사격조사) /NEUTRAL 본거(CMCN 비서술 보통명사) /NEUTRAL + 는(fjb 보조사) /NEUTRAL 꽤(SBO 일반 부사) /NEUTRAL 재밌(YBDO 일반동사) /POSITIVE + 었(fmbtp 과거시제 선어말어미) /NEUTRAL + 다(fmofd 평서형 종결어미) /NEUTRAL - 9점,
③ 나(CTP1 1인칭 대명사) /NEUTRAL + 에(fjcao 일반 부사격조사) /NEUTRAL 생애(CMCN 비서술 보통명사) /NEUTRAL 최고(CMCN 비서술 보통명사) /POSITIVE + 로(fjcao 일반 부사격조사) /NEUTRAL 재밌(YBDO 일반동사) /POSITIVE + 었(fmbtp 과거시제 선어말어미) /NEUTRAL + 던(fmotgp 과거시제 관형형 전성어미) /NEUTRAL 영화(CMCN 비서술 보통명사) /NEUTRAL - 9 점,
④ 이(SGR 지시 관형사) /NEUTRAL 영화(CMCN 비서술 보통명사) /NEUTRAL + 는(fjb 보조사) /NEUTRAL 재밌(YBDO 일반동사)/POSITIVE + 지(fmoca 보조 연결어미) /NEUTRAL 않(YA 보조용언) /NEGATIVE + 았(fmbtp 과거시제 선어말어미) /NEUTRAL + 다(fmofd 평서형 종결어미) /NEUTRAL + .(g 기호) /NEUTRAL」
또한, 의견어휘 저장모듈(260)에 저장되어 있는 어휘들 중에서 1∼10점 사이의 점수 중 특정 점수 이상의 어휘는 긍정, 특정 점수 이하의 어휘는 부정 어휘들로 간주한다.
그리고, 상기의 예제에서는 "재밌(YBDO 일반동사)"이 긍정 어휘, "않(YA 보조용언)"이 부정 어휘로 간주된 경우에 있어서 표시된 모습이다.
여기서, ④번 같은 경우 긍정/부정 어휘가 혼재되어 있으며, 전체적으로 긍정으로 표시해야 할지, 부정으로 표시해야 할지 판단하기 어려운 경우이다. 이러한 경우가 다음 단계에서 많기 때문에, 의견표현모델을 이용하여 의견표현 구분모듈(250)을 구현하게 된다. 즉, 의견표현 구분모듈(250)은 상기와 같이 문장이 입력되면 구체적으로 의견인 부분을 찾아서 표시(Marking)해주는 역할을 수행한다.
한편, 의견어휘로 표시를 하는 부분에서는 해당 어휘가 긍정인지 부정인지에 따라서 상기와 같이 바로 표시하는 방법도 존재하며, 동시에 해당 문장이 긍정적인 문장인지 부정적인 문장인지 정보를 이용하여 긍정/부정 어휘를 표시하는 방법도 가능하다.
예를 들어, ④번 문장이 1점 문장 집합에 속한다고 하면, ④번 문장은 부정 문장임이 확실하고, 이런 부정 문장이라는 정보를 이용하여 ④번 문장 내에서의 긍 정/부정 어휘를 모두 부정 어휘로 표시하게 된다. 즉, ④번 문장은 다음과 같이 표시하게 된다.
④ 이(SGR 지시 관형사) /NEUTRAL 영화(CMCN 비서술 보통명사) /NEUTRAL + 는(fjb 보조사) /NEUTRAL 재밌(YBDO 일반동사)/NEGATIVE + 지(fmoca 보조 연결어미) /NEUTRAL 않(YA 보조용언) /NEGATIVE + 았(fmbtp 과거시제 선어말어미) /NEUTRAL + 다(fmofd 평서형 종결어미) /NEUTRAL + .(g 기호) /NEUTRAL
그리고, 의견표현 학습모듈(240)은 의견표현 표시모듈(230)로부터 각 언어 단위별 긍정/부정 의견표현으로 표시된 의견 문장에 대해 기계학습 알고리즘을 수행하여 특정의 의견표현모델을 생성하는 기능을 수행한다.
의견표현 구분모듈(250)은 의견표현 학습모듈(240)로부터 생성된 의견표현모델을 이용하여 입력되는 웹 문서(40a 내지 40n) 데이터의 평가 결과를 갖는 의견 문장에 대해 언어처리(예컨대, 형태소 분석 또는 띄어쓰기 등)를 수행한 후, 긍정/부정 의견표현을 표시 및 구분하는 기능을 수행한다. 이때, 웹 문서(40a 내지 40n)는 인터넷 상에 존재하는 모든 웹 문서 데이터를 의미한다.
이를 구체적으로 예를 들어 설명하면, 의견표현 표시모듈(230)로부터 긍정/부정 의견표현이 표시된 문장들을 이용하여 의견표현 구분모듈(250)을 구현하기 위하여 학습하게 된다. 이때, 학습하는 데에 이용되는 모델은 예컨대, Hidden Markov Model(HMM), Maximum Entropy Model(ME), Conditional Random Field, Struct Support Vector Machine 이나 기타 기계학습(Machine Learning) 알고리즘들이다.
이러한 기계학습 알고리즘 모델들에서 공통적으로 입력되는 데이터는 (x1, y1),...,(xn, yn)로서, 상기 x는 의미 단위로서 "재밌(YBDO 일반동사)"이나 "재밌", "YBDO 일반동사" 등이 가능하며, 상기 y는 해당 의미 단위가 가질 수 있는 레벨(Label)로서, 상기에서 예로 든 "Positive", "Negative" 및 "Neutral" 등이 가능하며, "Strength"와 같이 긍정/부정을 판단하는데 도움을 주는 다른 레벨(Label)도 추가할 수 있다.
즉, 본 발명에서 원하는 의견표현모델은 결국 입력 데이터 시퀀스(Sequence) x들에 대하여 붙게 되는 레벨(Label) y를 예측하는 모델이다. 상기의 데이터 (x1, y1),...,(xn, yn)가 입력으로 주어지게 되면, 상기에 언급한 기계학습 알고리즘 모델들은 특정 위치의 xi에 대하여 xi의 앞뒤 (xi-1, yi-1), (xi+1, yi+1), 그 앞뒤의 앞뒤인 (xi-2, yi-2), (xi+2, yi+2), 이처럼 계속적으로 확장한 주변 데이터, 그 외에 해당 위치에 존재하는 다른 자질(Feature-Part Of Speech, Capital Letter, Emoticon etc.) 정보도 또한 같이 사용하여 특정한 조건하에서 xi의 yi가 어떤 레벨(Label)이 되는지 예측하게 된다.
전술한 바와 같이 기계학습 알고리즘 모델이 학습하게 되면, 특정의 의견표현모델이 생성된다. 그리고, 의견표현 구분모듈(250)은 상기 생성된 의견표현모델을 이용하여 임의의 데이터 시퀀스(Sequence) xi가 들어오게 되면, 해당 데이터 시 퀀스(Sequence)에 대해서 어떤 레벨 시퀀스(Label Sequence) yi가 생성되는지 예측하게 된다.
만약, 임의의 문장이 입력되면, 아래와 같이 띄어쓰기(Segmentation) 또는 형태소 분석(Morpheme Analyze) 등과 같은 언어처리를 선택적으로 수행하게 되고, 이러한 데이터가 의견표현 구분모듈(250)에 입력되면 다음과 같이 표현할 수 있다.
예를 들면, 입력 문장이 "④ 이(SGR 지시 관형사) 영화(CMCN 비서술 보통명사) + 는(fjb 보조사) 재밌(YBDO 일반동사) + 지(fmoca 보조 연결어미) 않(YA 보조용언) + 았(fmbtp 과거시제 선어말어미) + 다(fmofd 평서형 종결어미) + .(g 기호) - 1 점"이라고 한다면,
긍정/부정 의견표현이 구분된 문장은 "④ 이(SGR 지시 관형사) /NEUTRAL 영화(CMCN 비서술 보통명사) /NEUTRAL + 는(fjb 보조사) /NEUTRAL 재밌(YBDO 일반동사)/NEGATIVE + 지(fmoca 보조 연결어미) /NEGATIVE 않(YA 보조용언) /NEGATIVE + 았(fmbtp 과거시제 선어말어미) /NEUTRAL + 다(fmofd 평서형 종결어미) /NEUTRAL + .(g 기호) /NEUTRAL"으로 표현된다.
이때, 이 문장에서 연속으로 같은 극성(Polarity)의 의견어휘가 나오면 하나의 의견표현으로 간주하고, "POSITVE", "NEGATIVE" 표현 위주로 표시를 하게 되면 "NEUTRAL"은 제거한다.
즉, "④ 이(SGR 지시 관형사) 영화(CMCN 비서술 보통명사) 는(fjb 보조사) <NEGATIVE>재밌(YBDO 일반동사) + 지(fmoca 보조 연결어미) 않(YA 보조용 언)</NEGATIVE> + 았(fmbtp 과거시제 선어말어미) + 다(fmofd 평서형 종결어미) + .(g 기호)"와 같이 표현된다.
여기서, <NEGATIVE> 은 표현의 시작이고, </NEGATIVE> 은 표현의 끝을 나타낸다.
한편, 전술한 바와 같이 구성된 의견표현 구분모듈(250)은 본 발명의 일 실시예에 따른 웹 문서에서의 의견 추출 장치(100)의 의견추출모듈(140)로부터 추출된 의견 문장의 언어적인 자질(Feature)들에 대해 긍정/부정 의견표현으로 구분하는 것도 가능하다.
즉, 의견표현 구분모듈(250)은 의견추출모듈(140)로부터 추출된 의견 문장 중에서 긍정적/부정적 의견인 부분을 찾아서 그 부분을 표시해준다. 한편, 전술한 바와 같이 의견추출모듈(140)을 사용하지 않고 바로 의견표현 구분모듈(250)을 사용하여 입력된 의견 문장에서 긍정적/부정적 표현 부분을 표시해 줄 수도 있다.
이러한 의견표현 구분모듈(250)은 연어뿐만 아니라 일반적인 자립어, 어절 등 모든 단어들의 긍정/부정 정도를 수량화하여 하나의 자원으로 활용하고, 문장 내에서 긍정/부정 표현을 찾아내기 위한 기계학습 모델을 생성하는데 사용될 수 있다.
추가적으로, 의견표현 연산모듈(220)로부터 계산된 각 언어 단위별 확률값을 데이터베이스(DB)화하여 저장하기 위한 의견어휘 저장모듈(260)이 더 포함될 수 있다.
더욱이, 도 6에 도시된 바와 같이, 의견표현 구분모듈(250)로부터 입력되는 웹 문서(40a 내지 40n) 데이터를 기 설정된 도메인별로 분류하여 각 의견표현 구분모듈(250a 내지 250n)로 전달하기 위한 도메인 분류모듈(150)이 더 포함될 수 있다.
한편, 도메인 분류모듈(150)을 이용하여 의견표현모델을 생성할 경우, 도메인 분류모듈(150)로 입력되는 긍정/부정 부분이 표시된 의견 데이터를 분류한 후에 각 도메인별로 대응되도록 적어도 하나의 의견표현 구분모듈(250)을 구현하는 방식도 가능하다.
또한, 도메인 분류모듈(150)은 의견표현 연산모듈(220)의 전단에 구비될 경우, 의견표현 연산모듈(220)은 도메인 분류모듈(150)을 통해 분류된 각 도메인별 웹 문서 데이터들에 대해 각각 하나씩 구비되어 구현됨이 바람직하다.
이하에는 본 발명의 일 실시예에 따른 웹 문서에서의 의견 분석 방법에 대하여 상세하게 설명하기로 한다.
도 7은 본 발명의 일 실시예에 따른 웹 문서에서의 의견 분석 방법을 설명하기 위한 전체적인 흐름도이다.
도 5 내지 도 7을 참조하면, 본 발명의 일 실시예에 따른 웹 문서에서의 의견 분석 방법은, 먼저, 언어처리모듈(210)을 통해 특정의 웹 문서(30a 내지 30n) 데이터에 존재하는 평가 결과를 갖는 의견 문장에 대해 언어처리(예컨대, 형태소 분석 또는 띄어쓰기 등)를 수행하여 의미적인 언어 단위들로 분리한 후(S200), 의견표현 연산모듈을 통해 상기 단계S200에서 분리된 각 언어 단위별로 긍정적/부정 적 표현으로 될 확률값을 정규화하여 계산한다(S210).
다음으로, 의견표현 표시모듈(230)을 통해 상기 단계S210에서 계산된 각 언어 단위별 확률값과 기 설정된 의견표현 기준값을 비교하여 그 결과에 따라 각 언어 단위별로 긍정/부정 의견표현으로 표시한 후(S220), 의견표현 학습모듈(240)을 통해 상기 단계S220에서 각 언어 단위별 긍정/부정 의견표현으로 표시된 의견 문장에 대해 기계학습 알고리즘을 수행하여 특정의 의견표현모델을 생성한다(S230).
마지막으로, 의견표현 구분모듈(250)을 통해 상기 단계S230에서 생성된 의견표현모델을 이용하여 입력되는 웹 문서(40a 내지 40d) 데이터의 평가 결과를 갖는 의견 문장에 대해 언어처리(예컨대, 형태소 분석 또는 띄어쓰기 등)를 수행한 후, 긍정/부정 의견표현을 표시 및 구분한다(S240).
추가적으로, 상기 단계S210에서 계산된 각 언어 단위별 확률값을 데이터베이스(DB)화하여 별도의 의견어휘 저장모듈(260)에 저장하는 단계를 더 포함할 수 있다.
한편, 본 발명의 일 실시예에 따른 웹 문서에서의 의견 추출 및 분석 방법은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현되는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다.
예컨대, 컴퓨터가 읽을 수 있는 기록매체로는 롬(ROM), 램(RAM), 시디-롬(CD-ROM), 자기 테이프, 하드디스크, 플로피디스크, 이동식 저장장치, 비휘발성 메모리(Flash Memory), 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들면, 인터넷을 통한 전송)의 형태로 구현되는 것도 포함된다.
또한, 컴퓨터로 읽을 수 있는 기록매체는 컴퓨터 통신망으로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 읽을 수 있는 코드로서 저장되고 실행될 수 있다.
전술한 본 발명에 따른 웹 문서에서의 의견 추출 및 분석 장치 및 그 방법에 대한 바람직한 실시예에 대하여 설명하였지만, 본 발명은 이에 한정되는 것이 아니고 특허청구범위와 발명의 상세한 설명 및 첨부한 도면의 범위 안에서 여러 가지로 변형하여 실시하는 것이 가능하고 이 또한 본 발명에 속한다.
예를 들면, 본 발명의 일 실시예에서는 한국어를 기반으로 웹 문서에서의 의견 추출 및 분석 장치 및 그 방법을 구현하였지만, 이에 국한하지 않으며, 예컨대, 영어, 일본어, 중국어 등 다양한 언어를 적용하여 구현할 수도 있다.