SlideShare a Scribd company logo
1 of 28
Download to read offline
Phrase Tagger
모델 학습부터 태그 부착까지
이찬희
자연어 처리 과정
형태소 분석
Morpheme analysis
구문 분석
Syntax analysis
의미 분석
semantic analysis
화용 분석
Pragmatic analysis
형태소 단위의 분절 및
POS 태그 부착
구문 태그 부착
문장구조 파악
단어의 중의성 해소 정보 추출
(대명사가 가리키는 의미부터...)
구문 분석
• 어절 단위로 '구문 태그' 부착하고 '문장 구조' 파악
구(Phrase)를 기본 단위로 사용하며,
한국어 자연어 처리에서는 어절을 구로 하여,
문장 구조를 표현하고 있다.
(형태소 단위로 문장 구조를 분석하기엔
문장 내 형태소가 많아 복잡도가 높아진다고 본 것 같음..)
(그냥 통사론 이론을 바탕으로 제일 적합한 단위가
어절이어서 사용하는 것 같다)
구문 태그
구문 태그 = 구문 표지 + 기능 표지
Phrase tag Functional tag
용어가 자료마다 혼재되어 있음..
태그 = Tag
표지 = Tag
구문 태그 = 구문 표지 ??
NP_OBJ = NP + OBJ
목적격 체언구 체언구 목적어
구문 태그
구문 표지 기능 표지
기타 표지
• 오진영, 지배소 후위 언어를 위한 효율적 분석
• 홍정하, 구문분석 말뭉치의 이해와 활용
구문 표지와 형태소 품사 태그
• mecab-ko-dic 품사 태그 설명, https://docs.google.com/spreadsheets/d/1-9blXKjtjeKZqsf4NzHeYJCrr49-nXeRF6D80udfcwY/edit#gid=589544265
세종 품사 태그
총 42개
구문 표지
보통 총 8개 안팎
기능 표지와 문장 성분
기능 표지 한국어 문장 성분
비슷
≈
• https:// https://ko.wikipedia.org/wiki/한국어의_문장_성분
구문 태깅은...
(제 생각에)
문장 구조 분석을 위해
적절한 개수의 구 단위 품사와
문장 성분을 붙인다.
문장 구조
• 구 구조 문법(Phrase structure grammar): 구를 구성하는 구조를 중심으로
• 의존 문법(Dependency grammar): 의존관계에 의해 구조를 정의
• 통사론, https://ko.wikipedia.org/wiki/통사론
• Dependency Grammar, http://taweb.aichi-u.ac.jp/tmgross/DG.html
문장 구조
• 안광모, 지배소 후보 집합을 이용한 한국어 의존 구문 분석 알고리즘
찾아본 대부분의 자료는
'의존 문법'을 통한 문장 구조 해석을 진행
"한국어와 같이 비교적 어순이 자유로운 언어에서는
주로 의존 구문 분석 방법이 연구되어 왔으며 ... (후략)"
문장 구조에 대한 자세한 내용은
다음에...
구문 태거 구현 과정
1. 말뭉치 전처리
2. 구문 태깅 모델 학습: 기본 자질 학습, 1차/2차 추가 자질 학습
3. 구문 태거 구현
• 구현 과정은 아래 논문 2편을 따라서 진행
오진영, "엔트로피 지도 CRF를 이용한 한국어 어절 구문 태그 예측", 2009
오진영, "지배소 후위 언어를 위한 효율적 구문분석", 2013
1. 말뭉치 전처리
• 세종계획 21 구문분석 말뭉치를 사용
• 구 구조 문법의 말뭉치: 의존구조 학습을 위해서는 형태 변경이 필요
• 433,839어절, 43,828문장
• 전처리 과정
1. 말뭉치 파서 생성
2. 오류 문장 수정
세종계획 21 구문분석 말뭉치
• 현대문어 – 구문분석 말뭉치, https://ithub.korean.go.kr/user/total/referenceManager.do
세종계획 21 구문분석 말뭉치
말뭉치 파일 목록 말뭉치 파일 내용
문장
구조
문장
구조
1-1. 말뭉치 파서 생성
• pyparsing 패키지를 이용하여 파서 생성
• pyparsing, https://github.com/pyparsing/pyparsing/
1-2. 오류 문장 수정
• 구 구조의 규칙이 명확하게 설명되어 있지 않아 직접 확인하면서 만듦
• 말뭉치 내에 오류로 보이는 구조가 있어 수정
• 미진한 부분
• 개별 어절이나 형태소의 문제가 아닌
'인용절에 대한 처리'는 수정에 시간이 많이 걸릴 것 같았고,
어떤 방식으로 수정하는게 적절한지 몰라 이번 과정에서는 제외
말뭉치 내 인용절 등장
상위에 인용절을 포함한 문장이 나오고
하위에 인용절이 Q와 같은 기호를 달고
존재하는데
Q=2라는 문장을 복구하게 위해
Q1절과 Q2절을 어떻게 합쳐야 할지
모르겠음
Q=2가 형태소 분석이 되어있는 것도
이상함...
상위 문장
하위 문장 1
하위 문장 2
2. 구문 태깅 모델 학습
• CRF(Continuous Random Field) 알고리즘을 사용하여 학습
• sklearn-crfsuite 패키지를 사용
• 학습 과정
1. Feature를 정의
2. 모델 학습: 기본, 1차, 2차 학습, Feature를 누적하여 학습, 이후 결과 비교
• 참고 1: 구문 태깅과 같은 문제를 'Sequence labeling problem'이라고 부름
• 참고 2: HMM -> CRF -> RNN -> LSTM로 알고리즘 사용 트랜드가 이어짐
• 이창기, 딥러닝 기반의 자연어 처리 기술, https://spri.kr/posts/view/21854?code=speech
• Conditional Random Field (CRF) 기반 품사 판별기의 원리와 HMM 기반 품사 판별기와의 차이점, https://lovit.github.io/nlp/2018/09/13/crf_based_tagger/
2-1. Feature 정의
Feature 설명
H_POS 어절의 첫 번째 형태소 품사
T_POS 어절의 마지막 형태소 품사, 하나의 형태소로 구성된 어절인 경우 H_POS와 같음
t_POS 어절의 마지막 전 형태소 품사, 어절의 길이가 3보다 작으면 사용 안함
h_POS
어절 첫 번째 형태소부터 마지막 전 형태소 사이에 XSA(형용사 파생 접미사), XSV(동사 파생 접미사), VCP(긍정 지정사)가 존재하면 해당
품사 지정
n_POS 다음 어절의 첫 번째 형태소 품사, 해당 형태소 뒤의 형태소 품사가 XSA, XSV면 통합 후 VA(형용사), VV(동사) 품사 지정
n_surface 다음 어절의 첫 번째 형태소 문자열, n_POS와 같이 통합되는 경우에는 문자열을 통합하여 지정
• 예시: 침실과 식당, 욕실에서 사용하는 (후략)
= 침실/NNG+과/JC 식당/NNG+,/SP 욕실/NNG+에서/JKB 사용/NNG+하/XSV+는/ETM
어절 H_POS T_POS t_POS h_POS n_POS n_surface
침실/NNG+과/JC NNG JC NNG 식당
식당/NNG+,/SP NNG SP NNG 욕실
욕실/NNG+에서/JKB NNG JKB VV 사용하
사용/NNG+하/XSV+는/ETM NNG ETM XSV XSV (후략) (후략)
2-2. 모델 학습
• Feature를 추가하며 학습
• 기본 학습: [H_POS, T_POS, t_POS]
• 1차 학습: [H_POS, T_POS, t_POS, h_POS, n_POS]
• 2차 학습: [H_POS, T_POS, t_POS, h_POS, n_POS, n_surface]
• L-BFGS 알고리즘, 10-fold cross validation, 50회 진행
Feature 설명
H_POS 어절의 첫 번째 형태소 품사
T_POS 어절의 마지막 형태소 품사, 하나의 형태소로 구성된 어절인 경우 H_POS와 같음
t_POS 어절의 마지막 전 형태소 품사, 어절의 길이가 3보다 작으면 사용 안함
h_POS
어절 첫 번째 형태소부터 마지막 전 형태소 사이에 XSA(형용사 파생 접미사), XSV(동사 파생 접미사), VCP(긍정 지정사)가 존재하면 해당
품사 지정
n_POS 다음 어절의 첫 번째 형태소 품사, 해당 형태소 뒤의 형태소 품사가 XSA, XSV면 통합 후 VA(형용사), VV(동사) 품사 지정
n_surface 다음 어절의 첫 번째 형태소 문자열, n_POS와 같이 통합되는 경우에는 문자열을 통합하여 지정
Feature 정의
2-3. 학습 결과: 기본 평가
best_params {'c1': 1.1139, 'c2': 0.0183}
best CV score 0.9297
model size 0.14M
mean_train_score mean_test_score
count 50 50
mean 0.9363 0.9295
std 0.0006 0.0001
max 0.9371 0.9297
2-3. 학습 결과: 1차 평가
best_params {'c1': 0.7351, 'c2': 0.0027}
best CV score 0.9359
model size 0.22M
mean_train_score mean_test_score
count 50 50
mean 0.9422 0.9355
std 0.0007 0.0001
max 0.9431 0.9359
2-3. 학습 결과: 2차 평가
best_params {'c1': 0.9273, 'c2': 0.0725}
best CV score 0.9586
model size 1.01M
mean_train_score mean_test_score
count 50 50
mean 0.9842 0.9570
std 0.0109 0.0017
max 0.9969 0.9586
2-3. 학습 결과: 종합
기본 1차 2차
사용 Feature 집합
H_POS(첫 번째 품사)
T_POS(마지막 품사)
t_POS(마지막 전 품사)
H_POS
T_POS
t_POS
h_POS(파생 접미사, 긍정 지정사)
n_POS(다음 어절 첫 번째 품사)
H_POS
T_POS
t_POS
h_POS
n_POS
n_surface
(다음 어절 첫 번째 문자열)
최고 성능
Hyperparameter
c1: 1.1139
c2: 0.0183
c1: 0.7351
c2: 0.0027
c1: 0.9273
c2: 0.0725
최고 Train 정확도 0.9371 0.9431 0.9969
최고 Test 정확도 0.9297 0.9359 0.9586
모델 사이즈 0.14M 0.22M 1.01M
3. 구문 태거 구현
• MeCab와 연결 작업
• MeCab와 세종 POS 태그 구조가 달라 호환을 위한 작업 진행
• MeCab의 형태소 분석 이후 구문 태깅이 이루어지도록 연결
3. 구문 태거 구현: 실행 예시
3. 구문 태거 구현: 실행 예시
직접 실행
끝다음 작업은 의존구조 학습

