4. 자연어 처리 과정
형태소 분석
Morpheme analysis
구문 분석
Syntax analysis
의미 분석
semantic analysis
화용 분석
Pragmatic analysis
형태소 단위의 분절 및
POS 태그 부착
구문 태그 부착
문장구조 파악
단어 의미 중의성 해소
의미역 인식
정보 추출
(대명사가 가리키는 의미부터...)
5. 의미 분석
• 단어, 구, 문장 등의 단위의 의미를 인식하는 과정
구문 분석에 비해 해당 단계에서
진행해야 할 작업이 모호한 편인 것 같다.
의미를 인식하는 모든 처리가
해당 단계에 들어간다고 할 수 있을 것 같다.
6. 단어 의미 중의성 해소
문맥을 확인하여
등장한 동형이의어의
의미를 찾는 과정
Word Sense Disambiguation (WSD)
7. 단어 정리
• 동형이의어: 같은 형태를 가지지만 뜻이 다른 단어
• 의미(=센스): 동형이의어가 가지는 의미
• 동형어 번호: 사전에서 동형이의어가 가지는 의미를 구분하기 위해 부착하는 번호
(사전마다 다른 체계를 가진다)
• 예시: 단어 '생태'
자연어 분석에서 진행되어야 할 어깨번호 부착네이버 국어사전의 검색결과
표준국어대사전 상의 동형이의어
'생태'의 1번 의미
2번 의미
문서의 자연어 처리 후 동형이의어 '생태'의
어깨번호가 부착된 결과
9. 단어 의미 중의성 해소 모델
• 정한조(2015) 논문을 토대로 구현
• 생략하거나 달라진 방식
• 논문) 명사만 대상으로 진행 → 변경) 체언, 용언, 수식언, 어근
• 사전의 예문은 사용하지 않음
• 표준국어대사전과 세종 형태의미 말뭉치를 사용
• 표준국어대사전 상의 동음이의어로 한정 (말뭉치와 표준국어대사전 사이의 다른 점을 표준국어대사전 기준으로 변경 및 생략)
• Ramped window가 적용된 벡터 공간 모델과 나이브 베이즈 분류기를 통해 단어 의미 중의성을 해결
• 정한조와 박병화, “사전과 말뭉치를 이용한 한국어 단어 중의성 해소,” 한국 지능정보시스템학회논문지, 2015.
(일반, 고유, 의존 명사)
(동사, 형용사)
(관형사, 일반 부사, 접속 부사)
말뭉치 상에는 동음이의어인데
표준국어대사전에는 아닌 경우
또는 그 반대의 경우 등등
10. 세종 형태의미 말뭉치
• 문장 별로 형태소 분석과 형태소 단위의 어깨번호를
부착한 말뭉치
• 표준국어대사전을 기준으로 어깨번호 부착
• 내용어(↔기능어) 중심으로 부착: 세종 품사 기준으로, 일반명사,
의존명사, 동사, 형용사, 관형사, 일반부사 내에서 부착 진행
• 부착 방법: 표제어 전후 5어절을 확인하여 어깨번호 부착
• 특수한 어깨번호(누락시켜야 할 예외상황)
• 00, 88: 사전에 등재되지 않은 어휘
• 99: 형태분석 말뭉치의 분석 오류
• x<번호>: 사전과 말뭉치의 품사 분류 비일치
• 국립국어원, “21세기 세종계획 국어 기초자료 구축, 2004 결과보고서.” 2004.
세종 형태의미 말뭉치 예시
<형태소>__<어깨번호>/<품사>
11. 벡터 공간 모델
Vector Space Model or Term Space Model
• 간단한 Vector Space Model 설명, https://yumere.tistory.com/85
Vocabulary
Document
벡터의 원소
학습 과정에서 등장한 모든 단어,
단어마다 고유의 인덱스를 가지게 된다
학습 과정에서 등장한 모든
문서, 단어와 마찬가지로
고유의 인덱스를 가지게 된다
학습을 통해 생성된 값으로,
값을 산출하는 방법은
Boolean Model, TF-IDF 등이 있다
단어 벡터 각각의 문서는 단어 벡터로
변환되며, 문서 간 비교 또는
쿼리와 비교를 통해 유사도를
산출하게 된다
12. 벡터 공간 모델 (WSD 문제에서)
Vector Space Model for WSD
Vocabulary
벡터의 원소
동형이의어를 포함한 학습 대상인 모든 형태소
Ramped window의 합으로
벡터값을 산출한다.
센스 벡터
동형이의 형태소
(형태소 + 어깨번호)
13. Ramped Window
형태소 남미 풍 의 강렬 하 ᆫ 원색 끼리 의 조화 , 수채화 같이 안온 하 ᆫ 배색 등
어깨번호 02 07 05
품사 NNP XSN JKG XR XSA ETM NNG XSN JKG NNG SP NNG MAG NNG XSA ETM NNG NNB
Score 3 4 5 - 5 4 3 2 1
동형이의 형태소
학습 대상 아님 (학습 대상 품사가 아님)
학습 대상 형태소
• Ramped window는 Co-occurence 타겟 단어를 기준으로 가까울 수록 높은 점수를 부여하는 방법
• 동형이의 형태소를 기준으로 5점부터 멀어질 때마다 순차적으로 4점, 3점, …, 1점까지 부여
• 센스 벡터에 누적
14. 나이브 베이즈 분류기
Naïve bayes Classifier
• 베이즈 정리를 기초
• 독립성 가정
• 강한 가정이 들어가지만 실증적으로 높은 효과를 보임
(베이즈 정리)
(독립성 가정)
(베이지안 확률 용어로 작성)
클래스 k
발생한 사건 x
사건이 발생한 상황에서는
상수값이 된다
• 나이브 베이즈 분류, https://ko.wikipedia.org/wiki/나이브_베이즈_분류
15. 나이브 베이즈 분류기 (WSD 문제에서)
Naïve bayes Classifier for WSD
학습시킨 Vector Space로 구한
Cosine Similarity로 대체
16. 나이브 베이즈 분류기 (WSD 문제에서, 예시)
• 발견한 동음이의어: 조화
• 센스 가짓수: 7가지
• 주변 단어
Distance Weight 부여 결과
• 남미 : 3
• 강렬 : 4
• 원색, 02 : 5
• 수채화 : 5
• 같이 : 4
• 안온 : 3
• 배색 : 2
• 색, 03 : 1
조화, 01
조화, 02
조화, 03
조화, 04
조화, 05
조화, 06
조화, 07
남미 강렬 원색
02
배색 색
03
수 많은 다른 형태소도 존재
…
[ 3 4 5 … 2 1 ]쿼리 벡터
벡터 공간
모델에서
동음이의어의
센스 벡터들을
검색
주변 단어의
Distance
Weight를 통해
쿼리 벡터를 생성
쿼리와 동음이의어의 센스
벡터들로 Cosine
Similarity 산출
조건부 확률
0.
0.
0.
0.023
0.
0.
0.009
사전 확률
0.001
0.
0.
0.057
0.007
0.
0.934
사후 확률
(과 비례하는 값)
0.
0.
0.
0.001
0.
0.
0.009
동음이의어의
등장빈도로
산출
17. 모델 평가
• 10-fold CV
• Precision과 Recall
• Precision만 사용
• Recall은 항상 100%, 표준국어대사전을 기준으로 동음이의어는 항상 평가를 하기 때문
Precision =
올바르게 예측한 중의어의 수
전체 중의어의 수
Recall =
예측한 중의어의 수
전체 중의어의 수
단어 의미 중의성 해소에서의 Precision과 Recall 계산식
18. 모델 평가 결과
• Precision: 평균 93.1%
• 논문의 Precision 96.04%
• 대상 품사를 명사로 한정
• 표준국어대사전의 예문까지 모두 활용했을 때의 Precision
• 순서대로 처리했을 때 마스킹 처리가 전혀 없었음
체언 용언 수식언 어근
• 튜플의 형식: (정확하게 판단한 동음이의어, 동음이의어 등장횟수, Precision)
21. 한계
• 학습 시 성능과 실제 사용 시 성능에 차이가 발생
• 세종 말뭉치의 원문과 실제 사용하는 원문의 어휘가 다름
• 유사도를 구하지 못하고 사전 확률이 결과로 이어지는 빈도가 너무 높음
• 운영이 적용하기 위한 난이도가 높음
• 세종 형태의미 말뭉치 수준으로 도메인 말뭉치를 구축하는 것이 힘듦
• 기존 사전 확률의 비율을 고려하여 일정량 이상의 말뭉치 구성을 해야 효과를 볼 수 있음
23. Context2Vec
• Melamud, Oren, Jacob Goldberger, and Ido Dagan. "context2vec: Learning generic
context embedding with bidirectional lstm." Proceedings of The 20th SIGNLL
Conference on Computational Natural Language Learning. 2016.
• Word2Vec CBOW 모델과 동일한 개념
• 컨텍스트 임베딩 결과와 단어의 임베딩 결과가 유사하도록 학습
• Word2Vec CBOW 모델의 Average of Word Embeddings(AWE) 방법을
Bi-LSTM + MLP로 변형 (더 적극적인 학습)
• (Word2Vec) 윈도우 → (Context2Vec) 문장 전체, Bi-LSTM
• (Word2Vec) 임베딩 평균 값 → (Context2Vec) 다층 퍼셉트론, MLP
24. 컨텍스트 임베딩
• 단어 수준 임베딩: 개별 단어를 임베딩(Word2Vec, Glove)
• 문장 수준 임베딩: 문장 전체를 임베딩(Doc2Vec)하거나 하는 과정이 포함(ELMo)되어 있음
• 컨텍스트 임베딩
• 문장 전체 또는 문장보다 좁은 범위의 단어 시퀀스를 임베딩
• 타겟 단어(Target word)를 기준으로 문장을 임베딩
• 같은 문장이더라도 기준 단어가 다르면 다른 임베딩 결과를 반환
35. Context2Vec
타겟 단어
타겟 단어의
왼쪽 단어 시퀀스
정방향 (좌 → 우) 입력
타겟 단어의
오른쪽 단어 시퀀스
역방향 (우 → 좌) 입력
양쪽 시퀀스의
마지막 은닉 상태를
연결 및 MLP에 입력
36. Context2Vec
타겟 단어
타겟 단어의
왼쪽 단어 시퀀스
정방향 (좌 → 우) 입력
타겟 단어의
오른쪽 단어 시퀀스
역방향 (우 → 좌) 입력
양쪽 시퀀스의
마지막 은닉 상태를
연결 및 MLP에 입력
타겟 단어의
임베딩
37. Context2Vec
타겟 단어
타겟 단어의
왼쪽 단어 시퀀스
정방향 (좌 → 우) 입력
타겟 단어의
오른쪽 단어 시퀀스
역방향 (우 → 좌) 입력
양쪽 시퀀스의
마지막 은닉 상태를
연결 및 MLP에 입력
타겟 단어의
임베딩
목적 함수를 통해
양 임베딩이
유사해지도록 학습
38. Context2Vec 활용
• 문장 완성 (Sentence completion)
• 단어 의미 중의성 해소 (Word sense disambiguation)
40. Context2Vec 기반 단어 의미 중의성 해소
• Context2Vec: 타겟 단어의 컨텍스트를 벡터화
• Context2Vec 기반 단어 의미 중의성 해소
• 학습
• 말뭉치에 동형이의어가 등장하면, (표제어, 동형어 번호, 컨텍스트 벡터)를 저장
• 예측
• 동형이의어 등장 시 문장을 컨텍스트 벡터로 변환
• 말뭉치를 통해 학습한 표제어의 컨텍스트 벡터 중 가장 유사한 벡터의 동형어 번호를 반환
41. Context2Vec 기반 단어 의미 중의성 해소, 학습
1. 말뭉치의
동형이의어 검색
3. (표제어, 동형어 번호,
컨텍스트 벡터)
집합 저장
(수성, 08)
(수성, 05)
(수성, 04)
…
…
Context2Vec 모델 통과
2. 컨텍스트
벡터 추출
42. Context2Vec 기반 단어 의미 중의성 해소, 예측
1. 원문의
동형이의어
검사
3. 학습 시 추출한 컨텍스트
벡터 집합과 비교
(Cosine similarity)
(수성, 08)
(수성, 05)
(수성, 04)
…
…
…
코스피, 한·미 정책
기대·우려 교차 속
1700선 수성 실패
…
0.7, 동형어 번호 08번 부착
0.1
-0.3
2. 컨텍스트
벡터 추출
Context2Vec
모델 통과
동일한 표제어의
컨텍스트 벡터만
필터링
43. Context2Vec 학습
• 학습 데이터
• 뉴스 20만 문서
• 위키피디아 46만여 문서 (동음이의어 문서 제거)
• 세종 형태의미 말뭉치 79만여 문장의 95%
• 총 815만여 문장
• 학습 파라미터 (논문, 학습)
• 컨텍스트 단어 임베딩 차원: 300, 150
• 타겟 단어 임베딩 차원: 600, 300
• LSTM 은닉층 차원: 600, 300
• MLP 입력층/은닉층 차원: 1200, 600
• Epoch 10회 이내로 진행
• 학습 모델은 논문 대비 1/2 크기로 줄임
• 사용하기에 학습 모델의 크기가 너무 컸음
• 사용 시 속도 면에서도 연산량이 너무 큼
단어 의미 중의성 해소 모델의
테스트 데이터 분리를 위해
44. 단어 의미 중의성 해소 모델 학습
• 학습 및 테스트 데이터
• 세종 형태의미 말뭉치 79만여 문장을 95%, 5%로 분리
• 학습 및 평가 방법
• 학습 데이터에서 등장한 동형이의어의 문장을 컨텍스트 벡터로 저장
• 평가 데이터에서 등장한 동형이의어의 문장을 컨텍스트 벡터로 추출하여 학습 컨텍스트 벡터와
Cosine similarity 수행 후 가장 큰 컨텍스트 벡터의 동형어 번호 부착
Context2Vec 학습 시와
동일한 문장 집합
45. 모델 평가 결과
• Precision: 97.91% > 93.1% (기존)
• 딥 러닝 모델의 적용으로
Precision의 증가에 더해
Sparcity 문제를 해결할 수 있었음
• Sparcity 문제가 Context2Vec에서
해결되기 때문에, 단순한 말뭉치로
더 많은 Vocabulary를 쉽게
확보할 수 있음
46. 단어 의미 중의성 해소 말뭉치 작성
컨텍스트 벡터를 생성하기 위해 원문과 동형이의어 표제어, 동형어 번호를 작성하는 것으로 비교적 간단하게 말뭉치를 확
장할 수 있음 (형태소 분석에서 표제어와 일치하는 토큰이 만들어져야 한다는 조건이 필요)
서비스를 위해 추가한
동형어 번호
개체명 태그와 유사한
역할을 함
(LO: 지역, OR: 단체,
ST: 종목)
47. 서비스 적용 목표 - 종목 뉴스 필터링
• 종목 뉴스 추출은 1차적으로 검색 엔진의 키워드 매칭을 통해 진행
• 하지만 중의성을 가지는 종목명의 경우 필터링이 필요
• 필터링이 잘 되지 않았을 시에 서비스 퀄리티에 심각한 영향을 미치게 됨