SlideShare a Scribd company logo
1 of 50
Download to read offline
Dependency Parser
구문 태깅부터 의존 구조 분석까지
이찬희
2019. 04. 04.
자연어 처리 과정
형태소 분석
Morpheme analysis
구문 분석
Syntax analysis
의미 분석
semantic analysis
화용 분석
Pragmatic analysis
형태소 단위의 분절 및
POS 태그 부착
구문 태그 부착
문장구조 파악
단어의 중의성 해소 정보 추출
(대명사가 가리키는 의미부터...)
구문 분석
• 어절 단위로 '구문 태그' 부착하고 '문장 구조' 파악
구(Phrase)를 기본 단위로 사용하며,
한국어 자연어 처리에서는 어절을 구로 하여,
문장 구조를 표현하고 있다.
(형태소 단위로 문장 구조를 분석하기엔
문장 내 형태소가 많아 복잡도가 높아진다고 본 것 같음..)
(그냥 통사론 이론을 바탕으로 제일 적합한 단위가
어절이어서 사용하는 것 같다)
구문 분석
일반적으로 일컫는 구문 분석은
문장 구조 파악의 의미가 더 강한 것 같다.
그리고 구문 태깅보다 더 어렵다.
• 공공 인공지능 오픈 API·DATA 서비스 포탈, http://aiopen.etri.re.kr/demo_nlu.php
문장 구조를 위한 문법
문장 구조를 표현하기 위해서는
구조를 표현할 문법이 필요
"문법 모형은 문장 구조적 측면에서
계층적 구조가 강조되는 문법 모형과
계층적 관계를 최소한으로 하려는 문법 모형
두 가지로 크게 나누어 볼 수 있다."
• 유혜원, “한국어 구문분석 방법론 연구, 복문 구조 분석을 중심으로,” 2009.
(한국어 구문 분석 문법 모형)
계층적 구조가 강조 → 구 구조 문법 Phrase structure grammar
계층적 관계를 최소 → 의존 문법 Dependency grammar
문장 구조를 위한 문법
• 유혜원, “한국어 구문분석 방법론 연구, 복문 구조 분석을 중심으로,” 2009.
(한국어 구문 분석 문법 모형)
문장 구조 (remind)
• 구 구조 문법(Phrase structure grammar): 구를 구성하는 구조를 중심으로
• 의존 문법(Dependency grammar): 의존관계에 의해 구조를 정의
• 통사론, https://ko.wikipedia.org/wiki/통사론
• Dependency Grammar, http://taweb.aichi-u.ac.jp/tmgross/DG.html
문장 구조 (remind)
• 안광모, 지배소 후보 집합을 이용한 한국어 의존 구문 분석 알고리즘
찾아본 대부분의 자료는
'의존 문법'을 통한 문장 구조 해석을 진행
"한국어와 같이 비교적 어순이 자유로운 언어에서는
주로 의존 구문 분석 방법이 연구되어 왔으며 ... (후략)"
문장 구조에 대한 자세한 내용은
다음에...
오늘 진행 중
의존 문법
• 유혜원, “한국어 구문분석 방법론 연구, 복문 구조 분석을 중심으로,” 2009.
"의존 문법의 체계는 구문분석의 복잡도를 줄이고
효율적인 분석을 위해 제시된 문법 모형으로
문장 내의 성분들을 지배 의존 관계로
파악한 구문분석 모형이라고 할 수 있다."
의존 문법
• 다양한 표현방식이 존재하며,
한국어 자연어 처리 전산분야 자료에서는 오른쪽이 좀 더 선호되는 것 같다.
• Wikipedia - Dependency Grammar, https://en.wikipedia.org/wiki/Dependency_grammar
트리 방식 문장 자체에 굽은 화살표로 표현하는 방식
• 구 구조 문법은 언어에서 발생하는 어순을 규칙으로 정의하는 것부터 시작
• 언어학적인 가치는 높으나, 모든 상황을 고려하는 규칙 집합을 만드는 것은 현실적으로 불가
• 특히, 한국어의 생략과 자유로운 어순을 모두 표현하는 것은 어렵고
• 자연어 처리의 대상 중 하나인 인터넷 상의 비문을 포함하면 더욱 어렵다
의존 문법 - 복잡도 감소
구 구조 규칙(Phrase structure rule)
좌에서 우로 전이
첫 번째 규칙 = 문장(S)은 명사구와 동사구 순서로 구성된다.
• 실제 말뭉치에서 표현하는 정보량에서도 구 구조 문법과 의존 문법은 차이가 난다
• 예문: 경심이는 금년 나이 스물 다섯이다.
의존 문법 - 복잡도 감소
• 유혜원, “한국어 구문분석 방법론 연구, 복문 구조 분석을 중심으로,” 2009.
구 구조 문법 의존 문법
(S (NP_SBJ 경심이/NNP + 는/JX)
(S (NP_AJT 금년/NNG)
(S (NP_SBJ 나이/NNG)
(VNP (NP 스물/NR)
(VNP 다섯/NR + 이/VCP +
다/EF + ./SF)))))
1 5 경심/NNP+이/NP+는/JX
2 3 금년/NNG
3 4 나이/NNG
4 5 스물/NR
5 5 다섯/NR+이/VCP+다/EF+./SF
의존 문법 – 지배 의존 관계
• NLP/의존 파서, https://nnoco.tistory.com/category/NLP/의존 파서
• 지배소(Governor): 의미의 중심이 되는 요소
• 의존소(Dependent): 지배소가 갖는 의미를 보완해주는 요소
• 수식 관계에서 수식의 대상과 수식 내용 정도의 의미를
가지는 것으로 보인다
• 예문에 대한 의존 문법의 해석
• 2번 어절 '금년'은 '나이'를 수식한다
• '금년'은 의존소가 되고
• '나이'는 지배소가 된다
의존 문법
1 5 경심/NNP+이/NP+는/JX
2 3 금년/NNG
3 4 나이/NNG
4 5 스물/NR
5 5 다섯/NR+이/VCP+다/EF+./SF
한국어 구문 분석에서 사용하는 기본 규칙
• 1. 한국어는 지배소 후위 언어이다. 즉, 지배소는 피지배소보다 항상 뒤에 위치한다.
• 2. 교차 의존 구조는 없다.
• 3. 각 어절의 머리는 유일하다. (= 각 어절의 지배소는 하나이다.)
의존 구조 분석기 구현 과정
1. 말뭉치 선정
2. 의존 구조 학습
3. 의존 구조 분석기 구현
• 구현 과정은 아래 논문을 따라서 진행
오진영, "지배소 후위 언어를 위한 효율적 구문분석", 2013
1. 말뭉치 선정
• 주로 의존 구조 말뭉치 준비하는 과정이 3가지로 나뉜다.
• 세종 말뭉치를 수기로 변경
• 세종 말뭉치를 자동으로 변경
• UCorpus와 같은 의존 구조로 작성된 말뭉치를 사용
1. 말뭉치 선정 - Ucorpus
• 울산대학교 한국어처리 연구실에서 구축한 세종 말뭉치 수기 변환 말뭉치
http://nlplab.ulsan.ac.kr/doku.php?id=ucorpus
• 연구용은 무상, 연구 목적 이외에는 유상 기술 이전이 필요
2. 의존 구조 학습
• CRFs(Continuous Random Fields) 알고리즘을 사용하여 학습
• sklearn-crfsuite 패키지를 사용
• 다단계 구단위화 알고리즘 적용
• 학습 과정
1. Feature를 정의
2. 모델 학습: Feature를 학습, 이후 정확도 확인
2. 의존 구조 학습 - CRFs
• Continuous Random Fields, 조건부 무작위장
• Sequence Labeling 문제를 해결할 수 있음
2. 의존 구조 학습 – CRFs – Sequence Labeling 문제
Sequence Labeling 문제는
주어진 입력 유닛 열(Sequence)에서
각 유닛마다 할당되야 할 Label을 예측하는 문제로,
여러 언어 처리 문제들을 포함하는 문제 형태이다.
• Sequential Labeling with Deep Learning, https://sites.google.com/site/sighclt/haengsasogae/jayeon-eon-eocheoli-tyutolieol/2015tutorial/program/balpyo3-1
구문 태깅 2-1. Feature 정의 (remind)
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 갖가지/NNG
어절 H_POS T_POS t_POS h_POS n_POS n_surface Label
침실/NNG+과/JC NNG JC NNG 식당 NP_AJT
식당/NNG+,/SP NNG SP NNG 욕실 NP_AJT
욕실/NNG+에서/JKB NNG JKB VV 사용하 NP_AJT
사용/NNG+하/XSV+는/ETM NNG ETM XSV XSV NNG 갖가지 VP_MOD
갖가지/NNG NNG NNG (후략) (후략) NP_OBJ
2. 의존 구조 학습 – CRFs – Sequence Labeling 문제 - 예시
시퀀스 Features Label
침실과
{ "H_POS": "NNG",
"T_POS": "SP",
…
"n_surface": "욕실" }
NP_AJT
식당
{ "H_POS": "NNG",
"T_POS": "JKB",
…
"n_surface": "사용하" }
NP_AJT
욕실에서
{ "H_POS": "NNG",
"T_POS": "ETM",
…
"n_surface": "갖가지" }
NP_AJT
사용하는
{ "H_POS": "NNG",
"T_POS": "JC",
…
"n_surface": "직물" }
VP_MOD
갖가지
{ "H_POS": "NNG",
"T_POS": "JC",
…
"n_surface": (후략) }
NP_OBJ
window size = ±1
학습 대상
학습 포함 주변 데이터
CRFs
2. 의존 구조 학습 – CRFs – Sequence Labeling 문제 - 예시
시퀀스 Features Label
침실과
{ "H_POS": "NNG",
"T_POS": "SP",
…
"n_surface": "욕실" }
NP_AJT
식당
{ "H_POS": "NNG",
"T_POS": "JKB",
…
"n_surface": "사용하" }
NP_AJT
욕실에서
{ "H_POS": "NNG",
"T_POS": "ETM",
…
"n_surface": "갖가지" }
NP_AJT
사용하는
{ "H_POS": "NNG",
"T_POS": "JC",
…
"n_surface": "직물" }
VP_MOD
갖가지
{ "H_POS": "NNG",
"T_POS": "JC",
…
"n_surface": (후략) }
NP_OBJ
window size = ±1
CRFs
학습 대상
학습 포함 주변 데이터
2. 의존 구조 학습 – CRFs – Sequence Labeling 문제 - 예시
시퀀스 Features Label
침실과
{ "H_POS": "NNG",
"T_POS": "SP",
…
"n_surface": "욕실" }
NP_AJT
식당
{ "H_POS": "NNG",
"T_POS": "JKB",
…
"n_surface": "사용하" }
NP_AJT
욕실에서
{ "H_POS": "NNG",
"T_POS": "ETM",
…
"n_surface": "갖가지" }
NP_AJT
사용하는
{ "H_POS": "NNG",
"T_POS": "JC",
…
"n_surface": "직물" }
VP_MOD
갖가지
{ "H_POS": "NNG",
"T_POS": "JC",
…
"n_surface": (후략) }
NP_OBJ
window size = ±1
CRFs
학습 대상
학습 포함 주변 데이터
2. 의존 구조 학습 – CRF 적용
• 적절한 윈도우 사이즈가 존재하는가
• 첫 번째 어절의 지배소는 마지막 어절이 될 수도 있다.
• 문장에 따라 적절한 윈도우의 범위는 달라질 수 있으며
일괄적인 적용이 불가
경심이는 금년 나이 스물 다섯이다.
1 5 경심/NNP+이/NP+는/JX
2 3 금년/NNG
3 4 나이/NNG
4 5 스물/NR
5 5 다섯/NR+이/VCP+다/EF+./SF
매일 욕실에서 1시간 반 이상 보낸다는 그는
체조와 텔레비전 시청, 식사까지 할 수 있는
욕실이 나와야 한다고 주장할 정도이다.
1 6 매일/NNG
2 6 욕실/NNG+에서/JKB
3 4 1/SN+시간/NNG
4 5 반/NNG
5 6 이상/NNG+을/JKO
6 7 보내/VV+ㄴ다는/ETM
7 19 그/NP+는/JX
8 11 체조/NNG+와/JC
9 10 텔레비전/NNG
10 11 시청/NNG+,/SP
11 14 식사/NNG+까지/JX _
12 13 하/VV+ㄹ/ETM
13 14 수/NNG
14 15 있/VV+는/ETM
15 17 욕실/NNG+이/JKS
16 17 나오/VV+아야/EC
17 19 하/VX+ㄴ다고/EC
18 19 주장/NNG+하/XSV+ㄹ/ETM _ N+
19 19 정도/NNG+이/VCP+다/EF+./SF
짧은 문장
긴 문장
2. 의존 구조 학습 – 다단계 구단위화
• 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로,
한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다.
• 각 단계에서는 다음 어절이 지배소인지 확인한다.
• 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다.
삭제하면서 의존 관계를 만들어준다.
(Cascade Chunking)
2. 의존 구조 학습 – 다단계 구단위화 – 예시 – 초기 상태
어절 닭과 달걀의 모든 것이 한 자리에 모였다.
의존여부
• 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로,
한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다.
• 각 단계에서는 다음 어절이 지배소인지 확인한다.
• 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다.
삭제하면서 의존 관계를 만들어준다.
• 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
2. 의존 구조 학습 – 다단계 구단위화 – 예시 – 1단계
어절 닭과 달걀의 모든 것이 한 자리에 모였다.
의존여부 의존
• 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로,
한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다.
• 각 단계에서는 다음 어절이 지배소인지 확인한다.
• 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다.
삭제하면서 의존 관계를 만들어준다.
• 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
2. 의존 구조 학습 – 다단계 구단위화 – 예시 – 1단계
어절 닭과 달걀의 모든 것이 한 자리에 모였다.
의존여부 의존 -
• 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로,
한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다.
• 각 단계에서는 다음 어절이 지배소인지 확인한다.
• 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다.
삭제하면서 의존 관계를 만들어준다.
• 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
2. 의존 구조 학습 – 다단계 구단위화 – 예시 – 1단계
어절 닭과 달걀의 모든 것이 한 자리에 모였다.
의존여부 의존 - 의존
• 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로,
한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다.
• 각 단계에서는 다음 어절이 지배소인지 확인한다.
• 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다.
삭제하면서 의존 관계를 만들어준다.
• 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
2. 의존 구조 학습 – 다단계 구단위화 – 예시 – 1단계
어절 닭과 달걀의 모든 것이 한 자리에 모였다.
의존여부 의존 - 의존 - 의존 의존 -
• 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로,
한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다.
• 각 단계에서는 다음 어절이 지배소인지 확인한다.
• 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다.
삭제하면서 의존 관계를 만들어준다.
• 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
2. 의존 구조 학습 – 다단계 구단위화 – 예시 – 1단계
어절 닭과 달걀의 모든 것이 한 자리에 모였다.
의존여부 의존 - 의존 - 의존 의존 -
• 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로,
한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다.
• 각 단계에서는 다음 어절이 지배소인지 확인한다.
• 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다.
삭제하면서 의존 관계를 만들어준다.
• 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
앞의 어절이 현 어절의
의존소라서 대상이 아니다.
2. 의존 구조 학습 - 다단계 구단위화 – 예시 – 2단계
어절 닭과 달걀의 모든 것이 한 자리에 모였다.
의존여부 의존 - 의존 - 의존 의존 -
• 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로,
한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다.
• 각 단계에서는 다음 어절이 지배소인지 확인한다.
• 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다.
삭제하면서 의존 관계를 만들어준다.
• 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
삭제됨 삭제됨 삭제됨
2. 의존 구조 학습 - 다단계 구단위화 – 예시 – 2단계
어절 닭과 달걀의 모든 것이 한 자리에 모였다.
의존여부 의존 의존 의존 의존 의존 의존 -
• 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로,
한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다.
• 각 단계에서는 다음 어절이 지배소인지 확인한다.
• 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다.
삭제하면서 의존 관계를 만들어준다.
• 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
2. 의존 구조 학습 - 다단계 구단위화 – 예시 – 2단계
어절 닭과 달걀의 모든 것이 한 자리에 모였다.
의존여부 의존 의존 의존 의존 의존 의존 -
• 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로,
한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다.
• 각 단계에서는 다음 어절이 지배소인지 확인한다.
• 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다.
삭제하면서 의존 관계를 만들어준다.
• 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
2. 의존 구조 학습 - 다단계 구단위화 – 예시 – 3단계
어절 닭과 달걀의 모든 것이 한 자리에 모였다.
의존여부 의존 의존 의존 의존 의존 의존 -
• 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로,
한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다.
• 각 단계에서는 다음 어절이 지배소인지 확인한다.
• 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다.
삭제하면서 의존 관계를 만들어준다.
• 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
2. 의존 구조 학습 - 다단계 구단위화 – 예시 – 4단계
어절 닭과 달걀의 모든 것이 한 자리에 모였다.
의존여부 의존 의존 의존 의존 의존 의존 -
• 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로,
한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다.
• 각 단계에서는 다음 어절이 지배소인지 확인한다.
• 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다.
삭제하면서 의존 관계를 만들어준다.
• 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
2. 의존 구조 학습 - 다단계 구단위화 – 예시 – 종료
어절 닭과 달걀의 모든 것이 한 자리에 모였다.
의존여부 의존 의존 의존 의존 의존 의존 -
2. 의존 구조 학습 - 다단계 구단위화 – 학습 방법
• 학습을 위한 입력 데이터를 정확하게 생성하는 과정은 논문을 통해 확인하지 못함
• 단계별로 새롭게 검사하는 어절을 학습 데이터에 추가한다.
• 윈도우는 단계에 존재하는 현재 어절과 다음 어절로 한다.
2. 의존 구조 학습 - 다단계 구단위화 – 학습 방법
어절 닭과 달걀의 모든 것이 한 자리에 모였다.
1단계 의존여부 의존 - 의존 - 의존 의존 -
삭제여부 삭제 삭제 삭제
어절 달걀의 것이 자리에 모였다.
2단계 의존여부 의존 의존 의존 -
삭제여부 삭제
어절 것이 자리에 모였다.
3단계 의존여부 의존 의존 -
삭제여부 삭제
이후 단계 더 이상 새로 검사할 어절이 없음
해당 문장에서 학습할 (의존소, 지배소, 의존여부) 목록
1단계 (닭과, 달걀의, 의존), (달걀의, 모든, -), (모든, 것이, 의존), (것이, 한, -), (한, 자리에, 의존), (자리에, 모였다., 의존)
2단계 (달걀의, 것이, 의존), (것이, 자리에, 의존)
새로 검사하는 어절
이미 검사한 어절
2-1. 의존 구조 학습 – Feature 정의
• (의존소, 지배소) 검사대상마다 아래의 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와 같이 통합되는 경우에는 문자열을 통합하여 지정
H_PTAG 의존소 어절의 구문 태그
H_FTAG 의존소 어절의 기능 태그
n_PTAG 지배소 어절의 구문 태그
n_FTAG 지배소 어절의 기능 태그
2-1. 의존 구조 학습 – Feature 정의 예시
Features = {
"H_POS": "NNG", "T_POS": "JC"
"t_POS": None, "h_POS": None,
"n_POS": "NNG", "n_surface": "달걀",
"H_PTAG": "NP", "H_FTAG": "CNJ"
"n_PTAG": "NP", "n_FTAG": "MOD"
}
Label = "D"
형태소 분석 결과
구문 태깅 결과
어절 닭과 달걀의 모든 것이 한 자리에 모였다.
1단계 의존여부 의존 - 의존 - 의존 의존 -
삭제여부 삭제 삭제 삭제
다단계 구단위화
결과
Features = {
"H_POS": "NNG", "T_POS": "JKG"
"t_POS": None, "h_POS": None,
"n_POS": "MM", "n_surface": "모든",
"H_PTAG": "NP", "H_FTAG": "CNJ"
"n_PTAG": "DP", "n_FTAG": None
}
Label = "-"
2. 의존 구조 학습 – 학습 결과
2-2. 학습 결과
best_params {'c1': 2.2336, 'c2': 0.0662}
best CV score 0.9441
model size 1.19M
mean_train_score mean_test_score
count 50 50
mean 0.9498 0.9431
std 0.0004 0.0004
max 0.9503 0.9441
3. 의존 구문 분석기 구현
• MeCab와 연결
• MeCab와 세종 POS 태그 구조가 달라 호환을 위한 작업 진행
• MeCab의 형태소 분석 이후 구문 태깅이 이루어지도록 연결
• 구문 태거 연결
• 의존 구조 분석 모델 연결
• 시각화
3. 의존 구문 분석기 구현 - 시각화
• Text Annotation Tools
• TextAE, http://textae.pubannotation.org/
• 문장에 태그, 관계를 부착할 수 있도록 지원해준다.
3. 의존 구문 분석기 구현: 실행 예시
3. 의존 구문 분석기 구현: 실행 예시
3. 의존 구문 분석기 구현: 실행 예시
직접 실행
끝