More Related Content

What's hot

NLU Tech Talk with KorBERT
NLU Tech Talk with KorBERTNLU Tech Talk with KorBERT
NLU Tech Talk with KorBERTLGCNSairesearch
 
Switch transformers paper review
Switch transformers paper reviewSwitch transformers paper review
Switch transformers paper reviewSeonghoon Jung
 
Context2Vec 기반 단어 의미 중의성 해소, Word Sense Disambiguation
Context2Vec 기반 단어 의미 중의성 해소, Word Sense DisambiguationContext2Vec 기반 단어 의미 중의성 해소, Word Sense Disambiguation
Context2Vec 기반 단어 의미 중의성 해소, Word Sense Disambiguation찬희 이
 
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용Susang Kim
 
기계독해를 위한 BERT 언어처리 모델 활용
기계독해를 위한 BERT 언어처리 모델 활용기계독해를 위한 BERT 언어처리 모델 활용
기계독해를 위한 BERT 언어처리 모델 활용Kenneth Jung
 
[211] 네이버 검색과 데이터마이닝
[211] 네이버 검색과 데이터마이닝[211] 네이버 검색과 데이터마이닝
[211] 네이버 검색과 데이터마이닝NAVER D2
 
20170227 파이썬으로 챗봇_만들기
20170227 파이썬으로 챗봇_만들기20170227 파이썬으로 챗봇_만들기
20170227 파이썬으로 챗봇_만들기Kim Sungdong
 
