[ 배운 내용 ]
Chapter 3. 텍스트 마이닝
- 상용 텍스트마이닝 서비스
- 문서 클러스터링
- 키워드 추출
- 감성 분석
Chapter 4. 워드 임베딩
- 워드 임베딩 개요
- word2vec 알고리즘
- Word Analogy
Chapter 3. 텍스트 마이닝 (Text Mining)
Text Mining
: 대규모 텍스트 자료를 분석하여 가치 있는 새로운 정보를 찾아내는 것
[ 상용 텍스트마이닝 서비스 예 ]
- 블로그, 카페, 뉴스, SNS 등에서 실시간으로 텍스트를 수집하여 분석해주는 서비스
==> 실시간 모니터링, 인사이트 분석 등에 활용이 가능
- 채널 별로 키워드가 언급된 빈도를 분석하여 시간에 따른 관심도 변화를 파악
==> 언급량 분석
- 키워드와 함께 언급된 단어를 분석하여 텍스트에 포함된 세부 주제를 파악
==> 이슈어(연관어) 분석
- 해당 키워드와 함께 출현한 긍정, 부정 어휘를 분석
==> 감성 분석 (이진 분류)
==> ex) 제품 리뷰 등의 데이터를 분석
※ 감정 분석은 더 세분화된 감정의 카테고리를 분류하는 분야 (다중 분류로 감성 분석이랑 다르다.)
aspect-based sentiment analysis
: 각 속성별로 긍부정 어휘를 사전으로 구축 (제품의 어떤 속성에 대한 긍/부정 평가인지 더 정확히 분석)
- 상황을 나타내는 어휘 (선거, 투표, 세미나, 토론, 캠페인) 등으로 분석
==> 상황 분석
위와 같은 텍스트 마이닝 서비스를 위해서는 아래와 같은 기술들 외에도 여러 기술들이 더 필요할 것이다.
- 문서 분류
- 문서 클러스터링
- 개체명 인식
- 등
- 문서 클러스터링 (Document Clustering)
문서 분류는 NLP에서 가장 중요한 분야 중 하나로서 다양한 NLP 응용 시스템에서 텍스트 분류 기술을 사용한다.
- 스팸 메일 분류
- 문서 카테고리 분류 (ex 뉴스 문서를 카테고리별로 분류)
- 감성 분석 (ex 영화, 제품 등에 대한 긍부정 분석)
- 의도 분석 (ex 스마트스피커, 챗봇 등에서 사용자 입력문을 의도분석)
문서 클러스터링 (Document Clustering)
- 문서 클러스터링은 비지도 학습으로 지도학습인 문서 분류와 다르다!!
- K-means clustering, DBSCAN 등이 대표적인 클러스터링 알고리즘
5주차 - 머신러닝 비지도학습 참고
- 키워드 추출
문서 요약 (Text Summarization)
- 문서의 내용을 요약하는 기술
- 키워드 추출은 문서요약이라고 볼 수 있다.
[ 문서 요약의 종류 ]
- Extractive Summarization (추출 요약)
- 주어진 문서 내에서 이를 대표할 수 있는 키워드들이나 핵심 문장들을 선택하여 문서를 요약하는 기술
- 통계 기반으로 작동하기 때문에 학습데이터가 필요 없다.
- Abstractive Summarization (추상 요약)
- 같은 의미의 다른 표현을 사용하거나 새로운 단어를 사용함으로써 새로운 문장으로 된 요약문을 생성하는 기술
- 학습데이터를 기반으로 한 지도학습 이라는 점이 단점이다.
TextRank 기반 키워드 추출
- 초기 구글 검색엔진의 랭킹 알고리즘인 PageRank 알고리즘을 기반으로 함
- PageRank는 대표적인 그래프 기반 랭킹 알고리즘으로 많은 유입링크를 지니는 페이지가 중요한 페이지라고 가정한다.
- 문서 집합의 핵심 단어를 선택하기 위해 단어 그래프(co-occurence graph)를 생성한다.
- 단어 그래프는 동시 출연(co-occurence)를 바탕으로 두 단어 간의 유사도를 정의하여 생성한다.
- 생성된 그래프에 PageRank를 학습하여 각 노드(단어,문장)의 랭킹을 계산하고 랭킹이 높은 순서대로 문서를 대표하는 키워드나 핵심문장으로 선택한다.
- 클러스터링 뒤 모인 군집의 문서들이 어떤 주제를 갖고 있는지 확인할 때 등에 사용 가능
단어 그래프 예시
단어 그래프를 생성할 때는 Vertex와 Edge를 생성해준다.
Vertex
: 주어진 문서 집합을 품사태깅 한 후 최소 빈도수 이상 등장한 단어를 대상으로 생성
Edge
: 두 단어가 co-occurence 관계가 있을 경우 vertex(단어) 간에 edge를 생성(연결)
co-occurence의 기준은 window size N 이내에 두 단어가 동시에 출현했는지로 판단한다. (논문에서는 N : 2~8 사이를 추천)
vertex의 초기 중요도를 1로 설정하고 수렴할 떄까지 알고리즘을 반복 실행해준다.
- 감성 분석 (Sentiment Analysis)
입력받은 내용을 긍/부정으로 분석하는 기술
- Intensity 분석 : 긍/부정의 정도를 분석
- Polarity 분석 (극성분석) : 긍정 부정을 분석
Aspect-based sentiment analysis
어떤 부분에 대해서 긍/부정인지를 더 정확하게 분석하는 기술
ex)
제품 디자인 -> 긍정
제품 소음 -> 긍정
제품 크기 -> 부정
가격 -> unknown
VADER (Valence Aware Dictionary and sEntiment Reasoner)
- 사전과 규칙 기반의 오픈소스 감성분석 툴로 영어에서 많이 사용된다.
- 소셜미디어 텍스트 분석에 강점이 있다.
- Amazon의 Mechanical Turk를 활용해서 사전이 구축되어있다.
(실습한거 있으니 코드 참고하기)
Sentiment analysis (감성분석) VS Emotion analysis (감정분석)
- Sentiment (감성) : 긍정/부정 여부의 이진 분류
- Emotion (감정) : 기쁨, 슬픔, 분노 등 여러 카테고리의 감정으로 다중 분류
Chapter 4. 워드 임베딩
사람의 언어를 컴퓨터가 알아들을 수 있도록 잘 표현할 수 있어야 한다.
- 전통적인 단어 표현 방법
단어백 (Bag-of-Word)
- 하나의 1과 나머지는 모두 0으로만 이루어진 벡터
- One-hot Encoding 표현 방식으로 단어를 나타냄
- 벡터 차원에서 한 단어는 단 하나의 점을 나타낸다.
- 벡터의 차원 == 문서 컬렉션에 있는 서로 다른 단어들의 개수
But, 유사한 단어끼리 유사도를 비교해봐도 같은 단어가 아닌 이상 similarity가 무조건 0으로 나온다.
- 문맥정보(Context)를 사용하여 단어를 표현
단어 - 문서 행렬 (Term-document matrix)
- 단어와 문서로 행,열이 각각 구성된 행렬
- 각 문서에 대해 단어 간의 벡터가 비슷하면 두 단어는 유사함
- 각 단어에 대해 문서 간의 벡터가 비슷하면 두 문서는 유사함
단어 - 단어 행렬 (Term-term matrix === Word-word co-occurence matrix)
- 문맥정보를 문서 대신 주변 단어로 줄임
- 행렬 구축을 위해 단어가 많이 필요하지만 동시에 차원도 커지는 단점이 있다.
- 저장 공간이 많이 필요해짐
- 희소 벡터 (sparse representation) 문제
워드 임베딩 (Word Embedding)
- 중요한 정보만 남기고 적은 차원에서 단어를 표현하는 기법이다.
- Word-word co-occurence matrix의 문제점들을 해결
단어를 임의로 정한 d 차원의 실수 벡터로 표현한다.
- word2vec 알고리즘
워드 임베딩 벡터를 구해주는 알고리즘
해당 블로그에 설명이 매우 잘 되어있으니 참고하자
https://cheris8.github.io/artificial%20intelligence/NLP-WordEmbedding-Word2Vec/
Continuous bag-of-word (CBOW)
- 주변 단어(context word)를 보고 중심 단어(center word)를 예측하도록 학습
- 슬라이딩 윈도우 방식으로 학습을 위한 데이터셋을 구축한다.
- 초기에 데이터셋은 one hot encoding으로 모든 단어를 표현한다.
Input과 Output 레이어 사이에 있는 히든 레이어에서 룩업(Lookup) 연산을 수행한다.
각 단어와 히든 레이어 사이에서 곱해지는 가중치 행렬이 각 행 벡터가 해당 단어의 임베딩 벡터로 사용된다.(M차원=d와 동일)
Skip-gram
- 단어 하나를 보고 이웃단어(context word)를 예측하도록 학습
- Word Analogy
- 벡터공간에서 유사한 단어들은 가깝게 분포한다.
- 벡터들의 연산으로 Word Analogy test가 가능하다.
- ex) 도쿄 : 일본 = 파리 : ?
워드 임베딩 벡터값을 시각화 해보면 유사한 단어일수록 유사한 벡터값을 가지며 비슷한 단어라는 것을 내포한다.
word2vec은 단어에 대해 분산표현된 단어 임베딩 벡터를 만들어주는 것이다!!
※ 분산 표현 (Distributed Representation) : 서로 분리될 수 있는 요소로 개념이 표현되는 기법
(word analogy test DAY2 실습코드 참고)
[ word2vec의 활용 ]
- 데이터 증강(data argumentation)
- 추천 시스템
- 에어비앤비에서 사용자들이 집을 클릭해보는 것을 하나의 context sequence로 생각하고 word2vec와 유사하게 적용해서 다음에 누를만한 집을 자동으로 추천해주는 시스템을 구현했다.
'KT AIVLE School' 카테고리의 다른 글
(16주차 - 22.10.31~22.11.01) IT인프라 - 가상환경, 리눅스 명령어 (0) | 2022.11.01 |
---|---|
(12주차 - 22.10.05) 언어지능딥러닝3 - CNN 기반 자연어처리 (0) | 2022.10.09 |
(12주차 - 22.09.30) 언어지능딥러닝1 - 자연어처리 기술, 기계학습 기반 자연어처리 (0) | 2022.10.01 |
(10주차 - 22.09.22-23) 시각지능딥러닝3 - 커스텀 이미지 데이터 Detection하기 + Annotation (0) | 2022.09.22 |
(10주차 - 22.09.20~21) 시각지능딥러닝2 - Object Detection (YOLO) (0) | 2022.09.22 |