More Related Content

What's hot

Fin bert paper review !
Fin bert paper review !Fin bert paper review !
Fin bert paper review !taeseon ryu
 
Aho-Corasick Algorithm(아호 코라식 알고리즘)
Aho-Corasick Algorithm(아호 코라식 알고리즘)Aho-Corasick Algorithm(아호 코라식 알고리즘)
Aho-Corasick Algorithm(아호 코라식 알고리즘)Hongjun Jang
 
[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템NAVER D2
 
딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향홍배 김
 
1시간만에 만드는 음성인식 인공지능 챗봇
1시간만에 만드는 음성인식 인공지능 챗봇1시간만에 만드는 음성인식 인공지능 챗봇
1시간만에 만드는 음성인식 인공지능 챗봇정명훈 Jerry Jeong
 
RoFormer: Enhanced Transformer with Rotary Position Embedding
RoFormer: Enhanced Transformer with Rotary Position EmbeddingRoFormer: Enhanced Transformer with Rotary Position Embedding
RoFormer: Enhanced Transformer with Rotary Position Embeddingtaeseon ryu
 
Natural Language Processing.pptx
Natural Language Processing.pptxNatural Language Processing.pptx
Natural Language Processing.pptxYongHeeHan10
 
파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차Taekyung Han
 
딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지deepseaswjh
 
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기CONNECT FOUNDATION
 
Open domain dialogue Chatbot(잡담봇 삽질기)
Open domain dialogue Chatbot(잡담봇 삽질기)Open domain dialogue Chatbot(잡담봇 삽질기)
Open domain dialogue Chatbot(잡담봇 삽질기)NAVER Engineering
 
쫄지말자딥러닝2 - CNN RNN 포함버전
쫄지말자딥러닝2 - CNN RNN 포함버전쫄지말자딥러닝2 - CNN RNN 포함버전
쫄지말자딥러닝2 - CNN RNN 포함버전Modulabs
 
[기초개념] Graph Convolutional Network (GCN)
[기초개념] Graph Convolutional Network (GCN)[기초개념] Graph Convolutional Network (GCN)
[기초개념] Graph Convolutional Network (GCN)Donghyeon Kim
 
Context2Vec 기반 단어 의미 중의성 해소, Word Sense Disambiguation
Context2Vec 기반 단어 의미 중의성 해소, Word Sense DisambiguationContext2Vec 기반 단어 의미 중의성 해소, Word Sense Disambiguation
Context2Vec 기반 단어 의미 중의성 해소, Word Sense Disambiguation찬희 이
 
[PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System [PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System Kwangseob Kim
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민종민 김
 
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)Seongyun Byeon
 
KorQuAD introduction
KorQuAD introductionKorQuAD introduction
KorQuAD introductionSeungyoungLim
 
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용Susang Kim
 

What's hot (20)

Fin bert paper review !
Fin bert paper review !Fin bert paper review !
Fin bert paper review !
 
Aho-Corasick Algorithm(아호 코라식 알고리즘)
Aho-Corasick Algorithm(아호 코라식 알고리즘)Aho-Corasick Algorithm(아호 코라식 알고리즘)
Aho-Corasick Algorithm(아호 코라식 알고리즘)
 
[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템
 
딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향
 
1시간만에 만드는 음성인식 인공지능 챗봇
1시간만에 만드는 음성인식 인공지능 챗봇1시간만에 만드는 음성인식 인공지능 챗봇
1시간만에 만드는 음성인식 인공지능 챗봇
 
RoFormer: Enhanced Transformer with Rotary Position Embedding
RoFormer: Enhanced Transformer with Rotary Position EmbeddingRoFormer: Enhanced Transformer with Rotary Position Embedding
RoFormer: Enhanced Transformer with Rotary Position Embedding
 
Natural Language Processing.pptx
Natural Language Processing.pptxNatural Language Processing.pptx
Natural Language Processing.pptx
 
KorQuAD v2.0 소개
KorQuAD v2.0 소개KorQuAD v2.0 소개
KorQuAD v2.0 소개
 
파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차파이썬을 활용한 챗봇 서비스 개발 3일차
파이썬을 활용한 챗봇 서비스 개발 3일차
 
딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지
 
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
 
Open domain dialogue Chatbot(잡담봇 삽질기)
Open domain dialogue Chatbot(잡담봇 삽질기)Open domain dialogue Chatbot(잡담봇 삽질기)
Open domain dialogue Chatbot(잡담봇 삽질기)
 
쫄지말자딥러닝2 - CNN RNN 포함버전
쫄지말자딥러닝2 - CNN RNN 포함버전쫄지말자딥러닝2 - CNN RNN 포함버전
쫄지말자딥러닝2 - CNN RNN 포함버전
 
[기초개념] Graph Convolutional Network (GCN)
[기초개념] Graph Convolutional Network (GCN)[기초개념] Graph Convolutional Network (GCN)
[기초개념] Graph Convolutional Network (GCN)
 
Context2Vec 기반 단어 의미 중의성 해소, Word Sense Disambiguation
Context2Vec 기반 단어 의미 중의성 해소, Word Sense DisambiguationContext2Vec 기반 단어 의미 중의성 해소, Word Sense Disambiguation
Context2Vec 기반 단어 의미 중의성 해소, Word Sense Disambiguation
 
[PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System [PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민
 
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
[MLOps KR 행사] MLOps 춘추 전국 시대 정리(210605)
 
KorQuAD introduction
KorQuAD introductionKorQuAD introduction
KorQuAD introduction
 
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
 

Similar to Dependency Parser, 의존 구조 분석기

[논문작성팁]형용사를 나열한 명사구에서 쉼표의 사용
[논문작성팁]형용사를 나열한 명사구에서 쉼표의 사용[논문작성팁]형용사를 나열한 명사구에서 쉼표의 사용
[논문작성팁]형용사를 나열한 명사구에서 쉼표의 사용에디티지(Editage Korea)
 
[study] Building Universal Dependency Treebanks in Korean
[study] Building Universal Dependency Treebanks in Korean[study] Building Universal Dependency Treebanks in Korean
[study] Building Universal Dependency Treebanks in KoreanGyuhyeon Nam
 
universal dependency relation
universal dependency relation universal dependency relation
universal dependency relation Gyuhyeon Nam
 
1910 tfkr3 warnikchow
1910 tfkr3 warnikchow1910 tfkr3 warnikchow
1910 tfkr3 warnikchowWarNik Chow
 
(Papers Review)CNN for sentence classification
(Papers Review)CNN for sentence classification(Papers Review)CNN for sentence classification
(Papers Review)CNN for sentence classificationMYEONGGYU LEE
 
유한상태변환기를 이용한 한국어_형태소_분석_이상호
유한상태변환기를 이용한 한국어_형태소_분석_이상호유한상태변환기를 이용한 한국어_형태소_분석_이상호
유한상태변환기를 이용한 한국어_형태소_분석_이상호상호 이
 
Convolutional neural networks for sentence classification
Convolutional neural networks for sentence classificationConvolutional neural networks for sentence classification
Convolutional neural networks for sentence classificationkeunbong kwak
 
[study] character aware neural language models
[study] character aware neural language models[study] character aware neural language models
[study] character aware neural language modelsGyuhyeon Nam
 

Similar to Dependency Parser, 의존 구조 분석기 (8)

[논문작성팁]형용사를 나열한 명사구에서 쉼표의 사용
[논문작성팁]형용사를 나열한 명사구에서 쉼표의 사용[논문작성팁]형용사를 나열한 명사구에서 쉼표의 사용
[논문작성팁]형용사를 나열한 명사구에서 쉼표의 사용
 
[study] Building Universal Dependency Treebanks in Korean
[study] Building Universal Dependency Treebanks in Korean[study] Building Universal Dependency Treebanks in Korean
[study] Building Universal Dependency Treebanks in Korean
 
universal dependency relation
universal dependency relation universal dependency relation
universal dependency relation
 
1910 tfkr3 warnikchow
1910 tfkr3 warnikchow1910 tfkr3 warnikchow
1910 tfkr3 warnikchow
 
(Papers Review)CNN for sentence classification
(Papers Review)CNN for sentence classification(Papers Review)CNN for sentence classification
(Papers Review)CNN for sentence classification
 
유한상태변환기를 이용한 한국어_형태소_분석_이상호
유한상태변환기를 이용한 한국어_형태소_분석_이상호유한상태변환기를 이용한 한국어_형태소_분석_이상호
유한상태변환기를 이용한 한국어_형태소_분석_이상호
 
Convolutional neural networks for sentence classification
Convolutional neural networks for sentence classificationConvolutional neural networks for sentence classification
Convolutional neural networks for sentence classification
 
[study] character aware neural language models
[study] character aware neural language models[study] character aware neural language models
[study] character aware neural language models
 

More from 찬희 이

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 찬희 이 (8)

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 환경구성 이찬희
 

Dependency Parser, 의존 구조 분석기

  • 1. Dependency Parser 구문 태깅부터 의존 구조 분석까지 이찬희 2019. 04. 04.
  • 2. 자연어 처리 과정 형태소 분석 Morpheme analysis 구문 분석 Syntax analysis 의미 분석 semantic analysis 화용 분석 Pragmatic analysis 형태소 단위의 분절 및 POS 태그 부착 구문 태그 부착 문장구조 파악 단어의 중의성 해소 정보 추출 (대명사가 가리키는 의미부터...)
  • 3. 구문 분석 • 어절 단위로 '구문 태그' 부착하고 '문장 구조' 파악 구(Phrase)를 기본 단위로 사용하며, 한국어 자연어 처리에서는 어절을 구로 하여, 문장 구조를 표현하고 있다. (형태소 단위로 문장 구조를 분석하기엔 문장 내 형태소가 많아 복잡도가 높아진다고 본 것 같음..) (그냥 통사론 이론을 바탕으로 제일 적합한 단위가 어절이어서 사용하는 것 같다)
  • 4. 구문 분석 일반적으로 일컫는 구문 분석은 문장 구조 파악의 의미가 더 강한 것 같다. 그리고 구문 태깅보다 더 어렵다. • 공공 인공지능 오픈 API·DATA 서비스 포탈, http://aiopen.etri.re.kr/demo_nlu.php
  • 5. 문장 구조를 위한 문법 문장 구조를 표현하기 위해서는 구조를 표현할 문법이 필요 "문법 모형은 문장 구조적 측면에서 계층적 구조가 강조되는 문법 모형과 계층적 관계를 최소한으로 하려는 문법 모형 두 가지로 크게 나누어 볼 수 있다." • 유혜원, “한국어 구문분석 방법론 연구, 복문 구조 분석을 중심으로,” 2009. (한국어 구문 분석 문법 모형)
  • 6. 계층적 구조가 강조 → 구 구조 문법 Phrase structure grammar 계층적 관계를 최소 → 의존 문법 Dependency grammar 문장 구조를 위한 문법 • 유혜원, “한국어 구문분석 방법론 연구, 복문 구조 분석을 중심으로,” 2009. (한국어 구문 분석 문법 모형)
  • 7. 문장 구조 (remind) • 구 구조 문법(Phrase structure grammar): 구를 구성하는 구조를 중심으로 • 의존 문법(Dependency grammar): 의존관계에 의해 구조를 정의 • 통사론, https://ko.wikipedia.org/wiki/통사론 • Dependency Grammar, http://taweb.aichi-u.ac.jp/tmgross/DG.html
  • 8. 문장 구조 (remind) • 안광모, 지배소 후보 집합을 이용한 한국어 의존 구문 분석 알고리즘 찾아본 대부분의 자료는 '의존 문법'을 통한 문장 구조 해석을 진행 "한국어와 같이 비교적 어순이 자유로운 언어에서는 주로 의존 구문 분석 방법이 연구되어 왔으며 ... (후략)" 문장 구조에 대한 자세한 내용은 다음에... 오늘 진행 중
  • 9. 의존 문법 • 유혜원, “한국어 구문분석 방법론 연구, 복문 구조 분석을 중심으로,” 2009. "의존 문법의 체계는 구문분석의 복잡도를 줄이고 효율적인 분석을 위해 제시된 문법 모형으로 문장 내의 성분들을 지배 의존 관계로 파악한 구문분석 모형이라고 할 수 있다."
  • 10. 의존 문법 • 다양한 표현방식이 존재하며, 한국어 자연어 처리 전산분야 자료에서는 오른쪽이 좀 더 선호되는 것 같다. • Wikipedia - Dependency Grammar, https://en.wikipedia.org/wiki/Dependency_grammar 트리 방식 문장 자체에 굽은 화살표로 표현하는 방식
  • 11. • 구 구조 문법은 언어에서 발생하는 어순을 규칙으로 정의하는 것부터 시작 • 언어학적인 가치는 높으나, 모든 상황을 고려하는 규칙 집합을 만드는 것은 현실적으로 불가 • 특히, 한국어의 생략과 자유로운 어순을 모두 표현하는 것은 어렵고 • 자연어 처리의 대상 중 하나인 인터넷 상의 비문을 포함하면 더욱 어렵다 의존 문법 - 복잡도 감소 구 구조 규칙(Phrase structure rule) 좌에서 우로 전이 첫 번째 규칙 = 문장(S)은 명사구와 동사구 순서로 구성된다.
  • 12. • 실제 말뭉치에서 표현하는 정보량에서도 구 구조 문법과 의존 문법은 차이가 난다 • 예문: 경심이는 금년 나이 스물 다섯이다. 의존 문법 - 복잡도 감소 • 유혜원, “한국어 구문분석 방법론 연구, 복문 구조 분석을 중심으로,” 2009. 구 구조 문법 의존 문법 (S (NP_SBJ 경심이/NNP + 는/JX) (S (NP_AJT 금년/NNG) (S (NP_SBJ 나이/NNG) (VNP (NP 스물/NR) (VNP 다섯/NR + 이/VCP + 다/EF + ./SF))))) 1 5 경심/NNP+이/NP+는/JX 2 3 금년/NNG 3 4 나이/NNG 4 5 스물/NR 5 5 다섯/NR+이/VCP+다/EF+./SF
  • 13. 의존 문법 – 지배 의존 관계 • NLP/의존 파서, https://nnoco.tistory.com/category/NLP/의존 파서 • 지배소(Governor): 의미의 중심이 되는 요소 • 의존소(Dependent): 지배소가 갖는 의미를 보완해주는 요소 • 수식 관계에서 수식의 대상과 수식 내용 정도의 의미를 가지는 것으로 보인다 • 예문에 대한 의존 문법의 해석 • 2번 어절 '금년'은 '나이'를 수식한다 • '금년'은 의존소가 되고 • '나이'는 지배소가 된다 의존 문법 1 5 경심/NNP+이/NP+는/JX 2 3 금년/NNG 3 4 나이/NNG 4 5 스물/NR 5 5 다섯/NR+이/VCP+다/EF+./SF
  • 14. 한국어 구문 분석에서 사용하는 기본 규칙 • 1. 한국어는 지배소 후위 언어이다. 즉, 지배소는 피지배소보다 항상 뒤에 위치한다. • 2. 교차 의존 구조는 없다. • 3. 각 어절의 머리는 유일하다. (= 각 어절의 지배소는 하나이다.)
  • 15. 의존 구조 분석기 구현 과정 1. 말뭉치 선정 2. 의존 구조 학습 3. 의존 구조 분석기 구현 • 구현 과정은 아래 논문을 따라서 진행 오진영, "지배소 후위 언어를 위한 효율적 구문분석", 2013
  • 16. 1. 말뭉치 선정 • 주로 의존 구조 말뭉치 준비하는 과정이 3가지로 나뉜다. • 세종 말뭉치를 수기로 변경 • 세종 말뭉치를 자동으로 변경 • UCorpus와 같은 의존 구조로 작성된 말뭉치를 사용
  • 17. 1. 말뭉치 선정 - Ucorpus • 울산대학교 한국어처리 연구실에서 구축한 세종 말뭉치 수기 변환 말뭉치 http://nlplab.ulsan.ac.kr/doku.php?id=ucorpus • 연구용은 무상, 연구 목적 이외에는 유상 기술 이전이 필요
  • 18. 2. 의존 구조 학습 • CRFs(Continuous Random Fields) 알고리즘을 사용하여 학습 • sklearn-crfsuite 패키지를 사용 • 다단계 구단위화 알고리즘 적용 • 학습 과정 1. Feature를 정의 2. 모델 학습: Feature를 학습, 이후 정확도 확인
  • 19. 2. 의존 구조 학습 - CRFs • Continuous Random Fields, 조건부 무작위장 • Sequence Labeling 문제를 해결할 수 있음
  • 20. 2. 의존 구조 학습 – CRFs – Sequence Labeling 문제 Sequence Labeling 문제는 주어진 입력 유닛 열(Sequence)에서 각 유닛마다 할당되야 할 Label을 예측하는 문제로, 여러 언어 처리 문제들을 포함하는 문제 형태이다. • Sequential Labeling with Deep Learning, https://sites.google.com/site/sighclt/haengsasogae/jayeon-eon-eocheoli-tyutolieol/2015tutorial/program/balpyo3-1
  • 21. 구문 태깅 2-1. Feature 정의 (remind) 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 갖가지/NNG 어절 H_POS T_POS t_POS h_POS n_POS n_surface Label 침실/NNG+과/JC NNG JC NNG 식당 NP_AJT 식당/NNG+,/SP NNG SP NNG 욕실 NP_AJT 욕실/NNG+에서/JKB NNG JKB VV 사용하 NP_AJT 사용/NNG+하/XSV+는/ETM NNG ETM XSV XSV NNG 갖가지 VP_MOD 갖가지/NNG NNG NNG (후략) (후략) NP_OBJ
  • 22. 2. 의존 구조 학습 – CRFs – Sequence Labeling 문제 - 예시 시퀀스 Features Label 침실과 { "H_POS": "NNG", "T_POS": "SP", … "n_surface": "욕실" } NP_AJT 식당 { "H_POS": "NNG", "T_POS": "JKB", … "n_surface": "사용하" } NP_AJT 욕실에서 { "H_POS": "NNG", "T_POS": "ETM", … "n_surface": "갖가지" } NP_AJT 사용하는 { "H_POS": "NNG", "T_POS": "JC", … "n_surface": "직물" } VP_MOD 갖가지 { "H_POS": "NNG", "T_POS": "JC", … "n_surface": (후략) } NP_OBJ window size = ±1 학습 대상 학습 포함 주변 데이터 CRFs
  • 23. 2. 의존 구조 학습 – CRFs – Sequence Labeling 문제 - 예시 시퀀스 Features Label 침실과 { "H_POS": "NNG", "T_POS": "SP", … "n_surface": "욕실" } NP_AJT 식당 { "H_POS": "NNG", "T_POS": "JKB", … "n_surface": "사용하" } NP_AJT 욕실에서 { "H_POS": "NNG", "T_POS": "ETM", … "n_surface": "갖가지" } NP_AJT 사용하는 { "H_POS": "NNG", "T_POS": "JC", … "n_surface": "직물" } VP_MOD 갖가지 { "H_POS": "NNG", "T_POS": "JC", … "n_surface": (후략) } NP_OBJ window size = ±1 CRFs 학습 대상 학습 포함 주변 데이터
  • 24. 2. 의존 구조 학습 – CRFs – Sequence Labeling 문제 - 예시 시퀀스 Features Label 침실과 { "H_POS": "NNG", "T_POS": "SP", … "n_surface": "욕실" } NP_AJT 식당 { "H_POS": "NNG", "T_POS": "JKB", … "n_surface": "사용하" } NP_AJT 욕실에서 { "H_POS": "NNG", "T_POS": "ETM", … "n_surface": "갖가지" } NP_AJT 사용하는 { "H_POS": "NNG", "T_POS": "JC", … "n_surface": "직물" } VP_MOD 갖가지 { "H_POS": "NNG", "T_POS": "JC", … "n_surface": (후략) } NP_OBJ window size = ±1 CRFs 학습 대상 학습 포함 주변 데이터
  • 25. 2. 의존 구조 학습 – CRF 적용 • 적절한 윈도우 사이즈가 존재하는가 • 첫 번째 어절의 지배소는 마지막 어절이 될 수도 있다. • 문장에 따라 적절한 윈도우의 범위는 달라질 수 있으며 일괄적인 적용이 불가 경심이는 금년 나이 스물 다섯이다. 1 5 경심/NNP+이/NP+는/JX 2 3 금년/NNG 3 4 나이/NNG 4 5 스물/NR 5 5 다섯/NR+이/VCP+다/EF+./SF 매일 욕실에서 1시간 반 이상 보낸다는 그는 체조와 텔레비전 시청, 식사까지 할 수 있는 욕실이 나와야 한다고 주장할 정도이다. 1 6 매일/NNG 2 6 욕실/NNG+에서/JKB 3 4 1/SN+시간/NNG 4 5 반/NNG 5 6 이상/NNG+을/JKO 6 7 보내/VV+ㄴ다는/ETM 7 19 그/NP+는/JX 8 11 체조/NNG+와/JC 9 10 텔레비전/NNG 10 11 시청/NNG+,/SP 11 14 식사/NNG+까지/JX _ 12 13 하/VV+ㄹ/ETM 13 14 수/NNG 14 15 있/VV+는/ETM 15 17 욕실/NNG+이/JKS 16 17 나오/VV+아야/EC 17 19 하/VX+ㄴ다고/EC 18 19 주장/NNG+하/XSV+ㄹ/ETM _ N+ 19 19 정도/NNG+이/VCP+다/EF+./SF 짧은 문장 긴 문장
  • 26. 2. 의존 구조 학습 – 다단계 구단위화 • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. (Cascade Chunking)
  • 27. 2. 의존 구조 학습 – 다단계 구단위화 – 예시 – 초기 상태 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
  • 28. 2. 의존 구조 학습 – 다단계 구단위화 – 예시 – 1단계 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
  • 29. 2. 의존 구조 학습 – 다단계 구단위화 – 예시 – 1단계 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 - • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
  • 30. 2. 의존 구조 학습 – 다단계 구단위화 – 예시 – 1단계 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 - 의존 • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
  • 31. 2. 의존 구조 학습 – 다단계 구단위화 – 예시 – 1단계 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 - 의존 - 의존 의존 - • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
  • 32. 2. 의존 구조 학습 – 다단계 구단위화 – 예시 – 1단계 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 - 의존 - 의존 의존 - • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석" 앞의 어절이 현 어절의 의존소라서 대상이 아니다.
  • 33. 2. 의존 구조 학습 - 다단계 구단위화 – 예시 – 2단계 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 - 의존 - 의존 의존 - • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석" 삭제됨 삭제됨 삭제됨
  • 34. 2. 의존 구조 학습 - 다단계 구단위화 – 예시 – 2단계 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 의존 의존 의존 의존 의존 - • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
  • 35. 2. 의존 구조 학습 - 다단계 구단위화 – 예시 – 2단계 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 의존 의존 의존 의존 의존 - • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
  • 36. 2. 의존 구조 학습 - 다단계 구단위화 – 예시 – 3단계 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 의존 의존 의존 의존 의존 - • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
  • 37. 2. 의존 구조 학습 - 다단계 구단위화 – 예시 – 4단계 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 의존 의존 의존 의존 의존 - • 의존 구조 분석 문제를 Sequence Labeling 문제로 변환하는 방법으로, 한 문장의 의존 구조 분석을 위해 처리 단계를 나눈다. • 각 단계에서는 다음 어절이 지배소인지 확인한다. • 다음 어절이 지배소이며, 앞의 어절이 의존소가 아닌 어절에 대해 삭제하고 다음 단계로 넘어간다. 삭제하면서 의존 관계를 만들어준다. • 오진영, "지배소 후위 언어를 위한 효율적 구문 분석"
  • 38. 2. 의존 구조 학습 - 다단계 구단위화 – 예시 – 종료 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 의존여부 의존 의존 의존 의존 의존 의존 -
  • 39. 2. 의존 구조 학습 - 다단계 구단위화 – 학습 방법 • 학습을 위한 입력 데이터를 정확하게 생성하는 과정은 논문을 통해 확인하지 못함 • 단계별로 새롭게 검사하는 어절을 학습 데이터에 추가한다. • 윈도우는 단계에 존재하는 현재 어절과 다음 어절로 한다.
  • 40. 2. 의존 구조 학습 - 다단계 구단위화 – 학습 방법 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 1단계 의존여부 의존 - 의존 - 의존 의존 - 삭제여부 삭제 삭제 삭제 어절 달걀의 것이 자리에 모였다. 2단계 의존여부 의존 의존 의존 - 삭제여부 삭제 어절 것이 자리에 모였다. 3단계 의존여부 의존 의존 - 삭제여부 삭제 이후 단계 더 이상 새로 검사할 어절이 없음 해당 문장에서 학습할 (의존소, 지배소, 의존여부) 목록 1단계 (닭과, 달걀의, 의존), (달걀의, 모든, -), (모든, 것이, 의존), (것이, 한, -), (한, 자리에, 의존), (자리에, 모였다., 의존) 2단계 (달걀의, 것이, 의존), (것이, 자리에, 의존) 새로 검사하는 어절 이미 검사한 어절
  • 41. 2-1. 의존 구조 학습 – Feature 정의 • (의존소, 지배소) 검사대상마다 아래의 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와 같이 통합되는 경우에는 문자열을 통합하여 지정 H_PTAG 의존소 어절의 구문 태그 H_FTAG 의존소 어절의 기능 태그 n_PTAG 지배소 어절의 구문 태그 n_FTAG 지배소 어절의 기능 태그
  • 42. 2-1. 의존 구조 학습 – Feature 정의 예시 Features = { "H_POS": "NNG", "T_POS": "JC" "t_POS": None, "h_POS": None, "n_POS": "NNG", "n_surface": "달걀", "H_PTAG": "NP", "H_FTAG": "CNJ" "n_PTAG": "NP", "n_FTAG": "MOD" } Label = "D" 형태소 분석 결과 구문 태깅 결과 어절 닭과 달걀의 모든 것이 한 자리에 모였다. 1단계 의존여부 의존 - 의존 - 의존 의존 - 삭제여부 삭제 삭제 삭제 다단계 구단위화 결과 Features = { "H_POS": "NNG", "T_POS": "JKG" "t_POS": None, "h_POS": None, "n_POS": "MM", "n_surface": "모든", "H_PTAG": "NP", "H_FTAG": "CNJ" "n_PTAG": "DP", "n_FTAG": None } Label = "-"
  • 43. 2. 의존 구조 학습 – 학습 결과
  • 44. 2-2. 학습 결과 best_params {'c1': 2.2336, 'c2': 0.0662} best CV score 0.9441 model size 1.19M mean_train_score mean_test_score count 50 50 mean 0.9498 0.9431 std 0.0004 0.0004 max 0.9503 0.9441
  • 45. 3. 의존 구문 분석기 구현 • MeCab와 연결 • MeCab와 세종 POS 태그 구조가 달라 호환을 위한 작업 진행 • MeCab의 형태소 분석 이후 구문 태깅이 이루어지도록 연결 • 구문 태거 연결 • 의존 구조 분석 모델 연결 • 시각화
  • 46. 3. 의존 구문 분석기 구현 - 시각화 • Text Annotation Tools • TextAE, http://textae.pubannotation.org/ • 문장에 태그, 관계를 부착할 수 있도록 지원해준다.
  • 47. 3. 의존 구문 분석기 구현: 실행 예시
  • 48. 3. 의존 구문 분석기 구현: 실행 예시
  • 49. 3. 의존 구문 분석기 구현: 실행 예시 직접 실행
  • 50.