한글 검색 질의어 오타 패턴 분석과 사용자 로그를 이용한 질의어 오타 교정 시스템 구축
한글 검색 질의어 오타 패턴 분석과 사용자 로그를 이용한  질의어 오타 교정 시스템 구축한글 검색 질의어 오타 패턴 분석과 사용자 로그를 이용한  질의어 오타 교정 시스템 구축
한글 검색 질의어 오타 패턴 분석과 사용자 로그를 이용한 질의어 오타 교정 시스템 구축Heewon Jeon
 
[216]네이버 검색 사용자를 만족시켜라! 의도파악과 의미검색
[216]네이버 검색 사용자를 만족시켜라!   의도파악과 의미검색[216]네이버 검색 사용자를 만족시켜라!   의도파악과 의미검색
[216]네이버 검색 사용자를 만족시켜라! 의도파악과 의미검색NAVER D2
 
파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차Taekyung Han
 
KorQuAD introduction
KorQuAD introductionKorQuAD introduction
KorQuAD introductionSeungyoungLim
 
Deep Learning for Natural Language Processing: Word Embeddings
Deep Learning for Natural Language Processing: Word EmbeddingsDeep Learning for Natural Language Processing: Word Embeddings
Deep Learning for Natural Language Processing: Word EmbeddingsRoelof Pieters
 
딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지deepseaswjh
 
Python을 활용한 챗봇 서비스 개발 2일차
Python을 활용한 챗봇 서비스 개발 2일차Python을 활용한 챗봇 서비스 개발 2일차
Python을 활용한 챗봇 서비스 개발 2일차Taekyung Han
 
Javaでつくる本格形態素解析器
Javaでつくる本格形態素解析器Javaでつくる本格形態素解析器
Javaでつくる本格形態素解析器Works Applications
 
A Review of Deep Contextualized Word Representations (Peters+, 2018)
A Review of Deep Contextualized Word Representations (Peters+, 2018)A Review of Deep Contextualized Word Representations (Peters+, 2018)
A Review of Deep Contextualized Word Representations (Peters+, 2018)Shuntaro Yada
 
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)WON JOON YOO
 
머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)홍배 김
 
Natural Language Processing.pptx
Natural Language Processing.pptxNatural Language Processing.pptx
Natural Language Processing.pptxYongHeeHan10
 
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중고책나라] : 실시간 데이터를 이용한 Elasticsearch 클러스터 최적화
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중고책나라] : 실시간 데이터를 이용한 Elasticsearch 클러스터 최적화제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중고책나라] : 실시간 데이터를 이용한 Elasticsearch 클러스터 최적화
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중고책나라] : 실시간 데이터를 이용한 Elasticsearch 클러스터 최적화BOAZ Bigdata
 

What's hot (20)

NLU Tech Talk with KorBERT
NLU Tech Talk with KorBERTNLU Tech Talk with KorBERT
NLU Tech Talk with KorBERT
 
Switch transformers paper review
Switch transformers paper reviewSwitch transformers paper review
Switch transformers paper review
 
Context2Vec 기반 단어 의미 중의성 해소, Word Sense Disambiguation
Context2Vec 기반 단어 의미 중의성 해소, Word Sense DisambiguationContext2Vec 기반 단어 의미 중의성 해소, Word Sense Disambiguation
Context2Vec 기반 단어 의미 중의성 해소, Word Sense Disambiguation
 
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
 
기계독해를 위한 BERT 언어처리 모델 활용
기계독해를 위한 BERT 언어처리 모델 활용기계독해를 위한 BERT 언어처리 모델 활용
기계독해를 위한 BERT 언어처리 모델 활용
 
[211] 네이버 검색과 데이터마이닝
[211] 네이버 검색과 데이터마이닝[211] 네이버 검색과 데이터마이닝
[211] 네이버 검색과 데이터마이닝
 
20170227 파이썬으로 챗봇_만들기
20170227 파이썬으로 챗봇_만들기20170227 파이썬으로 챗봇_만들기
20170227 파이썬으로 챗봇_만들기
 
한글 검색 질의어 오타 패턴 분석과 사용자 로그를 이용한 질의어 오타 교정 시스템 구축
한글 검색 질의어 오타 패턴 분석과 사용자 로그를 이용한  질의어 오타 교정 시스템 구축한글 검색 질의어 오타 패턴 분석과 사용자 로그를 이용한  질의어 오타 교정 시스템 구축
한글 검색 질의어 오타 패턴 분석과 사용자 로그를 이용한 질의어 오타 교정 시스템 구축
 
[216]네이버 검색 사용자를 만족시켜라! 의도파악과 의미검색
[216]네이버 검색 사용자를 만족시켜라!   의도파악과 의미검색[216]네이버 검색 사용자를 만족시켜라!   의도파악과 의미검색
[216]네이버 검색 사용자를 만족시켜라! 의도파악과 의미검색
 
파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차
 
KorQuAD introduction
KorQuAD introductionKorQuAD introduction
KorQuAD introduction
 
Deep Learning for Natural Language Processing: Word Embeddings
Deep Learning for Natural Language Processing: Word EmbeddingsDeep Learning for Natural Language Processing: Word Embeddings
Deep Learning for Natural Language Processing: Word Embeddings
 
딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지
 
Python을 활용한 챗봇 서비스 개발 2일차
Python을 활용한 챗봇 서비스 개발 2일차Python을 활용한 챗봇 서비스 개발 2일차
Python을 활용한 챗봇 서비스 개발 2일차
 
Javaでつくる本格形態素解析器
Javaでつくる本格形態素解析器Javaでつくる本格形態素解析器
Javaでつくる本格形態素解析器
 
A Review of Deep Contextualized Word Representations (Peters+, 2018)
A Review of Deep Contextualized Word Representations (Peters+, 2018)A Review of Deep Contextualized Word Representations (Peters+, 2018)
A Review of Deep Contextualized Word Representations (Peters+, 2018)
 
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
딥 러닝 자연어 처리를 학습을 위한 파워포인트. (Deep Learning for Natural Language Processing)
 
머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)
 
Natural Language Processing.pptx
Natural Language Processing.pptxNatural Language Processing.pptx
Natural Language Processing.pptx
 
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중고책나라] : 실시간 데이터를 이용한 Elasticsearch 클러스터 최적화
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중고책나라] : 실시간 데이터를 이용한 Elasticsearch 클러스터 최적화제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중고책나라] : 실시간 데이터를 이용한 Elasticsearch 클러스터 최적화
제 17회 보아즈(BOAZ) 빅데이터 컨퍼런스 - [중고책나라] : 실시간 데이터를 이용한 Elasticsearch 클러스터 최적화
 

Similar to Phrase Tagger, 구문 태거

영어 말하기 자동채점 프로그램의 현재와 미래
영어 말하기 자동채점 프로그램의 현재와 미래	영어 말하기 자동채점 프로그램의 현재와 미래
영어 말하기 자동채점 프로그램의 현재와 미래 engedukamall
 
문자 단위의 Neural Machine Translation
문자 단위의 Neural Machine Translation문자 단위의 Neural Machine Translation
문자 단위의 Neural Machine TranslationNAVER LABS
 
Neural Machine Translation 기반의 영어-일본어 자동번역
Neural Machine Translation 기반의 영어-일본어 자동번역Neural Machine Translation 기반의 영어-일본어 자동번역
Neural Machine Translation 기반의 영어-일본어 자동번역NAVER LABS
 
한국어 띄어쓰기 프로그램 도전기
한국어 띄어쓰기 프로그램 도전기한국어 띄어쓰기 프로그램 도전기
한국어 띄어쓰기 프로그램 도전기Ted Taekyoon Choi
 
[추천] 색인기법 김성현
[추천] 색인기법 김성현[추천] 색인기법 김성현
[추천] 색인기법 김성현Young-jun Jeong
 
한글 언어 자원과 R: KoNLP 개선과 활용
한글 언어 자원과 R: KoNLP 개선과 활용한글 언어 자원과 R: KoNLP 개선과 활용
한글 언어 자원과 R: KoNLP 개선과 활용r-kor
 
엘라스틱서치 분석 이해하기 20160623
엘라스틱서치 분석 이해하기 20160623엘라스틱서치 분석 이해하기 20160623
엘라스틱서치 분석 이해하기 20160623Yong Joon Moon
 
KERAS 기반 오픈소스 ANAGO를 활용한 한글 NER
KERAS 기반 오픈소스 ANAGO를 활용한 한글 NERKERAS 기반 오픈소스 ANAGO를 활용한 한글 NER
KERAS 기반 오픈소스 ANAGO를 활용한 한글 NERHyunmin Lee
 

Similar to Phrase Tagger, 구문 태거 (20)

파이썬과 자연어 2 | Sentence
파이썬과 자연어 2 | Sentence 파이썬과 자연어 2 | Sentence
파이썬과 자연어 2 | Sentence
 
영어 말하기 자동채점 프로그램의 현재와 미래
영어 말하기 자동채점 프로그램의 현재와 미래	영어 말하기 자동채점 프로그램의 현재와 미래
영어 말하기 자동채점 프로그램의 현재와 미래
 
문자 단위의 Neural Machine Translation
문자 단위의 Neural Machine Translation문자 단위의 Neural Machine Translation
문자 단위의 Neural Machine Translation
 
파이썬과 자연어 3 | 문장구조
파이썬과 자연어 3 | 문장구조파이썬과 자연어 3 | 문장구조
파이썬과 자연어 3 | 문장구조
 
자연어2 | 1차강의
자연어2 | 1차강의자연어2 | 1차강의
자연어2 | 1차강의
 
Neural Machine Translation 기반의 영어-일본어 자동번역
Neural Machine Translation 기반의 영어-일본어 자동번역Neural Machine Translation 기반의 영어-일본어 자동번역
Neural Machine Translation 기반의 영어-일본어 자동번역
 
파이썬을 활용한 자연어 분석
파이썬을 활용한 자연어 분석파이썬을 활용한 자연어 분석
파이썬을 활용한 자연어 분석
 
한국어 띄어쓰기 프로그램 도전기
한국어 띄어쓰기 프로그램 도전기한국어 띄어쓰기 프로그램 도전기
한국어 띄어쓰기 프로그램 도전기
 
자연어5 | 1차강의
자연어5 | 1차강의자연어5 | 1차강의
자연어5 | 1차강의
 
[추천] 색인기법 김성현
[추천] 색인기법 김성현[추천] 색인기법 김성현
[추천] 색인기법 김성현
 
Pycon Korea 2020
Pycon Korea 2020 Pycon Korea 2020
Pycon Korea 2020
 
파이썬과 자연어 5 | 딥러닝
파이썬과 자연어 5 | 딥러닝파이썬과 자연어 5 | 딥러닝
파이썬과 자연어 5 | 딥러닝
 
파이썬을 활용한 자연어분석 기초
파이썬을 활용한 자연어분석 기초파이썬을 활용한 자연어분석 기초
파이썬을 활용한 자연어분석 기초
 
Nlp study1
Nlp study1Nlp study1
Nlp study1
 
파이썬을 활용한 자연어 분석 - 2차
파이썬을 활용한 자연어 분석 - 2차파이썬을 활용한 자연어 분석 - 2차
파이썬을 활용한 자연어 분석 - 2차
 
한글 언어 자원과 R: KoNLP 개선과 활용
한글 언어 자원과 R: KoNLP 개선과 활용한글 언어 자원과 R: KoNLP 개선과 활용
한글 언어 자원과 R: KoNLP 개선과 활용
 
엘라스틱서치 분석 이해하기 20160623
엘라스틱서치 분석 이해하기 20160623엘라스틱서치 분석 이해하기 20160623
엘라스틱서치 분석 이해하기 20160623
 
메이크챗봇 자연어기초
메이크챗봇 자연어기초메이크챗봇 자연어기초
메이크챗봇 자연어기초
 
KERAS 기반 오픈소스 ANAGO를 활용한 한글 NER
KERAS 기반 오픈소스 ANAGO를 활용한 한글 NERKERAS 기반 오픈소스 ANAGO를 활용한 한글 NER
KERAS 기반 오픈소스 ANAGO를 활용한 한글 NER
 
Topic models
Topic modelsTopic models
Topic models
 

More from 찬희 이

의존 구조 분석기, Dependency parser
의존 구조 분석기, Dependency parser의존 구조 분석기, Dependency parser
의존 구조 분석기, Dependency parser찬희 이
 
mecab-ko-dic 사용자 사전
mecab-ko-dic 사용자 사전mecab-ko-dic 사용자 사전
mecab-ko-dic 사용자 사전찬희 이
 
Word2Vec 개요 및 활용
Word2Vec 개요 및 활용Word2Vec 개요 및 활용
Word2Vec 개요 및 활용찬희 이
 
PySpark 배우기 Ch 06. ML 패키지 소개하기
PySpark 배우기 Ch 06. ML 패키지 소개하기PySpark 배우기 Ch 06. ML 패키지 소개하기
PySpark 배우기 Ch 06. ML 패키지 소개하기찬희 이
 
파이썬을 활용한 금융 분석 Ch 14. The FXCM Trading Platform
파이썬을 활용한 금융 분석 Ch 14. The FXCM Trading Platform파이썬을 활용한 금융 분석 Ch 14. The FXCM Trading Platform
파이썬을 활용한 금융 분석 Ch 14. The FXCM Trading Platform찬희 이
 
파이썬을 활용한 금융 분석 Ch 9. Input Output Operation
파이썬을 활용한 금융 분석 Ch 9. Input Output Operation파이썬을 활용한 금융 분석 Ch 9. Input Output Operation
파이썬을 활용한 금융 분석 Ch 9. Input Output Operation찬희 이
 
은닉 마르코프 모델, Hidden Markov Model(HMM)
은닉 마르코프 모델, Hidden Markov Model(HMM)은닉 마르코프 모델, Hidden Markov Model(HMM)
은닉 마르코프 모델, Hidden Markov Model(HMM)찬희 이
 
단어 의미 중의성 해소, Word Sense Disambiguation(WSD)
단어 의미 중의성 해소, Word Sense Disambiguation(WSD)단어 의미 중의성 해소, Word Sense Disambiguation(WSD)
단어 의미 중의성 해소, Word Sense Disambiguation(WSD)찬희 이
 
프로젝트용 PC 환경구성 이찬희
프로젝트용 PC 환경구성   이찬희프로젝트용 PC 환경구성   이찬희
프로젝트용 PC 환경구성 이찬희찬희 이
 

More from 찬희 이 (9)

의존 구조 분석기, Dependency parser
의존 구조 분석기, Dependency parser의존 구조 분석기, Dependency parser
의존 구조 분석기, Dependency parser
 
mecab-ko-dic 사용자 사전
mecab-ko-dic 사용자 사전mecab-ko-dic 사용자 사전
mecab-ko-dic 사용자 사전
 
Word2Vec 개요 및 활용
Word2Vec 개요 및 활용Word2Vec 개요 및 활용
Word2Vec 개요 및 활용
 
PySpark 배우기 Ch 06. ML 패키지 소개하기
PySpark 배우기 Ch 06. ML 패키지 소개하기PySpark 배우기 Ch 06. ML 패키지 소개하기
PySpark 배우기 Ch 06. ML 패키지 소개하기
 
파이썬을 활용한 금융 분석 Ch 14. The FXCM Trading Platform
파이썬을 활용한 금융 분석 Ch 14. The FXCM Trading Platform파이썬을 활용한 금융 분석 Ch 14. The FXCM Trading Platform
파이썬을 활용한 금융 분석 Ch 14. The FXCM Trading Platform
 
파이썬을 활용한 금융 분석 Ch 9. Input Output Operation
파이썬을 활용한 금융 분석 Ch 9. Input Output Operation파이썬을 활용한 금융 분석 Ch 9. Input Output Operation
파이썬을 활용한 금융 분석 Ch 9. Input Output Operation
 
은닉 마르코프 모델, Hidden Markov Model(HMM)
은닉 마르코프 모델, Hidden Markov Model(HMM)은닉 마르코프 모델, Hidden Markov Model(HMM)
은닉 마르코프 모델, Hidden Markov Model(HMM)
 
단어 의미 중의성 해소, Word Sense Disambiguation(WSD)
단어 의미 중의성 해소, Word Sense Disambiguation(WSD)단어 의미 중의성 해소, Word Sense Disambiguation(WSD)
단어 의미 중의성 해소, Word Sense Disambiguation(WSD)
 
프로젝트용 PC 환경구성 이찬희
프로젝트용 PC 환경구성   이찬희프로젝트용 PC 환경구성   이찬희
프로젝트용 PC 환경구성 이찬희
 

Phrase Tagger, 구문 태거

  • 1. Phrase Tagger 모델 학습부터 태그 부착까지 이찬희
  • 2. 자연어 처리 과정 형태소 분석 Morpheme analysis 구문 분석 Syntax analysis 의미 분석 semantic analysis 화용 분석 Pragmatic analysis 형태소 단위의 분절 및 POS 태그 부착 구문 태그 부착 문장구조 파악 단어의 중의성 해소 정보 추출 (대명사가 가리키는 의미부터...)
  • 3. 구문 분석 • 어절 단위로 '구문 태그' 부착하고 '문장 구조' 파악 구(Phrase)를 기본 단위로 사용하며, 한국어 자연어 처리에서는 어절을 구로 하여, 문장 구조를 표현하고 있다. (형태소 단위로 문장 구조를 분석하기엔 문장 내 형태소가 많아 복잡도가 높아진다고 본 것 같음..) (그냥 통사론 이론을 바탕으로 제일 적합한 단위가 어절이어서 사용하는 것 같다)
  • 4. 구문 태그 구문 태그 = 구문 표지 + 기능 표지 Phrase tag Functional tag 용어가 자료마다 혼재되어 있음.. 태그 = Tag 표지 = Tag 구문 태그 = 구문 표지 ?? NP_OBJ = NP + OBJ 목적격 체언구 체언구 목적어
  • 5. 구문 태그 구문 표지 기능 표지 기타 표지 • 오진영, 지배소 후위 언어를 위한 효율적 분석 • 홍정하, 구문분석 말뭉치의 이해와 활용
  • 6. 구문 표지와 형태소 품사 태그 • mecab-ko-dic 품사 태그 설명, https://docs.google.com/spreadsheets/d/1-9blXKjtjeKZqsf4NzHeYJCrr49-nXeRF6D80udfcwY/edit#gid=589544265 세종 품사 태그 총 42개 구문 표지 보통 총 8개 안팎
  • 7. 기능 표지와 문장 성분 기능 표지 한국어 문장 성분 비슷 ≈ • https:// https://ko.wikipedia.org/wiki/한국어의_문장_성분
  • 8. 구문 태깅은... (제 생각에) 문장 구조 분석을 위해 적절한 개수의 구 단위 품사와 문장 성분을 붙인다.
  • 9. 문장 구조 • 구 구조 문법(Phrase structure grammar): 구를 구성하는 구조를 중심으로 • 의존 문법(Dependency grammar): 의존관계에 의해 구조를 정의 • 통사론, https://ko.wikipedia.org/wiki/통사론 • Dependency Grammar, http://taweb.aichi-u.ac.jp/tmgross/DG.html
  • 10. 문장 구조 • 안광모, 지배소 후보 집합을 이용한 한국어 의존 구문 분석 알고리즘 찾아본 대부분의 자료는 '의존 문법'을 통한 문장 구조 해석을 진행 "한국어와 같이 비교적 어순이 자유로운 언어에서는 주로 의존 구문 분석 방법이 연구되어 왔으며 ... (후략)" 문장 구조에 대한 자세한 내용은 다음에...
  • 11. 구문 태거 구현 과정 1. 말뭉치 전처리 2. 구문 태깅 모델 학습: 기본 자질 학습, 1차/2차 추가 자질 학습 3. 구문 태거 구현 • 구현 과정은 아래 논문 2편을 따라서 진행 오진영, "엔트로피 지도 CRF를 이용한 한국어 어절 구문 태그 예측", 2009 오진영, "지배소 후위 언어를 위한 효율적 구문분석", 2013
  • 12. 1. 말뭉치 전처리 • 세종계획 21 구문분석 말뭉치를 사용 • 구 구조 문법의 말뭉치: 의존구조 학습을 위해서는 형태 변경이 필요 • 433,839어절, 43,828문장 • 전처리 과정 1. 말뭉치 파서 생성 2. 오류 문장 수정
  • 13. 세종계획 21 구문분석 말뭉치 • 현대문어 – 구문분석 말뭉치, https://ithub.korean.go.kr/user/total/referenceManager.do
  • 14. 세종계획 21 구문분석 말뭉치 말뭉치 파일 목록 말뭉치 파일 내용 문장 구조 문장 구조
  • 15. 1-1. 말뭉치 파서 생성 • pyparsing 패키지를 이용하여 파서 생성 • pyparsing, https://github.com/pyparsing/pyparsing/
  • 16. 1-2. 오류 문장 수정 • 구 구조의 규칙이 명확하게 설명되어 있지 않아 직접 확인하면서 만듦 • 말뭉치 내에 오류로 보이는 구조가 있어 수정 • 미진한 부분 • 개별 어절이나 형태소의 문제가 아닌 '인용절에 대한 처리'는 수정에 시간이 많이 걸릴 것 같았고, 어떤 방식으로 수정하는게 적절한지 몰라 이번 과정에서는 제외
  • 17. 말뭉치 내 인용절 등장 상위에 인용절을 포함한 문장이 나오고 하위에 인용절이 Q와 같은 기호를 달고 존재하는데 Q=2라는 문장을 복구하게 위해 Q1절과 Q2절을 어떻게 합쳐야 할지 모르겠음 Q=2가 형태소 분석이 되어있는 것도 이상함... 상위 문장 하위 문장 1 하위 문장 2
  • 18. 2. 구문 태깅 모델 학습 • CRF(Continuous Random Field) 알고리즘을 사용하여 학습 • sklearn-crfsuite 패키지를 사용 • 학습 과정 1. Feature를 정의 2. 모델 학습: 기본, 1차, 2차 학습, Feature를 누적하여 학습, 이후 결과 비교 • 참고 1: 구문 태깅과 같은 문제를 'Sequence labeling problem'이라고 부름 • 참고 2: HMM -> CRF -> RNN -> LSTM로 알고리즘 사용 트랜드가 이어짐 • 이창기, 딥러닝 기반의 자연어 처리 기술, https://spri.kr/posts/view/21854?code=speech • Conditional Random Field (CRF) 기반 품사 판별기의 원리와 HMM 기반 품사 판별기와의 차이점, https://lovit.github.io/nlp/2018/09/13/crf_based_tagger/
  • 19. 2-1. Feature 정의 Feature 설명 H_POS 어절의 첫 번째 형태소 품사 T_POS 어절의 마지막 형태소 품사, 하나의 형태소로 구성된 어절인 경우 H_POS와 같음 t_POS 어절의 마지막 전 형태소 품사, 어절의 길이가 3보다 작으면 사용 안함 h_POS 어절 첫 번째 형태소부터 마지막 전 형태소 사이에 XSA(형용사 파생 접미사), XSV(동사 파생 접미사), VCP(긍정 지정사)가 존재하면 해당 품사 지정 n_POS 다음 어절의 첫 번째 형태소 품사, 해당 형태소 뒤의 형태소 품사가 XSA, XSV면 통합 후 VA(형용사), VV(동사) 품사 지정 n_surface 다음 어절의 첫 번째 형태소 문자열, n_POS와 같이 통합되는 경우에는 문자열을 통합하여 지정 • 예시: 침실과 식당, 욕실에서 사용하는 (후략) = 침실/NNG+과/JC 식당/NNG+,/SP 욕실/NNG+에서/JKB 사용/NNG+하/XSV+는/ETM 어절 H_POS T_POS t_POS h_POS n_POS n_surface 침실/NNG+과/JC NNG JC NNG 식당 식당/NNG+,/SP NNG SP NNG 욕실 욕실/NNG+에서/JKB NNG JKB VV 사용하 사용/NNG+하/XSV+는/ETM NNG ETM XSV XSV (후략) (후략)
  • 20. 2-2. 모델 학습 • Feature를 추가하며 학습 • 기본 학습: [H_POS, T_POS, t_POS] • 1차 학습: [H_POS, T_POS, t_POS, h_POS, n_POS] • 2차 학습: [H_POS, T_POS, t_POS, h_POS, n_POS, n_surface] • L-BFGS 알고리즘, 10-fold cross validation, 50회 진행 Feature 설명 H_POS 어절의 첫 번째 형태소 품사 T_POS 어절의 마지막 형태소 품사, 하나의 형태소로 구성된 어절인 경우 H_POS와 같음 t_POS 어절의 마지막 전 형태소 품사, 어절의 길이가 3보다 작으면 사용 안함 h_POS 어절 첫 번째 형태소부터 마지막 전 형태소 사이에 XSA(형용사 파생 접미사), XSV(동사 파생 접미사), VCP(긍정 지정사)가 존재하면 해당 품사 지정 n_POS 다음 어절의 첫 번째 형태소 품사, 해당 형태소 뒤의 형태소 품사가 XSA, XSV면 통합 후 VA(형용사), VV(동사) 품사 지정 n_surface 다음 어절의 첫 번째 형태소 문자열, n_POS와 같이 통합되는 경우에는 문자열을 통합하여 지정 Feature 정의
  • 21. 2-3. 학습 결과: 기본 평가 best_params {'c1': 1.1139, 'c2': 0.0183} best CV score 0.9297 model size 0.14M mean_train_score mean_test_score count 50 50 mean 0.9363 0.9295 std 0.0006 0.0001 max 0.9371 0.9297
  • 22. 2-3. 학습 결과: 1차 평가 best_params {'c1': 0.7351, 'c2': 0.0027} best CV score 0.9359 model size 0.22M mean_train_score mean_test_score count 50 50 mean 0.9422 0.9355 std 0.0007 0.0001 max 0.9431 0.9359
  • 23. 2-3. 학습 결과: 2차 평가 best_params {'c1': 0.9273, 'c2': 0.0725} best CV score 0.9586 model size 1.01M mean_train_score mean_test_score count 50 50 mean 0.9842 0.9570 std 0.0109 0.0017 max 0.9969 0.9586
  • 24. 2-3. 학습 결과: 종합 기본 1차 2차 사용 Feature 집합 H_POS(첫 번째 품사) T_POS(마지막 품사) t_POS(마지막 전 품사) H_POS T_POS t_POS h_POS(파생 접미사, 긍정 지정사) n_POS(다음 어절 첫 번째 품사) H_POS T_POS t_POS h_POS n_POS n_surface (다음 어절 첫 번째 문자열) 최고 성능 Hyperparameter c1: 1.1139 c2: 0.0183 c1: 0.7351 c2: 0.0027 c1: 0.9273 c2: 0.0725 최고 Train 정확도 0.9371 0.9431 0.9969 최고 Test 정확도 0.9297 0.9359 0.9586 모델 사이즈 0.14M 0.22M 1.01M
  • 25. 3. 구문 태거 구현 • MeCab와 연결 작업 • MeCab와 세종 POS 태그 구조가 달라 호환을 위한 작업 진행 • MeCab의 형태소 분석 이후 구문 태깅이 이루어지도록 연결
  • 26. 3. 구문 태거 구현: 실행 예시
  • 27. 3. 구문 태거 구현: 실행 예시 직접 실행